Commit graph

2690 commits

Author SHA1 Message Date
Michael Mayer cf8d4ce29b Remove syscall.Kill from context Shutdown() 2019-05-06 22:13:35 +02:00
Michael Mayer 1e6f41b417 Improve image classification performance and logging in debug mode 2019-05-04 17:34:51 +02:00
Michael Mayer d83e81b49b Graceful web and database server shutdown; add log-level flag 2019-05-04 13:29:32 +02:00
Michael Mayer ff09f76bc5 Add PhotoTag model to weight photo tags based on confidence and source 2019-05-04 11:50:19 +02:00
Michael Mayer e148e7af46 Add ColorPerception struct and improve Color() tests, see #7
Since we're not using the very same colors as material design anymore,
MaterialColor was renamed to IndexedColor.
2019-05-04 11:27:33 +02:00
Michael Mayer e565195f23 Add config flag for read-only mode, see #56 2019-05-04 09:11:33 +02:00
Michael Mayer 7074faabe0 Additional airport image for testing, see #7 2019-05-04 07:19:02 +02:00
Michael Mayer 5d80af8434 Add static testdata for color indexing and image classification, see #7
Images are scaled down to ~331px. Filenames contain object and color.
2019-05-04 07:10:39 +02:00
Michael Mayer 868e1b80b9 Use reflection and yaml.Unmarshal() for configuration, see #66 2019-05-04 05:25:00 +02:00
Michael Mayer bd60b5d398 Remove deprecated PerceptualHashSize const 2019-05-04 01:24:43 +02:00
Michael Mayer 3389b5115e Use hash to keep TensorFlow model up to date 2019-05-04 00:53:02 +02:00
Michael Mayer 3589a410c2 Add test.jpg fixture for fsutil package 2019-05-03 18:58:33 +02:00
Michael Mayer 71adb35cff Remove test and frontend packages; app and test context refactoring 2019-05-03 18:57:28 +02:00
Michael Mayer 6cba9d061f Remove unnecessary getter prefix
See https://golang.org/doc/effective_go.html#Getters
2019-05-02 17:26:44 +02:00
Michael Mayer 3315b87305 Use logrus for logging 2019-05-02 14:10:05 +02:00
Michael Mayer 8289de2746 Improve logging and set optional password for built-in TiDB server 2019-05-01 14:54:11 +02:00
Michael Mayer 818019a7ec Use nasnet mobile instead of inception v1 for image classification 2019-04-30 13:17:01 +02:00
Michael Mayer a82696f067 Move color, luminance and saturation to files table 2019-04-29 21:54:36 +02:00
Michael Mayer b079882354 Slow test refactoring (now using testing.Short()) 2019-04-29 20:09:17 +02:00
Michael Mayer 900e8c5e23 Color extraction: Add saturation value 2019-04-29 17:12:24 +02:00
Michael Mayer 5e1210c508 Add luminance and monochrome return values to MediaFile.Colors() 2019-04-29 01:59:57 +02:00
Sebastian Kunert 6267118acf Fix broken tensorflow test (#107)
* Fix broken tensorflow test

* Introduce rounding to fix tests
2019-04-28 11:09:25 +02:00
Michael Mayer 2e418d6e1e Fix API photo like / unlike test (failed existing photos), see #79 2019-04-26 04:25:00 +02:00
Michael Mayer bc208c378c Set max length for file name to 512 chars because of utf8mb4, see #106 2019-04-26 04:13:50 +02:00
Michael Mayer 2f15ca2c59 Reduce length for file names to 2048 chars to fix error on CI, see #106 2019-04-26 02:44:57 +02:00
Michael Mayer ffc64cceb0 Use 3x3 thumbnail for color indexing #7
Other implementations were unstable due to the use of random numbers.
This seems to be fast and also enables us to search specific parts
of an image. 16 colors are indexed (Material Design).
2019-04-26 02:22:53 +02:00
Michael Mayer 94205f0113 Models: Allow 4096 chars for file names, fix #106 2019-04-25 03:52:25 +02:00
Michael Mayer b294ad10b3 Fix TestMediaFile_GetColors_Slow test 2019-04-18 20:16:09 +02:00
Sebastian Kunert 48a9f78cb3 Improve color indexing by using k-means clustering (#103)
* First commit for color-improvements

* Use k-means for prominent color detection

* Remove debugging code

* Add color checks to tests

* Add additional test for color names
2019-04-18 17:27:08 +02:00
Michael Mayer 57d5d2a183 OpenStreetmap: PlaceID now uint instead of string
API seems to have changed.
2019-04-18 06:58:35 +02:00
Vedhavyas Singareddi 4edfc4fa4c error chacks and minor api refactoring (#92)
* error chacks and minor api refactoring

* consistant naming
2019-01-15 14:00:42 +01:00
Vedhavyas Singareddi 74dc8be598 Fix/defer leaks (#91)
* fix defer leaks
* go mod tidy
2019-01-13 00:45:22 +01:00
Michael Mayer 95b041e25f Add error handling for ExpandedFilename(), see #89 2019-01-03 05:45:54 +01:00
Michael Mayer e9425329f1 Add SqlServerPassword() and HttpServerPassword() to Config, see #16 2018-12-26 11:40:20 +01:00
Michael Mayer e37a674e94 Improve thumbnail error messages, see #50 2018-12-26 11:40:20 +01:00
Michael Mayer a3377dc8e8 Rename tidb to internal for database configuration, see #50 2018-12-26 11:40:20 +01:00
Michael Mayer 579c1272a7 Change order of values in config command, see #50 2018-12-26 11:40:20 +01:00
Michael Mayer 77c101a504 Move version command to the bottom, see #50 2018-12-21 04:40:45 +01:00
Michael Mayer 9e887be2d6 Add version command, see #50 2018-12-21 04:32:17 +01:00
Michael Mayer 5345ad37a2 Move server flags to global config, see #50 2018-12-21 04:17:22 +01:00
Michael Mayer b300d5540c Remove todo comment, see #50 2018-12-21 04:07:36 +01:00
Michael Mayer 35ce40dfa1 Move ServerPath() up, see #50 2018-12-21 04:06:15 +01:00
Michael Mayer cc44c3e580 Move favicons to server public directory, see #50 2018-12-21 04:05:14 +01:00
Michael Mayer a6e4944821 Rename HTTP server paths in config, see #50 2018-12-21 03:44:38 +01:00
Michael Mayer 2050ba61b4 Rename Config.GetFaviconsPath() to FaviconsPath(), see #50 2018-12-21 03:41:07 +01:00
Michael Mayer e87bf84532 Rename Config.GetTemplatesPath() to TemplatesPath(), see #50 2018-12-21 03:40:19 +01:00
Michael Mayer 3f2156a8fa Rename Config.GetDatabasePath() to SqlServerPath(), see #50 2018-12-21 03:39:10 +01:00
Michael Mayer a7b6ea8936 Rename Config.GetServerAssetsPath() to ServerAssetsPath(), see #50 2018-12-21 03:33:56 +01:00
Michael Mayer 7d6c3d83b7 Rename Config.GetTensorFlowModelPath() to TensorFlowModelPath(), see #50 2018-12-21 03:25:50 +01:00
Michael Mayer 7fde545fe7 Rename Config.GetAssetsPath() to AssetsPath(), see #50 2018-12-21 03:25:09 +01:00
Michael Mayer 628c598f08 Rename Config.GetThumbnailsPath() to ThumbnailsPath(), see #50 2018-12-21 03:24:22 +01:00
Michael Mayer 3462257cce Rename Config.GetCachePath() to CachePath(), see #50 2018-12-21 03:23:47 +01:00
Michael Mayer a3d9c61c42 Rename Config.GetDarktableCli() to DarktableCli(), see #50 2018-12-21 03:23:05 +01:00
Michael Mayer 32444bde18 Rename Config.GetExportPath() to ExportPath(), see #50 2018-12-21 03:22:25 +01:00
Michael Mayer 1a4815fd51 Rename Config.GetImportPath() to ImportPath(), see #50 2018-12-21 03:21:49 +01:00
Michael Mayer c1219799da Rename Config.GetOriginalsPath() to OriginalsPath(), see #50 2018-12-21 03:21:21 +01:00
Michael Mayer b365a2ce57 Rename Config.GetDatabaseDsn() to DatabaseDsn(), see #50 2018-12-21 03:19:25 +01:00
Michael Mayer 3eb61dff47 Rename Config.GetDatabaseDriver() to DatabaseDriver, see #50 2018-12-21 03:18:43 +01:00
Michael Mayer ef2719e21e Rename Config.GetServerMode() to HttpServerMode, see #50 2018-12-21 03:18:01 +01:00
Michael Mayer f0c947ddfb Rename Config.GetServerPort() to HttpServerPort, see #50 2018-12-21 03:16:50 +01:00
Michael Mayer 49793a3706 Rename server-* to http-*, see #50 2018-12-21 03:11:06 +01:00
Michael Mayer cde4eb5d92 Rename serverIP and serverPort to httpServer*, see #50 2018-12-21 03:06:48 +01:00
Michael Mayer 149e9f15d7 Rename Config.GetServerIP() and HttpServerHost(), see #50 2018-12-21 03:03:59 +01:00
Michael Mayer 62d75f74f2 Rename Config.DbServerIP() and DbServerPort() to SqlServer*, see #50 2018-12-21 03:02:34 +01:00
Michael Mayer d4aada7f86 Rename Config.IsDebug() to Debug(), see #50 2018-12-21 02:49:45 +01:00
Michael Mayer 6872cff3dc Rename Config.GetAppVersion() and GetAppCopyright() to AppAppVersion() and AppCopyright(), see #50 2018-12-21 02:47:44 +01:00
Michael Mayer 9efbbbfe90 Rename Config.GetAppName() to AppName(), see #50 2018-12-21 02:44:34 +01:00
Michael Mayer 37fe1d093e Rename Config.GetConfigFile() to ConfigFile(), see #50 2018-12-21 02:43:44 +01:00
Michael Mayer c639a81c90 Rename GetDb() to Db() in comments, see #50 2018-12-21 02:39:31 +01:00
Michael Mayer 40fae6a28f Rename Config.GetClientConfig() to ClientConfig(), see #50 2018-12-21 02:38:39 +01:00
Michael Mayer 0f12aac73b Rename Config.GetDb() to Db(), see #50 2018-12-21 02:37:16 +01:00
Michael Mayer 9e4c134e29 Fixed inline comments 2018-12-21 02:00:22 +01:00
Michael Mayer d2ba33d5f4 Improve error message for lat/long missing #80 2018-12-21 02:00:22 +01:00
Michael Mayer 43b860801c Proof-of-concept for using TiDB instead of MySQL #60 2018-12-18 18:38:30 +01:00
Michael Mayer 11ca54da3b Add logs for location indexing #80 2018-12-18 18:13:44 +01:00
Michael Mayer 52c82e610d Change fixture download file name to test.zip 2018-12-11 07:22:11 +01:00
Michael Mayer f92830eb83 Change fixture data URL to our own download server 2018-12-11 07:11:00 +01:00
Joey Zou c5ff44692f HTTP status code change (#78)
DislikePhoto and LikePhoto should return http.StatusOK (200) instead of http.StatusAccepted (202)
2018-12-07 13:48:15 +01:00
Michael Mayer 2e746c833c Code clean-up #58 2018-11-18 19:18:19 +01:00
Michael Mayer 9872cfaa50 Add ConfigCommand test #58
- Includes refactoring of existing packages to enable testing of commands
2018-11-17 13:57:19 +01:00
Michael Mayer 86a6dda0e0 Run "make fmt" #58 2018-11-17 12:29:01 +01:00
Michael Mayer bb36226b59 Expected status for like and dislike is accepted (202) #58 2018-11-17 08:37:31 +01:00
Michael Mayer cdf9d9293d Add test stubs and helper functions for package api #58 2018-11-17 08:28:50 +01:00
Michael Mayer f7404f838b Fix slow tests and improve test output (colorized) #58 2018-11-17 06:56:43 +01:00
Michael Mayer fb91ce9a06 Move utils and test config to separate packages #58 2018-11-17 06:21:39 +01:00
Michael Mayer f3129097cf Fix Inception model name in download script #70 2018-11-17 02:49:25 +01:00
Michael Mayer 8063ba39ac Move slow tests to *_slow_test.go #58
- Added a new make target: test-fast
- To execute all test, you have to use -tags=slow
2018-11-14 23:51:17 +01:00
Michael Mayer c5ee0fee48 Add darktable development docker image #62
- Improved build scripts and Dockerfile
- broadwayd can be used as display server for darktable or other GTK based software
2018-11-12 06:58:39 +01:00
Michael Mayer 8ac8658cc2 Lowercase fields for Config and added documentation #50 2018-11-09 21:11:52 +01:00
Michael Mayer dd26ee0dca Use functions for all config values #50
Why? See https://github.com/photoprism/photoprism/issues/50#issuecomment-433856358
2018-11-09 20:48:23 +01:00
Michael Mayer 2cce8ded84 Moved all server assets to subdirectory #55 2018-11-09 19:25:58 +01:00
Michael Mayer 53dfd1647a Preparation for using an embedded database #55 2018-11-09 19:06:03 +01:00
Michael Mayer 90d73e4a61 Fixed default value for database DSN #58 2018-11-09 13:18:12 +01:00
Michael Mayer 133c7964ad Add tensorflow model and test file to development image #39 2018-11-08 16:41:14 +01:00
Michael Mayer ac31141669 Smaller docker images with multi-stage build #39 2018-11-08 10:56:11 +01:00
Michael Mayer a4d6f810d6 Added inline documentation #14 2018-11-06 19:02:03 +01:00
Michael Mayer 3e3327ade3 Added link to wiki / developer guide, see #12 2018-11-06 11:10:57 +01:00
Michael Mayer 4a33d430e9 Fixed formatting for api inline docs, see #12 2018-11-06 10:43:59 +01:00
Michael Mayer e66e9e4f69 Improved REST route docs, see #12
Hard to test locally as godoc -http ":80" doesn't seem to work outside the GOPATH
2018-11-06 10:28:44 +01:00
Michael Mayer 5868d4e664 Added REST route as a first step to document API, see #12 2018-11-06 09:56:40 +01:00
Gergely Brautigam b202bb6cc7 Refactoring the photoprism package #53
* Started refactoring the photoprism package.

* A lot of more comments and eliminating utils.

* Fixed search.

* See #50 The great refactor -- Refactor config to YAML, Add Docs, Revise exported fields
2018-11-01 17:01:45 +01:00
Michael Mayer 6a2af16d1c Using goimports for formatting imports #50 2018-10-31 07:14:33 +01:00
Philipp Knobel 00f79b2d01 First implementation of liking a photo (#48)
First implementation of liking a photo
2018-10-31 03:33:18 +01:00
Carlos Vazquez 00abbf1af5 Adds basic documentation for internal packages (#43)
* Added basic documentation wireframe for api, commands, and forms.

* Added doc.go
2018-10-31 02:42:54 +01:00
Michael Mayer 479acc06ab Changed edited postfix from "edit%d" to "edited_%d" 2018-10-09 16:48:10 +02:00
Michael Mayer b9f1fe930b Added TakenAtChanged flag 2018-10-08 20:03:00 +02:00
Michael Mayer b1e2ac17bd Save() instead of Update() must be used for updating rows 2018-09-27 15:16:37 +02:00
Michael Mayer 7640cae26b Mark files are missing, when they are not found 2018-09-27 12:10:19 +02:00
Michael Mayer 340d9ea799 Don't show missing files in search results by default 2018-09-27 09:44:06 +02:00
Michael Mayer 10859ee695 Moved perceptual hash from photo to file model; code clean-up (go fmt)
- Files might show different details of the full photo
2018-09-27 08:59:53 +02:00
Michael Mayer c5481a177d Added fields for house nr, street and suburb to location 2018-09-26 15:00:12 +02:00
Michael Mayer 2ae77b7686 Refactored REST API (renamed package to api) 2018-09-24 21:14:15 +02:00
Michael Mayer bbab05f9db Added additional photo meta data like aperture, lens and camera make; smaller perceptive hash; implemented stub for single photo view 2018-09-24 19:07:43 +02:00
Michael Mayer 13426caba2 Added country name and text wrap to photo search detail view 2018-09-24 11:48:52 +02:00
Michael Mayer 16a89c84c0 Refactoring: Separate file for each REST route and changed thumbnail URL 2018-09-24 11:27:46 +02:00
Michael Mayer 034495d75c Refactoring: Separate file for each command 2018-09-24 09:53:16 +02:00
Michael Mayer 5a2c717030 Using simpler sha1 hash for improved indexing performance (not relevant for security) 2018-09-24 09:02:00 +02:00
Michael Mayer 4ac3b2a602 Implemented detail view proof-of-concept for photo search 2018-09-19 20:15:46 +02:00
Michael Mayer d7e4531231 Indexer now sets country (guess when there there is no location) 2018-09-19 11:16:18 +02:00
Michael Mayer 122f7a8641 Added countries table 2018-09-19 09:20:57 +02:00
Michael Mayer ce5869d213 Code clean-up (go fmt) 2018-09-19 00:56:54 +02:00
Michael Mayer d3ef7abb54 Experimental filters for category and country (photo search) 2018-09-19 00:53:39 +02:00
Michael Mayer 39ab854672 Implemented infinite scrolling and improved search API 2018-09-18 23:24:19 +02:00
Michael Mayer 6b7b5bf186 Improved logging for thumbnail generation 2018-09-18 22:02:50 +02:00
Michael Mayer e4998d1046 Code clean-up 2018-09-18 21:42:33 +02:00
Michael Mayer d50e36b213 Indexer now re-indexes existing files 2018-09-18 21:15:54 +02:00
Michael Mayer 4119170587 MediaFile.GetRelatedFiles() now returns shorter filenames first 2018-09-18 20:03:43 +02:00
Michael Mayer 0c39f51a86 Using relative path for file names in database 2018-09-18 19:23:40 +02:00
Michael Mayer 0148096c86 Importer now instantly converts and indexes files 2018-09-18 18:36:12 +02:00
Michael Mayer de494fb8f8 Fixed Config.CreateDirectories() 2018-09-18 16:34:08 +02:00
Michael Mayer 1af143d806 Changed assertion for c.Debug in test 2018-09-18 15:49:35 +02:00
Michael Mayer c0c8c26d11 Fixed TestConfig_SetValuesFromFile 2018-09-18 15:28:23 +02:00
Michael Mayer 5e12c48de2 Renamed server-ip to server-host 2018-09-18 15:18:54 +02:00
Michael Mayer eec90acce3 Improved docker-compose config for production environments 2018-09-18 14:42:49 +02:00
Michael Mayer a02b144b96 Additional photo jpeg files get editN suffix instead of vN (N = 1,2,3,...) 2018-09-18 14:05:56 +02:00
Michael Mayer 361123b125 Indexer now indexes files in correct order and with better performance 2018-09-18 12:44:22 +02:00
Michael Mayer 9096d87aca Using defaults from flag config if no value was set 2018-09-18 10:06:26 +02:00
Michael Mayer da77a1230e Code clean-up (go fmt) 2018-09-17 18:40:57 +02:00
Michael Mayer d925d59e67 Moved gorm models to separate package 2018-09-16 19:09:40 +02:00
Michael Mayer 78d9484d81 Directory clean-up: Moved source code to internal/ and config files to configs/ 2018-09-14 14:04:03 +02:00