1
Fork 0
Commit Graph

289 Commits

Author SHA1 Message Date
viktorstrate f8cd804c3d
Improve database compatibility
- Make MediaType case insensitive when saved to database
- Null check exif migrations, this might solve #300
2021-04-13 21:39:07 +02:00
viktorstrate 97a8f3726d
Convert many pages to Typescript 2021-04-13 19:57:33 +02:00
viktorstrate 264ee54e7f
Start on typescript transition 2021-04-12 00:14:48 +02:00
viktorstrate b6a85d0966
Finish localization
- Add user preferences section to settings
- Make settings page available for all users
- Move log out button to settings page
- Make it possible for each user to choose their desired language
2021-04-11 22:31:42 +02:00
viktorstrate 8ec2a7789b
Fix sidecar hash bug
This closes #276
2021-04-03 22:52:53 +02:00
Kjeldgaard f946500eaa Use barasher/go-exiftool
Use barasher/go-exiftool again.
Exposure is not saved as float and not a string.

Signed-off-by: Kjeldgaard <Kjeldgaard@users.noreply.github.com>
2021-03-31 23:35:25 +02:00
Viktor Strate Kløvedal 454b2dbadd
Merge branch 'master' into 244_exiftool 2021-03-29 12:10:02 +02:00
Kjeldgaard 1193222f92 Update external exif parser method
Exiftool meta data parsed as intergers and not strings. Keep internal
exif parsing functionality.

Signed-off-by: Kjeldgaard <Kjeldgaard@users.noreply.github.com>
2021-03-28 23:52:51 +02:00
Kjeldgaard 7b5305579b Extract metadata as integers
Extract all metada as integers fomr exiftool.

Signed-off-by: Kjeldgaard <Kjeldgaard@users.noreply.github.com>
2021-03-23 21:36:03 +01:00
viktorstrate b590413e76
Fix share media not working with postgres
This closes #265
2021-03-23 14:04:44 +01:00
Kjeldgaard 1f9f6ebf9a Use exiftool for parsing exif data
Use exiftool to parse exif metadata.

Signed-off-by: Kjeldgaard <Kjeldgaard@users.noreply.github.com>
2021-03-20 00:26:05 +01:00
viktorstrate a14b12b8d4
Fix bug where DetectFaces would be called with the wrong media.
This happend because the go routine did not capture the media variable,
and so the it would change before the go routine could start
and call the DetectFaces function.
2021-03-16 22:27:27 +01:00
viktorstrate 3ae92086cd
Pass database as argument to individual face_detector functions
This allows the face detector to use transactions,
such that faces can be detected on media that has not
been fully commited yet.

This solves #214
2021-03-16 18:26:51 +01:00
viktorstrate ba16fc1caa
Fix postgres errors + fix search results without thumbnails
This closes #241
2021-03-12 14:26:51 +01:00
viktorstrate 3d9ae530af
Load shared albums recursively
This solves #143 and #229
2021-03-03 15:55:55 +01:00
viktorstrate 2c98827db5
Make photoview work without providing the PHOTOVIEW_PUBLIC_ENDPOINT environment variable 2021-03-01 22:03:57 +01:00
viktorstrate 26996b45e5
Reload faces if albums or media is deleted 2021-02-27 16:39:04 +01:00
viktorstrate d4552c7724
Fix sql compatiability bug 2021-02-26 21:53:14 +01:00
viktorstrate 14c97d49c1
Fix sql compatiability bug 2021-02-26 21:51:00 +01:00
viktorstrate 7bdf02b726
Fix bug where one user would load another users image faces 2021-02-26 21:49:01 +01:00
viktorstrate 91d94ecc82
Fix bug related to faces feature 2021-02-26 21:30:09 +01:00
viktorstrate 51123ed8b4
Order people by number of photos of them 2021-02-26 20:19:20 +01:00
viktorstrate 8290d51aae
Add pagination for people 2021-02-25 20:39:24 +01:00
viktorstrate 7fab8287a2
Add API pagination for faces 2021-02-25 18:48:59 +01:00
viktorstrate eaad404f55
Fix new Docker runtime errors 2021-02-22 21:14:15 +01:00
viktorstrate 3eb3435f08
Add DetachImageFaces resolver 2021-02-22 18:14:31 +01:00
viktorstrate 20251dedd6
Add UI to move faces between face groups 2021-02-20 22:43:07 +01:00
viktorstrate a3e5346501
Properly configure face gallery 2021-02-20 14:45:43 +01:00
viktorstrate 5368b4bae0
Various improvements to faces UI 2021-02-19 23:30:43 +01:00
viktorstrate bdd2318afc
Implement recognizeUnlabeledFaces 2021-02-19 19:24:31 +01:00
viktorstrate 00fceea4db
Work on face merge ui 2021-02-19 17:49:41 +01:00
viktorstrate 6b48ac9a16
Add schemas for face related mutations 2021-02-17 13:50:32 +01:00
viktorstrate de46f89f5d
Show face circles in sidebar 2021-02-16 17:13:08 +01:00
viktorstrate c3eda0feab
Start on UI for faces 2021-02-16 12:41:34 +01:00
viktorstrate 67b812ed21
Add graphql resolver for faces 2021-02-16 12:01:10 +01:00
viktorstrate e4df1fb706
Save face rectangles to database 2021-02-16 11:27:28 +01:00
viktorstrate abb80ae425
Start on face detection 2021-02-15 17:35:28 +01:00
viktorstrate 529444561b
Fix timeline date ordering 2021-02-14 11:40:13 +01:00
viktorstrate dfc89123f6
Fix bug where an unauthorized request could crash the server 2021-02-14 11:19:29 +01:00
viktorstrate 7c603cb4df
Fix various Postgres specific errors 2021-02-14 11:04:38 +01:00
viktorstrate 1ba45dbe09
Fix SQL errors for Timeline view,
when using Postgres or Sqlite. Closes #194
2021-02-14 10:11:10 +01:00
viktorstrate 926aa3de3d
Cleanup graphql schema, and general refactoring
- Separate graphql `filter` into `paginate` and `order`
- Remove GalleryGroups, replaced by TimelineGallery
- Fix Apollo cache such that sorting works again
2021-02-13 15:08:05 +01:00
viktorstrate a9edb148f1
Start on infinite scroll pagination 2021-02-12 17:44:32 +01:00
Viktor Strate Kløvedal ce3090394b
Add dataloaders to combine database queries (#190)
See also https://gqlgen.com/reference/dataloaders/
2021-02-07 22:17:33 +01:00
viktorstrate 54a83a4dc6
Make thumbnails optional
to prevent app from crashing when in the middle of scanning
2021-02-07 18:13:08 +01:00
viktorstrate 4fdb9357ea
Add favorites filter for timeline 2021-02-07 17:13:27 +01:00
viktorstrate 214c4e8be4
Fix panic when scanning 2021-02-04 22:06:49 +01:00
viktorstrate ddd2cad1a3
Add query resolver for timeline view 2021-02-04 19:02:51 +01:00
András Maróy be83849bee Implement postgres support 2021-01-31 17:07:29 +01:00
stz184 f723bda7c5 Fixes photoview/issues#168
- Migrated mediaGeoJson resolver to GORM
- Fixed issue loading media list in MediaList() function
- Fixed typo in the column "gps_lonitude" (renamed to "gps_longitude")
2021-01-29 01:23:40 +02:00
viktorstrate fbebb13d28
Don't transcode web compatible video formats.
This relates to the following issues #131 #169 #173
2021-01-27 18:00:37 +01:00
viktorstrate a4f5d26197
Fix search 2021-01-26 14:34:28 +01:00
viktorstrate 2c6701b4b3
Fix filtering favorites 2021-01-26 14:27:43 +01:00
viktorstrate 2d54847fed
Refactor DeleteUser resolver
- Use tx inside transaction
- Use .Clear() to delete all albums at once,
to prevent unnecessary database hits.
2021-01-24 17:25:43 +01:00
stz184 b176694d2b
* Fixes photoview/photoview#168
Fixed issue deleting existing users.
2021-01-24 17:20:31 +01:00
viktorstrate c88b8ed873
fix bug regarding thumbnail urls 2021-01-22 22:36:58 +01:00
viktorstrate 5e137392e1
avoid unnecessary sql queries 2021-01-22 09:35:54 +01:00
viktorstrate 2c230d917a
Further gorm attributes cleanup 2021-01-19 18:35:19 +01:00
viktorstrate fc515aa375
Cleanup gorm model attributes + add indexes 2021-01-19 17:31:37 +01:00
viktorstrate de35a06014
Add db resolver for media.exif 2021-01-19 16:46:15 +01:00
viktorstrate 107da91700
Refactor handling of environment variables 2021-01-17 16:50:48 +01:00
viktorstrate 50d0aa0efb
Disable multithreaded scanners for sqlite
as it's not reliable
2021-01-17 13:08:44 +01:00
viktorstrate fcdb5b4e7b
Work on sqlite support 2021-01-17 12:45:23 +01:00
viktorstrate a1a14286d6
Properly clean up when a user <-> album relation is deleted 2021-01-06 17:28:06 +01:00
viktorstrate 59048c8416
Fix various small errors regarding database change
- Fix media sidebar
- Fix Albums page
- Fix media and album shares
2021-01-02 23:07:44 +01:00
viktorstrate d78cef300a
Finish add/remove root paths 2020-12-31 00:37:11 +01:00
viktorstrate c198e68daf
Hook up UI to add and remove multiple root paths for each user 2020-12-30 18:36:26 +01:00
viktorstrate 96546f6556
Add resolvers for user albums and root_albums 2020-12-27 20:07:54 +01:00
viktorstrate aeb05bca49
get initial scanner up and running 2020-12-22 01:14:43 +01:00
viktorstrate 732ccd05ab
restructure user <-> albums relations in database 2020-12-20 17:10:00 +01:00
viktorstrate d815472458
Simplify search query a little 2020-12-19 09:45:43 +01:00
stz184 e5cb91532a implicitly join on the Album table 2020-12-19 01:07:43 +02:00
stz184 3ce4ab02cc Migrated the search to gorm 2020-12-19 00:50:29 +02:00
viktorstrate b38d7ab29a
Fix periodic scanner
and small bug related to user resolver
2020-12-17 23:21:51 +01:00
viktorstrate 907894dda3
Merge branch 'master' into v2.0.0 2020-12-17 23:18:00 +01:00
viktorstrate 4cd822f068
Update gomod to reflect repo transfer 2020-12-17 22:51:43 +01:00
viktorstrate 2903670255
Migrate album and media sharing 2020-12-17 22:29:24 +01:00
viktorstrate 092cbdb872
Migrate FormatSQL 2020-12-17 21:32:13 +01:00
viktorstrate 4f370deab9
Merge remote-tracking branch 'origin/master' into v2.0.0 2020-12-10 12:30:10 +01:00
Vladimir Ivanov 6adc79001c
Photo duplication detection (#148)
* Fixes viktorstrate/photoview#8
- Added new property CounterpartPath to Media struct to hold the path to the counterpart JPEG file (if any)
- Added new MediaType method isBasicSupportedisBasicTypeSupported()
- Added new function isFileExists() to minimize the code duplication

* Fixes viktorstrate/photoview#8
- Chaned CounterpartPath definition from string to *string
- Added new helper method FileExtensions()
- Simplified the logic inside scanForRawCounterpartFile() and scanForCompressedCounterpartFile() functions, reducing the code duplication

* Fixes viktorstrate/photoview#8
- Added debug to fileExists() function

* Cleanup fileExists logging

Co-authored-by: viktorstrate <viktorstrate@gmail.com>
2020-12-09 11:40:37 +01:00
viktorstrate f0d580116b
Improve album and media resolvers 2020-12-08 16:24:08 +01:00
viktorstrate b13873f48d
Fix error that caused infinite CPU loop 2020-12-06 16:54:19 +01:00
viktorstrate 98f13d76e6
Replace database, work on scanning 2020-11-30 21:29:49 +01:00
viktorstrate 364521958b
Fix site_info, replace ID type in graphql queries 2020-11-30 16:42:13 +01:00
viktorstrate 31da5e1c07
Replace database, initial setup now works 2020-11-28 21:49:33 +01:00
viktorstrate e42ac2436b
Replace database, resolve all build-time errors 2020-11-28 21:29:31 +01:00
viktorstrate d3ebecc3b5
Replace database, mostly user related 2020-11-28 17:31:19 +01:00
viktorstrate 22e328b94b
Replace database, mostly share token 2020-11-27 16:02:10 +01:00
viktorstrate 2b966aa672
Replace database, mostly media and video 2020-11-26 20:48:04 +01:00
viktorstrate 177ae91500 Replace database, mostly video 2020-11-25 23:06:47 +01:00
viktorstrate cc5d323b2a Replace database, mostly process photo 2020-11-24 11:46:49 +01:00
viktorstrate 2e9aa29258 Replace database, mostly media related 2020-11-23 20:43:00 +01:00
viktorstrate 3c23f82330 Replace database, mostly album related 2020-11-23 19:59:01 +01:00
viktorstrate 27b2f95a7b Start on migrating database integration to gorm 2020-11-23 19:39:44 +01:00
sean borg 11d67c9ae9 Add sidecar path & hash to DB 2020-11-21 11:54:01 +00:00
viktorstrate 74581ee090 Cleanup media routes and media_name generation 2020-10-30 17:14:09 +01:00
stz184 53b323640f Fixes viktorstrate/photoview#71
In order to prevent SQL injections and , reveal information about the database tables avoid passing MySQL functions as GQL sorting parameters, I refactored the FormatSQL() function.
Additionally, the old approach with using regex to filter the orderBy parameter was not effective and prevented using column.table annotations.
2020-10-13 18:27:28 +03:00
stz184 f14bdd6b3f Fixes viktorstrate/photoview#71
Regex changed in order to actually allow ordering by columns annotated as table.column
2020-10-11 18:17:49 +03:00
viktorstrate b5e640c1bd Add graphql query for getting media from an array of ids
- Add keyboard navigation when presenting images in map view
2020-09-27 20:52:09 +02:00
viktorstrate db64d3eb1b Merge branch 'master' into geographic-map-page 2020-09-27 20:08:43 +02:00
Viktor Strate Kløvedal a0ee666616
Merge pull request #76 from stz184/favorites-checkobox-on-photos-and-album-page-viktorstrate/photoview#6
Fixes viktorstrate/photoview#6
2020-09-27 18:34:46 +02:00
viktorstrate 0a314b8e1d Add geojson graphql endpoint, work on mapbox 2020-09-27 00:46:01 +02:00
viktorstrate b133a1846c Fix bug with max worker jobs
Fix bug where it was possible to set max scanner worker jobs to 0,
resulting in the scanner not processing any jobs.
2020-09-25 19:21:03 +02:00
viktorstrate bbff25973e Fix bug where max_concurrent_tasks for...
scanner queue would be initialized to 0.
2020-09-24 17:52:53 +02:00
viktorstrate 44a00c7415 Move setup of executable workers to function
- Fix startup crash if no site_info row was found
2020-09-23 14:34:26 +02:00
viktorstrate 9861788ce7 Update gqlgen to v0.13.0 and regenerate 2020-09-22 09:46:35 +02:00
viktorstrate 9c9807ecc9 Add admin setting to change max concurrent workers 2020-09-21 21:32:30 +02:00
viktorstrate 05380354e3 Setup periodic scan background runner 2020-09-21 12:34:56 +02:00
viktorstrate 167ff4b8c4 Update periodic scanner value from UI 2020-09-21 11:50:39 +02:00
viktorstrate 679dc70340 Prepare for periodic scan intervals
Add setting to database, and to graphql api
2020-09-20 22:19:25 +02:00
stz184 75e43aae80 Merge branch 'master' of github.com:viktorstrate/photoview into favorites-checkobox-on-photos-and-album-page-viktorstrate/photoview#6 2020-09-07 13:08:25 +03:00
stz184 d7e6ab9cf3 Fixes viktorstrate/photoview#6
- Added favorites toggle on both Album and Photos page
- When the favorites are viewed, the URL changes
- Removed unused variable activeImage
- Added match.params propTypes to AlbumPage component
2020-09-07 13:04:14 +03:00
viktorstrate e59ff9cbde Fix NewMediaFromRows 2020-08-15 11:59:44 +02:00
viktorstrate 78b415871d Add date information to media
This closes #61
2020-08-12 13:04:41 +02:00
viktorstrate 020321959d Show file size for media downloads
This closes #63
2020-08-11 22:34:42 +02:00
viktorstrate 849f2f25bf Add fileSize to media_url database entries 2020-08-11 22:18:15 +02:00
viktorstrate b52595fe46 Save gps coordinates from exif
This closes #62
2020-08-11 14:46:23 +02:00
viktorstrate 82b18f0e9b Cleanup + add video format 2020-07-13 18:01:31 +02:00
viktorstrate f669812efb Use cookies for authentication instead of header
This replaces the current implementation
where a bearer header holds the auth-token.
Now the same token is being sent using a cookie instead.
This greatly simplifies fetching resources (images and video),
since the header is sent along implicitly with each request.
2020-07-12 18:52:48 +02:00
viktorstrate 0e9d37ca77 Add video metadata 2020-07-12 14:17:49 +02:00
viktorstrate b34115cab0 Start on video integration with web ui 2020-07-11 16:42:27 +02:00
viktorstrate f537b1d608 Add video route (still unprotected) 2020-07-11 15:57:58 +02:00
viktorstrate 990a592fcc Expose media_type to graphql
- Make video thumbnail accessible from graphql
2020-07-11 14:21:10 +02:00
viktorstrate 9e5480188b add media_type column to media table in database 2020-07-11 14:05:06 +02:00
viktorstrate 0eb0319fa8 Generate video thumbnails 2020-07-11 13:39:11 +02:00
viktorstrate b510e14ecd Rename resolvers/photo.go to media.go 2020-07-10 18:52:18 +02:00
viktorstrate cacfb5edde Fix share pages 2020-07-10 18:35:37 +02:00
viktorstrate df80802cab Huge refactor: rename photo to media
To prepare for video support

Migrate database rename tables and columns:
- photo to media
- photo_url to media_url
- photo_exif to media_exif

- Update api accordingly
2020-07-10 14:26:19 +02:00
viktorstrate 3564866f41 Start on video processing 2020-07-10 12:58:11 +02:00
stz184 e70da6bb26 Merge remote-tracking branch 'upstream/master' into use-hash-instead-of-full-path-to-avoid-key-length-maximum 2020-06-24 13:42:43 +03:00
stz184 f88fa33e5f InnoDB has a maximum index length of 767 bytes for tables that use COMPACT or REDUNDANT row format, so for utf8mb3 or utf8mb4 columns, you can index a maximum of 255 or 191 characters, respectively.
That's why I created a new column storing a MD5 hash of the path and made it unique. The MD5 hash has only 32 characters and can be generated natively in MySQL and MariaDB. It helps us to avoid maximum key length and in the same time enforce unique photo and album paths.

- Added path_hash column to photo and album tables
- Added down migration file for 005_utf8_migration (just for consistency)
- Added PathHash field to Album and Photo struct
- album_scanner.go and photo_scanner.goo perform checks by MD5 hash now
2020-06-24 11:43:20 +03:00
viktorstrate 11c3a92373 Reintregrate notifications with scanner 2020-06-23 15:13:07 +02:00
viktorstrate 95f4df4b7d Start to integrate new scanner system with api 2020-06-23 00:40:47 +02:00
viktorstrate a22d002146 Major rework of scanner 2020-06-22 23:52:41 +02:00
viktorstrate 5d1c2f7134 Implement favorite resolver 2020-06-19 15:34:52 +02:00
viktorstrate b289b25e34 Start on photo favorite 2020-06-17 18:00:58 +02:00
viktorstrate fef27c5640 Add login page for protected shares 2020-06-14 20:56:48 +02:00
viktorstrate 79be996985 Detect if share token is password protected 2020-06-14 18:28:12 +02:00
viktorstrate f6f6eb8bfa Prepare back-end for token password 2020-06-14 18:02:46 +02:00
viktorstrate bbb6e2eca2 Add set password from share dropdown in sidebar 2020-06-14 15:07:07 +02:00
viktorstrate b254f3abaa Implement ScanAll resolver 2020-04-15 11:21:16 +02:00
viktorstrate b4676af3c1 Rewrite environment variable configurations 2020-04-06 22:16:25 +02:00
viktorstrate 48520a7d2d Further work on single docker container
- Add proper .dockerignore
- Fix photo prefix
- Print public endpoint when server starts
- Discard API_LISTEN_PORT
2020-04-05 18:54:13 +02:00
viktorstrate 7b3f016a0f Add replace debounce with throttle
Update dependencies
2020-03-12 13:26:11 +01:00
viktorstrate 4e5b5624de Add paths for albums to the web ui
Only fetch album paths by authorized user
2020-03-07 17:07:01 +01:00
viktorstrate fc4639a293 Add album path resolver 2020-03-07 16:19:27 +01:00
viktorstrate a5fc15af45 Fix security bug regarding search
...that let users search for albums and photos made by other users
2020-03-05 20:46:50 +01:00
viktorstrate ec7a7adf43 Different small improvements to search
- Make photos link to its album
- Implement Photo -> Album resolver
- Highlight query in search
- Hide search bar when not logged in
2020-03-05 20:34:30 +01:00
viktorstrate c30f5a833a Add search resolver to api 2020-03-05 11:53:42 +01:00
viktorstrate 67fabd1de4 Fix graphql query for share pages
Properly close rows in scanner
2020-02-29 09:21:41 +01:00