Use int64 for file modification timestamps #391
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
This commit is contained in:
parent
31647943d9
commit
cc946b8ea8
|
@ -88,14 +88,6 @@
|
|||
</v-list-tile-content>
|
||||
</v-list-tile>
|
||||
|
||||
<v-list-tile :to="{name: 'photos', query: { q: 'stack:true' }}" :exact="true" @click="" class="nav-stacks">
|
||||
<v-list-tile-content>
|
||||
<v-list-tile-title>
|
||||
<translate>Stacks</translate>
|
||||
</v-list-tile-title>
|
||||
</v-list-tile-content>
|
||||
</v-list-tile>
|
||||
|
||||
<v-list-tile :to="{name: 'photos', query: { q: 'panorama:true' }}" :exact="true" @click="" class="nav-panoramas">
|
||||
<v-list-tile-content>
|
||||
<v-list-tile-title>
|
||||
|
@ -104,6 +96,14 @@
|
|||
</v-list-tile-content>
|
||||
</v-list-tile>
|
||||
|
||||
<v-list-tile :to="{name: 'photos', query: { q: 'stack:true' }}" :exact="true" @click="" class="nav-stacks">
|
||||
<v-list-tile-content>
|
||||
<v-list-tile-title>
|
||||
<translate>Stacks</translate>
|
||||
</v-list-tile-title>
|
||||
</v-list-tile-content>
|
||||
</v-list-tile>
|
||||
|
||||
<v-list-tile :to="{name: 'photos', query: { q: 'scan:true' }}" :exact="true" @click="" class="nav-scans">
|
||||
<v-list-tile-content>
|
||||
<v-list-tile-title>
|
||||
|
|
Binary file not shown.
|
@ -25,7 +25,7 @@ msgstr "%{n} Einträge gefunden"
|
|||
msgid "%{n} files uploaded"
|
||||
msgstr "%{n} Dateien hochgeladen"
|
||||
|
||||
#: src/pages/library/files.vue:420
|
||||
#: src/pages/library/files.vue:406
|
||||
msgid "%{n} folders found"
|
||||
msgstr "%{n} Ordner gefunden"
|
||||
|
||||
|
@ -212,7 +212,7 @@ msgstr ""
|
|||
msgid "Altitude"
|
||||
msgstr "Höhe"
|
||||
|
||||
#: src/dialog/photo/details.vue:453
|
||||
#: src/dialog/photo/details.vue:454
|
||||
msgid "Altitude (m)"
|
||||
msgstr "Höhe (m)"
|
||||
|
||||
|
@ -268,7 +268,7 @@ msgstr "Diese Kategorie wirklich löschen?"
|
|||
msgid "Are you sure you want to delete this account?"
|
||||
msgstr "Diesen Account wirklich löschen?"
|
||||
|
||||
#: src/dialog/photo/details.vue:458
|
||||
#: src/dialog/photo/details.vue:459
|
||||
msgid "Artist"
|
||||
msgstr "Ersteller"
|
||||
|
||||
|
@ -314,7 +314,7 @@ msgstr "Kalender"
|
|||
|
||||
#: src/component/album/toolbar.vue:120 src/component/photo/list.vue:138
|
||||
#: src/component/photo/toolbar.vue:201 src/dialog/album/edit.vue:126
|
||||
#: src/dialog/photo/details.vue:440 src/share/photo/list.vue:115
|
||||
#: src/dialog/photo/details.vue:441 src/share/photo/list.vue:115
|
||||
msgid "Camera"
|
||||
msgstr "Kamera"
|
||||
|
||||
|
@ -341,7 +341,7 @@ msgid "Cards"
|
|||
msgstr "Karteikarten"
|
||||
|
||||
#: src/component/album/toolbar.vue:122 src/component/photo/toolbar.vue:206
|
||||
#: src/dialog/album/edit.vue:128 src/dialog/photo/details.vue:444
|
||||
#: src/dialog/album/edit.vue:128 src/dialog/photo/details.vue:445
|
||||
#: src/pages/albums.vue:257 src/share/albums.vue:155
|
||||
msgid "Category"
|
||||
msgstr "Kategorie"
|
||||
|
@ -375,7 +375,7 @@ msgstr "Schließen"
|
|||
msgid "Codec"
|
||||
msgstr "Codec"
|
||||
|
||||
#: src/component/photo/toolbar.vue:205 src/dialog/photo/details.vue:443
|
||||
#: src/component/photo/toolbar.vue:205 src/dialog/photo/details.vue:444
|
||||
msgid "Color"
|
||||
msgstr "Farbe"
|
||||
|
||||
|
@ -423,7 +423,7 @@ msgstr "In Zwischenablage kopiert"
|
|||
msgid "Copy"
|
||||
msgstr "Kopieren"
|
||||
|
||||
#: src/dialog/photo/details.vue:459
|
||||
#: src/dialog/photo/details.vue:460
|
||||
msgid "Copyright"
|
||||
msgstr "Copyright"
|
||||
|
||||
|
@ -447,7 +447,7 @@ msgid "Couldn't find recently edited"
|
|||
msgstr "Bisher nichts bearbeitet"
|
||||
|
||||
#: src/component/album/toolbar.vue:119 src/component/photo/toolbar.vue:200
|
||||
#: src/dialog/album/edit.vue:125 src/dialog/photo/details.vue:439
|
||||
#: src/dialog/album/edit.vue:125 src/dialog/photo/details.vue:440
|
||||
msgid "Country"
|
||||
msgstr "Land"
|
||||
|
||||
|
@ -499,7 +499,7 @@ msgid "Delete"
|
|||
msgstr "Löschen"
|
||||
|
||||
#: src/component/album/toolbar.vue:116 src/dialog/album/edit.vue:122
|
||||
#: src/dialog/photo/details.vue:461
|
||||
#: src/dialog/photo/details.vue:462
|
||||
msgid "Description"
|
||||
msgstr "Beschreibung"
|
||||
|
||||
|
@ -620,11 +620,11 @@ msgstr ""
|
|||
msgid "Expires"
|
||||
msgstr "Ablaufdatum"
|
||||
|
||||
#: src/dialog/photo/details.vue:454
|
||||
#: src/dialog/photo/details.vue:455
|
||||
msgid "Exposure"
|
||||
msgstr "Belichtungszeit"
|
||||
|
||||
#: src/dialog/photo/details.vue:455
|
||||
#: src/dialog/photo/details.vue:456
|
||||
msgid "F Number"
|
||||
msgstr "F Nummer"
|
||||
|
||||
|
@ -685,27 +685,26 @@ msgstr ""
|
|||
"Dateien mit Namen wie ‘IMG_1234 (2)’ oder ‘IMG_1234 copy 2’ werden als "
|
||||
"Stapel zusammengefasst."
|
||||
|
||||
#: src/dialog/photo/details.vue:456
|
||||
#: src/dialog/photo/details.vue:457
|
||||
msgid "Focal Length"
|
||||
msgstr "Brennweite"
|
||||
|
||||
#: src/dialog/account/edit.vue:326 src/dialog/account/edit.vue:332
|
||||
#: src/dialog/photo/files.vue:54 src/dialog/photo/info.vue:24
|
||||
#: src/dialog/share/upload.vue:147 src/model/folder.js:187
|
||||
#: src/pages/library/files.vue:84 src/pages/library/import.vue:120
|
||||
#: src/pages/library/index.vue:117
|
||||
#: src/dialog/photo/info.vue:24 src/dialog/share/upload.vue:147
|
||||
#: src/model/folder.js:187 src/pages/library/files.vue:81
|
||||
#: src/pages/library/import.vue:120 src/pages/library/index.vue:117
|
||||
msgid "Folder"
|
||||
msgstr "Ordner"
|
||||
|
||||
#: src/pages/library/files.vue:422
|
||||
#: src/pages/library/files.vue:408
|
||||
msgid "Folder contains %{n} files"
|
||||
msgstr "Ordner enthält %{n} Dateien"
|
||||
|
||||
#: src/pages/library/files.vue:414
|
||||
#: src/pages/library/files.vue:400
|
||||
msgid "Folder is empty"
|
||||
msgstr "Ordner ist leer"
|
||||
|
||||
#: src/pages/library/files.vue:178
|
||||
#: src/pages/library/files.vue:175
|
||||
msgid "Folder Name"
|
||||
msgstr "Ordnername"
|
||||
|
||||
|
@ -847,7 +846,7 @@ msgstr "Indiziere Fotos, Videos und Sidecar-Dateien…"
|
|||
msgid "Interval"
|
||||
msgstr "Intervall"
|
||||
|
||||
#: src/dialog/photo/details.vue:544
|
||||
#: src/dialog/photo/details.vue:545
|
||||
msgid "Invalid date"
|
||||
msgstr "Ungültiges Datum"
|
||||
|
||||
|
@ -859,7 +858,7 @@ msgstr "Eintrag"
|
|||
msgid "JPEGs and thumbnails are automatically rendered as needed."
|
||||
msgstr "JPEGs und Thumbnails werden bei Bedarf automatisch erstellt."
|
||||
|
||||
#: src/dialog/photo/details.vue:462
|
||||
#: src/dialog/photo/details.vue:463
|
||||
msgid "Keywords"
|
||||
msgstr "Suchbegriffe"
|
||||
|
||||
|
@ -880,7 +879,7 @@ msgstr "Kategorien"
|
|||
msgid "Labels deleted"
|
||||
msgstr "Kategorien gelöscht"
|
||||
|
||||
#: src/dialog/photo/details.vue:448 src/pages/settings/general.vue:265
|
||||
#: src/dialog/photo/details.vue:449 src/pages/settings/general.vue:265
|
||||
msgid "Language"
|
||||
msgstr "Sprache"
|
||||
|
||||
|
@ -888,7 +887,7 @@ msgstr "Sprache"
|
|||
msgid "Last Backup"
|
||||
msgstr "Letztes Backup"
|
||||
|
||||
#: src/dialog/photo/details.vue:451 src/dialog/photo/info.vue:117
|
||||
#: src/dialog/photo/details.vue:452 src/dialog/photo/info.vue:117
|
||||
msgid "Latitude"
|
||||
msgstr "Breitengrad"
|
||||
|
||||
|
@ -896,7 +895,7 @@ msgstr "Breitengrad"
|
|||
msgid "Lavender"
|
||||
msgstr "Lavendel"
|
||||
|
||||
#: src/component/photo/toolbar.vue:202 src/dialog/photo/details.vue:441
|
||||
#: src/component/photo/toolbar.vue:202 src/dialog/photo/details.vue:442
|
||||
msgid "Lens"
|
||||
msgstr "Objektiv"
|
||||
|
||||
|
@ -913,7 +912,7 @@ msgid "Library"
|
|||
msgstr "Dateien"
|
||||
|
||||
#: src/component/navigation.vue:347 src/component/navigation.vue:33
|
||||
#: src/dialog/photo/details.vue:460 src/pages/about/license.vue:4
|
||||
#: src/dialog/photo/details.vue:461 src/pages/about/license.vue:4
|
||||
msgid "License"
|
||||
msgstr "Lizenz"
|
||||
|
||||
|
@ -921,7 +920,7 @@ msgstr "Lizenz"
|
|||
msgid "Lime"
|
||||
msgstr "Hellgrün"
|
||||
|
||||
#: src/pages/library/files.vue:424
|
||||
#: src/pages/library/files.vue:410
|
||||
msgid "Limit reached, showing first %{n} files"
|
||||
msgstr "Limit erreicht, zeige erste %{n} Dateien"
|
||||
|
||||
|
@ -970,7 +969,7 @@ msgstr "Abmelden"
|
|||
msgid "Logs"
|
||||
msgstr "Logs"
|
||||
|
||||
#: src/dialog/photo/details.vue:452 src/dialog/photo/info.vue:125
|
||||
#: src/dialog/photo/details.vue:453 src/dialog/photo/info.vue:125
|
||||
msgid "Longitude"
|
||||
msgstr "Längengrad"
|
||||
|
||||
|
@ -1064,7 +1063,7 @@ msgstr "Name"
|
|||
|
||||
#: src/component/album/toolbar.vue:124 src/dialog/album/edit.vue:119
|
||||
#: src/dialog/photo/labels.vue:117 src/pages/labels.vue:199
|
||||
#: src/pages/library/files.vue:180
|
||||
#: src/pages/library/files.vue:177
|
||||
msgid "Name too long"
|
||||
msgstr "Name zu lang"
|
||||
|
||||
|
@ -1171,7 +1170,7 @@ msgstr ""
|
|||
"Note: Bereits angemeldete Benutzer werden nach ändern des Passworts nicht "
|
||||
"automatisch abgemeldet."
|
||||
|
||||
#: src/dialog/photo/details.vue:463
|
||||
#: src/dialog/photo/details.vue:464
|
||||
msgid "Notes"
|
||||
msgstr "Notizen"
|
||||
|
||||
|
@ -1200,11 +1199,11 @@ msgstr "Ein Album gefunden"
|
|||
msgid "One entry found"
|
||||
msgstr "Ein Eintrag gefunden"
|
||||
|
||||
#: src/pages/library/files.vue:416
|
||||
#: src/pages/library/files.vue:402
|
||||
msgid "One file found"
|
||||
msgstr "Eine Datei gefunden"
|
||||
|
||||
#: src/pages/library/files.vue:418
|
||||
#: src/pages/library/files.vue:404
|
||||
msgid "One folder found"
|
||||
msgstr "Ein Ordner gefunden"
|
||||
|
||||
|
@ -1241,7 +1240,7 @@ msgstr "Originale"
|
|||
msgid "Panorama"
|
||||
msgstr "Panorama"
|
||||
|
||||
#: src/component/navigation.vue:86
|
||||
#: src/component/navigation.vue:78
|
||||
msgid "Panoramas"
|
||||
msgstr "Panoramas"
|
||||
|
||||
|
@ -1466,9 +1465,9 @@ msgstr "Scans"
|
|||
|
||||
#: src/component/album/toolbar.vue:117 src/component/photo/toolbar.vue:198
|
||||
#: src/component/photo/toolbar.vue:33 src/dialog/album/edit.vue:123
|
||||
#: src/dialog/photo/details.vue:437 src/dialog/photo/labels.vue:114
|
||||
#: src/dialog/photo/details.vue:438 src/dialog/photo/labels.vue:114
|
||||
#: src/pages/albums.vue:255 src/pages/labels.vue:196
|
||||
#: src/pages/library/errors.vue:33 src/pages/library/files.vue:177
|
||||
#: src/pages/library/errors.vue:33 src/pages/library/files.vue:174
|
||||
#: src/pages/places.vue:174 src/routes.js:235 src/share/albums.vue:153
|
||||
msgid "Search"
|
||||
msgstr "Suche"
|
||||
|
@ -1479,7 +1478,7 @@ msgstr "Fotos und Videos auf verschiedenen Weltkarten anzeigen und filtern."
|
|||
|
||||
#: src/pages/album/photos.vue:278 src/pages/albums.vue:399
|
||||
#: src/pages/labels.vue:360 src/pages/library/errors.vue:123
|
||||
#: src/pages/library/files.vue:345 src/pages/photos.vue:313
|
||||
#: src/pages/library/files.vue:331 src/pages/photos.vue:313
|
||||
#: src/pages/places.vue:208 src/share/albums.vue:279 src/share/photos.vue:321
|
||||
msgid "Search term too short"
|
||||
msgstr "Suchbegriff zu kurz"
|
||||
|
@ -1584,7 +1583,7 @@ msgid "Sort by file name"
|
|||
msgstr "Dateinamen"
|
||||
|
||||
#: src/component/album/toolbar.vue:121 src/component/photo/toolbar.vue:207
|
||||
#: src/dialog/album/edit.vue:127 src/dialog/photo/details.vue:445
|
||||
#: src/dialog/album/edit.vue:127 src/dialog/photo/details.vue:446
|
||||
msgid "Sort Order"
|
||||
msgstr "Sortierung"
|
||||
|
||||
|
@ -1596,7 +1595,7 @@ msgstr "Quelle"
|
|||
msgid "Spanish"
|
||||
msgstr "Spanisch"
|
||||
|
||||
#: src/component/navigation.vue:78
|
||||
#: src/component/navigation.vue:86
|
||||
msgid "Stacks"
|
||||
msgstr "Bildstapel"
|
||||
|
||||
|
@ -1612,6 +1611,10 @@ msgstr "Länder"
|
|||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: src/dialog/photo/files.vue:54
|
||||
msgid "Storage Folder"
|
||||
msgstr "Ablageverzeichnis"
|
||||
|
||||
#: src/options/options.js:160
|
||||
msgid "Streets"
|
||||
msgstr "Straßen"
|
||||
|
@ -1620,7 +1623,7 @@ msgstr "Straßen"
|
|||
msgid "Style"
|
||||
msgstr "Style"
|
||||
|
||||
#: src/dialog/photo/details.vue:457
|
||||
#: src/dialog/photo/details.vue:458
|
||||
msgid "Subject"
|
||||
msgstr "Bildinhalt"
|
||||
|
||||
|
@ -1642,11 +1645,11 @@ msgstr "RAW-Dateien sichern"
|
|||
msgid "Taken"
|
||||
msgstr "Aufgenommen"
|
||||
|
||||
#: src/component/photo/toolbar.vue:209 src/dialog/photo/details.vue:447
|
||||
#: src/component/photo/toolbar.vue:209 src/dialog/photo/details.vue:448
|
||||
msgid "Taken after"
|
||||
msgstr "Erstell nach"
|
||||
|
||||
#: src/component/photo/toolbar.vue:208 src/dialog/photo/details.vue:446
|
||||
#: src/component/photo/toolbar.vue:208 src/dialog/photo/details.vue:447
|
||||
msgid "Taken before"
|
||||
msgstr "Erstellt vor"
|
||||
|
||||
|
@ -1654,7 +1657,7 @@ msgstr "Erstellt vor"
|
|||
msgid "Teal"
|
||||
msgstr "Blaugrün"
|
||||
|
||||
#: src/dialog/photo/details.vue:470
|
||||
#: src/dialog/photo/details.vue:471
|
||||
msgid "Text too long"
|
||||
msgstr "Text ist zu lang"
|
||||
|
||||
|
@ -1688,11 +1691,11 @@ msgstr ""
|
|||
msgid "Time UTC"
|
||||
msgstr "Zeit UTC"
|
||||
|
||||
#: src/dialog/photo/details.vue:449
|
||||
#: src/dialog/photo/details.vue:450
|
||||
msgid "Time Zone"
|
||||
msgstr "Zeitzone"
|
||||
|
||||
#: src/component/photo/list.vue:136 src/dialog/photo/details.vue:450
|
||||
#: src/component/photo/list.vue:136 src/dialog/photo/details.vue:451
|
||||
#: src/dialog/photo/info.vue:44 src/share/photo/list.vue:113
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
@ -1735,7 +1738,7 @@ msgstr "Typ"
|
|||
msgid "UID"
|
||||
msgstr "UID"
|
||||
|
||||
#: src/dialog/photo/details.vue:431 src/dialog/photo/info.vue:254
|
||||
#: src/dialog/photo/details.vue:432 src/dialog/photo/info.vue:254
|
||||
#: src/model/album.js:122 src/model/photo.js:401 src/model/photo.js:415
|
||||
#: src/model/photo.js:438 src/model/photo.js:452 src/model/photo.js:529
|
||||
#: src/model/photo.js:542 src/options/options.js:15 src/options/options.js:29
|
||||
|
@ -1823,7 +1826,7 @@ msgid "Videos"
|
|||
msgstr "Videos"
|
||||
|
||||
#: src/component/album/toolbar.vue:118 src/component/photo/toolbar.vue:199
|
||||
#: src/dialog/album/edit.vue:124 src/dialog/photo/details.vue:438
|
||||
#: src/dialog/album/edit.vue:124 src/dialog/photo/details.vue:439
|
||||
msgid "View"
|
||||
msgstr "Ansicht"
|
||||
|
||||
|
@ -1856,7 +1859,7 @@ msgstr "Weiß"
|
|||
msgid "Who we are"
|
||||
msgstr "Über uns"
|
||||
|
||||
#: src/component/photo/toolbar.vue:203 src/dialog/photo/details.vue:442
|
||||
#: src/component/photo/toolbar.vue:203 src/dialog/photo/details.vue:443
|
||||
#: src/dialog/photo/details.vue:240
|
||||
msgid "Year"
|
||||
msgstr "Jahr"
|
||||
|
@ -2224,9 +2227,6 @@ msgstr ""
|
|||
#~ msgid "Prev"
|
||||
#~ msgstr "Zurück"
|
||||
|
||||
#~ msgid "Story"
|
||||
#~ msgstr "Story"
|
||||
|
||||
#~ msgid "Week"
|
||||
#~ msgstr "Woche"
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -19,7 +19,7 @@ msgstr ""
|
|||
msgid "%{n} files uploaded"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/files.vue:420
|
||||
#: src/pages/library/files.vue:406
|
||||
msgid "%{n} folders found"
|
||||
msgstr ""
|
||||
|
||||
|
@ -214,7 +214,7 @@ msgstr ""
|
|||
msgid "Altitude"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:453
|
||||
#: src/dialog/photo/details.vue:454
|
||||
msgid "Altitude (m)"
|
||||
msgstr ""
|
||||
|
||||
|
@ -272,7 +272,7 @@ msgstr ""
|
|||
msgid "Are you sure you want to delete this account?"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:458
|
||||
#: src/dialog/photo/details.vue:459
|
||||
msgid "Artist"
|
||||
msgstr ""
|
||||
|
||||
|
@ -322,7 +322,7 @@ msgstr ""
|
|||
#: src/component/photo/list.vue:138
|
||||
#: src/component/photo/toolbar.vue:201
|
||||
#: src/dialog/album/edit.vue:126
|
||||
#: src/dialog/photo/details.vue:440
|
||||
#: src/dialog/photo/details.vue:441
|
||||
#: src/share/photo/list.vue:115
|
||||
msgid "Camera"
|
||||
msgstr ""
|
||||
|
@ -360,7 +360,7 @@ msgstr ""
|
|||
#: src/component/album/toolbar.vue:122
|
||||
#: src/component/photo/toolbar.vue:206
|
||||
#: src/dialog/album/edit.vue:128
|
||||
#: src/dialog/photo/details.vue:444
|
||||
#: src/dialog/photo/details.vue:445
|
||||
#: src/pages/albums.vue:257
|
||||
#: src/share/albums.vue:155
|
||||
msgid "Category"
|
||||
|
@ -398,7 +398,7 @@ msgid "Codec"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:205
|
||||
#: src/dialog/photo/details.vue:443
|
||||
#: src/dialog/photo/details.vue:444
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
|
@ -450,7 +450,7 @@ msgstr ""
|
|||
msgid "Copy"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:459
|
||||
#: src/dialog/photo/details.vue:460
|
||||
msgid "Copyright"
|
||||
msgstr ""
|
||||
|
||||
|
@ -485,7 +485,7 @@ msgstr ""
|
|||
#: src/component/album/toolbar.vue:119
|
||||
#: src/component/photo/toolbar.vue:200
|
||||
#: src/dialog/album/edit.vue:125
|
||||
#: src/dialog/photo/details.vue:439
|
||||
#: src/dialog/photo/details.vue:440
|
||||
msgid "Country"
|
||||
msgstr ""
|
||||
|
||||
|
@ -541,7 +541,7 @@ msgstr ""
|
|||
|
||||
#: src/component/album/toolbar.vue:116
|
||||
#: src/dialog/album/edit.vue:122
|
||||
#: src/dialog/photo/details.vue:461
|
||||
#: src/dialog/photo/details.vue:462
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
|
@ -673,11 +673,11 @@ msgstr ""
|
|||
msgid "Expires"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:454
|
||||
#: src/dialog/photo/details.vue:455
|
||||
msgid "Exposure"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:455
|
||||
#: src/dialog/photo/details.vue:456
|
||||
msgid "F Number"
|
||||
msgstr ""
|
||||
|
||||
|
@ -732,31 +732,30 @@ msgstr ""
|
|||
msgid "Files with sequential names like 'IMG_1234 (2)' or 'IMG_1234 copy 2' belong to the same photo."
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:456
|
||||
#: src/dialog/photo/details.vue:457
|
||||
msgid "Focal Length"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/account/edit.vue:326
|
||||
#: src/dialog/account/edit.vue:332
|
||||
#: src/dialog/photo/files.vue:54
|
||||
#: src/dialog/photo/info.vue:24
|
||||
#: src/dialog/share/upload.vue:147
|
||||
#: src/model/folder.js:187
|
||||
#: src/pages/library/files.vue:84
|
||||
#: src/pages/library/files.vue:81
|
||||
#: src/pages/library/import.vue:120
|
||||
#: src/pages/library/index.vue:117
|
||||
msgid "Folder"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/files.vue:422
|
||||
#: src/pages/library/files.vue:408
|
||||
msgid "Folder contains %{n} files"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/files.vue:414
|
||||
#: src/pages/library/files.vue:400
|
||||
msgid "Folder is empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/files.vue:178
|
||||
#: src/pages/library/files.vue:175
|
||||
msgid "Folder Name"
|
||||
msgstr ""
|
||||
|
||||
|
@ -895,7 +894,7 @@ msgstr ""
|
|||
msgid "Interval"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:544
|
||||
#: src/dialog/photo/details.vue:545
|
||||
msgid "Invalid date"
|
||||
msgstr ""
|
||||
|
||||
|
@ -907,7 +906,7 @@ msgstr ""
|
|||
msgid "JPEGs and thumbnails are automatically rendered as needed."
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:462
|
||||
#: src/dialog/photo/details.vue:463
|
||||
msgid "Keywords"
|
||||
msgstr ""
|
||||
|
||||
|
@ -932,7 +931,7 @@ msgstr ""
|
|||
msgid "Labels deleted"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:448
|
||||
#: src/dialog/photo/details.vue:449
|
||||
#: src/pages/settings/general.vue:265
|
||||
msgid "Language"
|
||||
msgstr ""
|
||||
|
@ -941,7 +940,7 @@ msgstr ""
|
|||
msgid "Last Backup"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:451
|
||||
#: src/dialog/photo/details.vue:452
|
||||
#: src/dialog/photo/info.vue:117
|
||||
msgid "Latitude"
|
||||
msgstr ""
|
||||
|
@ -951,7 +950,7 @@ msgid "Lavender"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:202
|
||||
#: src/dialog/photo/details.vue:441
|
||||
#: src/dialog/photo/details.vue:442
|
||||
msgid "Lens"
|
||||
msgstr ""
|
||||
|
||||
|
@ -971,7 +970,7 @@ msgstr ""
|
|||
|
||||
#: src/component/navigation.vue:347
|
||||
#: src/component/navigation.vue:33
|
||||
#: src/dialog/photo/details.vue:460
|
||||
#: src/dialog/photo/details.vue:461
|
||||
#: src/pages/about/license.vue:4
|
||||
msgid "License"
|
||||
msgstr ""
|
||||
|
@ -980,7 +979,7 @@ msgstr ""
|
|||
msgid "Lime"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/files.vue:424
|
||||
#: src/pages/library/files.vue:410
|
||||
msgid "Limit reached, showing first %{n} files"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1028,7 +1027,7 @@ msgstr ""
|
|||
msgid "Logs"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:452
|
||||
#: src/dialog/photo/details.vue:453
|
||||
#: src/dialog/photo/info.vue:125
|
||||
msgid "Longitude"
|
||||
msgstr ""
|
||||
|
@ -1140,7 +1139,7 @@ msgstr ""
|
|||
#: src/dialog/album/edit.vue:119
|
||||
#: src/dialog/photo/labels.vue:117
|
||||
#: src/pages/labels.vue:199
|
||||
#: src/pages/library/files.vue:180
|
||||
#: src/pages/library/files.vue:177
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1239,7 +1238,7 @@ msgstr ""
|
|||
msgid "Note: Updating the password will not revoke access from already authenticated users."
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:463
|
||||
#: src/dialog/photo/details.vue:464
|
||||
msgid "Notes"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1272,11 +1271,11 @@ msgstr ""
|
|||
msgid "One entry found"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/files.vue:416
|
||||
#: src/pages/library/files.vue:402
|
||||
msgid "One file found"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/files.vue:418
|
||||
#: src/pages/library/files.vue:404
|
||||
msgid "One folder found"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1315,7 +1314,7 @@ msgstr ""
|
|||
msgid "Panorama"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:86
|
||||
#: src/component/navigation.vue:78
|
||||
msgid "Panoramas"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1551,12 +1550,12 @@ msgstr ""
|
|||
#: src/component/photo/toolbar.vue:198
|
||||
#: src/component/photo/toolbar.vue:33
|
||||
#: src/dialog/album/edit.vue:123
|
||||
#: src/dialog/photo/details.vue:437
|
||||
#: src/dialog/photo/details.vue:438
|
||||
#: src/dialog/photo/labels.vue:114
|
||||
#: src/pages/albums.vue:255
|
||||
#: src/pages/labels.vue:196
|
||||
#: src/pages/library/errors.vue:33
|
||||
#: src/pages/library/files.vue:177
|
||||
#: src/pages/library/files.vue:174
|
||||
#: src/pages/places.vue:174
|
||||
#: src/routes.js:235
|
||||
#: src/share/albums.vue:153
|
||||
|
@ -1571,7 +1570,7 @@ msgstr ""
|
|||
#: src/pages/albums.vue:399
|
||||
#: src/pages/labels.vue:360
|
||||
#: src/pages/library/errors.vue:123
|
||||
#: src/pages/library/files.vue:345
|
||||
#: src/pages/library/files.vue:331
|
||||
#: src/pages/photos.vue:313
|
||||
#: src/pages/places.vue:208
|
||||
#: src/share/albums.vue:279
|
||||
|
@ -1690,7 +1689,7 @@ msgstr ""
|
|||
#: src/component/album/toolbar.vue:121
|
||||
#: src/component/photo/toolbar.vue:207
|
||||
#: src/dialog/album/edit.vue:127
|
||||
#: src/dialog/photo/details.vue:445
|
||||
#: src/dialog/photo/details.vue:446
|
||||
msgid "Sort Order"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1702,7 +1701,7 @@ msgstr ""
|
|||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:78
|
||||
#: src/component/navigation.vue:86
|
||||
msgid "Stacks"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1718,6 +1717,10 @@ msgstr ""
|
|||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/files.vue:54
|
||||
msgid "Storage Folder"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:160
|
||||
msgid "Streets"
|
||||
msgstr ""
|
||||
|
@ -1726,7 +1729,7 @@ msgstr ""
|
|||
msgid "Style"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:457
|
||||
#: src/dialog/photo/details.vue:458
|
||||
msgid "Subject"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1749,12 +1752,12 @@ msgid "Taken"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:209
|
||||
#: src/dialog/photo/details.vue:447
|
||||
#: src/dialog/photo/details.vue:448
|
||||
msgid "Taken after"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:208
|
||||
#: src/dialog/photo/details.vue:446
|
||||
#: src/dialog/photo/details.vue:447
|
||||
msgid "Taken before"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1762,7 +1765,7 @@ msgstr ""
|
|||
msgid "Teal"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:470
|
||||
#: src/dialog/photo/details.vue:471
|
||||
msgid "Text too long"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1787,12 +1790,12 @@ msgstr ""
|
|||
msgid "Time UTC"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:449
|
||||
#: src/dialog/photo/details.vue:450
|
||||
msgid "Time Zone"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/list.vue:136
|
||||
#: src/dialog/photo/details.vue:450
|
||||
#: src/dialog/photo/details.vue:451
|
||||
#: src/dialog/photo/info.vue:44
|
||||
#: src/share/photo/list.vue:113
|
||||
msgid "Title"
|
||||
|
@ -1846,7 +1849,7 @@ msgstr ""
|
|||
msgid "UID"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:431
|
||||
#: src/dialog/photo/details.vue:432
|
||||
#: src/dialog/photo/info.vue:254
|
||||
#: src/model/album.js:122
|
||||
#: src/model/photo.js:401
|
||||
|
@ -1956,7 +1959,7 @@ msgstr ""
|
|||
#: src/component/album/toolbar.vue:118
|
||||
#: src/component/photo/toolbar.vue:199
|
||||
#: src/dialog/album/edit.vue:124
|
||||
#: src/dialog/photo/details.vue:438
|
||||
#: src/dialog/photo/details.vue:439
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1986,7 +1989,7 @@ msgid "Who we are"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:203
|
||||
#: src/dialog/photo/details.vue:442
|
||||
#: src/dialog/photo/details.vue:443
|
||||
#: src/dialog/photo/details.vue:240
|
||||
msgid "Year"
|
||||
msgstr ""
|
||||
|
|
|
@ -45,8 +45,8 @@ export class File extends RestModel {
|
|||
Name: "",
|
||||
OriginalName: "",
|
||||
Hash: "",
|
||||
Modified: "",
|
||||
Size: 0,
|
||||
ModTime: 0,
|
||||
Codec: "",
|
||||
Type: "",
|
||||
Mime: "",
|
||||
|
|
|
@ -203,19 +203,8 @@
|
|||
const model = this.results[index];
|
||||
|
||||
if (model.isFile()) {
|
||||
if (model.Type === TypeJpeg) {
|
||||
const photo = new Photo({
|
||||
UID: model.PhotoUID,
|
||||
Title: model.Name,
|
||||
TakenAt: model.Modified,
|
||||
Description: "",
|
||||
Favorite: false,
|
||||
Files: [model]
|
||||
});
|
||||
this.$viewer.show(Thumb.fromPhotos([photo]), 0);
|
||||
} else {
|
||||
this.downloadFile(index);
|
||||
}
|
||||
// Open Edit Dialog
|
||||
Event.publish("dialog.edit", {selection: [model.PhotoUID], album: null, index: 0});
|
||||
} else {
|
||||
this.$router.push({path: '/library/files/' + model.Path});
|
||||
}
|
||||
|
|
|
@ -141,7 +141,7 @@ func (t *TensorFlow) loadModel() error {
|
|||
|
||||
modelPath := path.Join(t.modelsPath, t.modelName)
|
||||
|
||||
log.Infof("classify: loading model from %s", txt.Quote(filepath.Base(modelPath)))
|
||||
log.Infof("classify: loading %s", txt.Quote(filepath.Base(modelPath)))
|
||||
|
||||
// Load model
|
||||
model, err := tf.LoadSavedModel(modelPath, t.modelTags, nil)
|
||||
|
|
|
@ -26,7 +26,6 @@ type File struct {
|
|||
FileRoot string `gorm:"type:varbinary(16);default:'';unique_index:idx_files_name_root;" json:"Root" yaml:"Root,omitempty"`
|
||||
OriginalName string `gorm:"type:varbinary(768);" json:"OriginalName" yaml:"OriginalName,omitempty"`
|
||||
FileHash string `gorm:"type:varbinary(128);index" json:"Hash" yaml:"Hash,omitempty"`
|
||||
FileModified time.Time `json:"Modified" yaml:"Modified,omitempty"`
|
||||
FileSize int64 `json:"Size" yaml:"Size,omitempty"`
|
||||
FileCodec string `gorm:"type:varbinary(32)" json:"Codec" yaml:"Codec,omitempty"`
|
||||
FileType string `gorm:"type:varbinary(32)" json:"Type" yaml:"Type,omitempty"`
|
||||
|
@ -49,13 +48,14 @@ type File struct {
|
|||
FileDiff uint32 `json:"Diff" yaml:"Diff,omitempty"`
|
||||
FileChroma uint8 `json:"Chroma" yaml:"Chroma,omitempty"`
|
||||
FileError string `gorm:"type:varbinary(512)" json:"Error" yaml:"Error,omitempty"`
|
||||
Share []FileShare `json:"-" yaml:"-"`
|
||||
Sync []FileSync `json:"-" yaml:"-"`
|
||||
ModTime int64 `json:"ModTime" yaml:"-"`
|
||||
CreatedAt time.Time `json:"CreatedAt" yaml:"-"`
|
||||
CreatedIn int64 `json:"CreatedIn" yaml:"-"`
|
||||
UpdatedAt time.Time `json:"UpdatedAt" yaml:"-"`
|
||||
UpdatedIn int64 `json:"UpdatedIn" yaml:"-"`
|
||||
DeletedAt *time.Time `sql:"index" json:"DeletedAt,omitempty" yaml:"-"`
|
||||
Share []FileShare `json:"-" yaml:"-"`
|
||||
Sync []FileSync `json:"-" yaml:"-"`
|
||||
}
|
||||
|
||||
type FileInfos struct {
|
||||
|
@ -119,7 +119,7 @@ func (m *File) ShareFileName() string {
|
|||
}
|
||||
|
||||
// Changed returns true if new and old file size or modified time are different.
|
||||
func (m File) Changed(fileSize int64, fileModified time.Time) bool {
|
||||
func (m File) Changed(fileSize int64, modTime time.Time) bool {
|
||||
if m.DeletedAt != nil {
|
||||
return true
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ func (m File) Changed(fileSize int64, fileModified time.Time) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
if m.FileModified.Round(time.Second).Equal(fileModified.Round(time.Second)) {
|
||||
if m.ModTime == modTime.Unix() {
|
||||
return false
|
||||
}
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "exampleFileName.jpg",
|
||||
OriginalName: "exampleFileNameOriginal.jpg",
|
||||
FileHash: "2cad9168fa6acc5c5c2965ddf6ec465ca42fd818",
|
||||
FileModified: time.Date(2020, 3, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2020, 3, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 4278906,
|
||||
FileType: "jpg",
|
||||
FileMime: "image/jpg",
|
||||
|
@ -54,7 +54,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "exampleDNGFile.dng",
|
||||
OriginalName: "exampleDNGFile.dng",
|
||||
FileHash: "3cad9168fa6acc5c5c2965ddf6ec465ca42fd818",
|
||||
FileModified: time.Date(2019, 3, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2019, 3, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 661858,
|
||||
FileType: "dng",
|
||||
FileMime: "image/dng",
|
||||
|
@ -91,7 +91,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "exampleXmpFile.xmp",
|
||||
OriginalName: "exampleXmpFile.xmp",
|
||||
FileHash: "ocad9168fa6acc5c5c2965ddf6ec465ca42fd818",
|
||||
FileModified: time.Date(2019, 3, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2019, 3, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 858,
|
||||
FileType: "xmp",
|
||||
FileMime: "text/xmp",
|
||||
|
@ -128,7 +128,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "bridge.jpg",
|
||||
OriginalName: "bridgeOriginal.jpg",
|
||||
FileHash: "pcad9168fa6acc5c5c2965ddf6ec465ca42fd818",
|
||||
FileModified: time.Date(2017, 2, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2017, 2, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 961858,
|
||||
FileType: "jpg",
|
||||
FileMime: "image/jpg",
|
||||
|
@ -165,7 +165,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "reunion.jpg",
|
||||
OriginalName: "reunionOriginal.jpg",
|
||||
FileHash: "acad9168fa6acc5c5c2965ddf6ec465ca42fd818",
|
||||
FileModified: time.Date(2017, 1, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2017, 1, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 81858,
|
||||
FileType: "jpg",
|
||||
FileMime: "image/jpg",
|
||||
|
@ -202,7 +202,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "Quality1FavoriteTrue.jpg",
|
||||
OriginalName: "Quality1FavoriteTrue.jpg",
|
||||
FileHash: "acad9168fa6acc5c5c2965ddf6ec465ca42fd819",
|
||||
FileModified: time.Date(2017, 1, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2017, 1, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 500,
|
||||
FileType: "jpg",
|
||||
FileMime: "image/jpg",
|
||||
|
@ -239,7 +239,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "missing.jpg",
|
||||
OriginalName: "missing.jpg",
|
||||
FileHash: "acad9168fa6acc5c5c2965ddf6ec465ca42fd819",
|
||||
FileModified: time.Date(2017, 1, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2017, 1, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 500,
|
||||
FileType: "jpg",
|
||||
FileMime: "image/jpg",
|
||||
|
@ -276,7 +276,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "Photo18.jpg",
|
||||
OriginalName: "Photo18.jpg",
|
||||
FileHash: "acad9168fa6acc5c5c2965ddf6ec465ca42fd820",
|
||||
FileModified: time.Date(2017, 1, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2017, 1, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 500,
|
||||
FileType: "jpg",
|
||||
FileMime: "image/jpg",
|
||||
|
@ -313,7 +313,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "Video.mp4",
|
||||
OriginalName: "Video.mp4",
|
||||
FileHash: "acad9168fa6acc5c5c2965ddf6ec465ca42fd831",
|
||||
FileModified: time.Date(2017, 1, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2017, 1, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 500,
|
||||
FileType: "mp4",
|
||||
FileMime: "video/mp4",
|
||||
|
@ -350,7 +350,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "VideoError.mp4",
|
||||
OriginalName: "VideoError.mp4",
|
||||
FileHash: "acad9168fa6acc5c5c2965ddf6ec465ca42fd832",
|
||||
FileModified: time.Date(2017, 1, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2017, 1, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 500,
|
||||
FileType: "mp4",
|
||||
FileMime: "video/mp4",
|
||||
|
@ -387,7 +387,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "bridge1.jpg",
|
||||
OriginalName: "bridgeOriginal1.jpg",
|
||||
FileHash: "pcad9168fa6acc5c5c2965ddf6ec465ca42fd828",
|
||||
FileModified: time.Date(2017, 2, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2017, 2, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 961851,
|
||||
FileType: "jpg",
|
||||
FileMime: "image/jpg",
|
||||
|
@ -424,7 +424,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "bridge2.jpg",
|
||||
OriginalName: "bridgeOriginal2.jpg",
|
||||
FileHash: "pcad9168fa6acc5c5c2965adf6ec465ca42fd818",
|
||||
FileModified: time.Date(2017, 2, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2017, 2, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 921858,
|
||||
FileType: "jpg",
|
||||
FileMime: "image/jpg",
|
||||
|
@ -461,7 +461,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "bridge3.jpg",
|
||||
OriginalName: "bridgeOriginal.jpg",
|
||||
FileHash: "pcad9168fa6acc5c5ba965adf6ec465ca42fd818",
|
||||
FileModified: time.Date(2017, 2, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2017, 2, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 921851,
|
||||
FileType: "jpg",
|
||||
FileMime: "image/jpg",
|
||||
|
@ -498,7 +498,7 @@ var FileFixtures = map[string]File{
|
|||
FileName: "bridge.mp4",
|
||||
OriginalName: "bridgeOriginal.mp4",
|
||||
FileHash: "pcad9168fa6acc5c5ba965adf6ec465ca42fd819",
|
||||
FileModified: time.Date(2017, 2, 6, 2, 6, 51, 0, time.UTC),
|
||||
ModTime: time.Date(2017, 2, 6, 2, 6, 51, 0, time.UTC).Unix(),
|
||||
FileSize: 921851,
|
||||
FileType: "mp4",
|
||||
FileMime: "image/mp4",
|
||||
|
|
|
@ -69,22 +69,22 @@ func TestFile_ShareFileName(t *testing.T) {
|
|||
func TestFile_Changed(t *testing.T) {
|
||||
var deletedAt = time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC)
|
||||
t.Run("different modified times", func(t *testing.T) {
|
||||
file := &File{Photo: nil, FileType: "jpg", FileSize: 500, FileModified: time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC)}
|
||||
file := &File{Photo: nil, FileType: "jpg", FileSize: 500, ModTime: time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC).Unix()}
|
||||
time := time.Date(2020, 01, 15, 0, 0, 0, 0, time.UTC)
|
||||
assert.Equal(t, true, file.Changed(500, time))
|
||||
})
|
||||
t.Run("different sizes", func(t *testing.T) {
|
||||
file := &File{Photo: nil, FileType: "jpg", FileSize: 600, FileModified: time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC)}
|
||||
file := &File{Photo: nil, FileType: "jpg", FileSize: 600, ModTime: time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC).Unix()}
|
||||
time := time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC)
|
||||
assert.Equal(t, true, file.Changed(500, time))
|
||||
})
|
||||
t.Run("no change", func(t *testing.T) {
|
||||
file := &File{Photo: nil, FileType: "jpg", FileSize: 500, FileModified: time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC)}
|
||||
file := &File{Photo: nil, FileType: "jpg", FileSize: 500, ModTime: time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC).Unix()}
|
||||
time := time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC)
|
||||
assert.Equal(t, false, file.Changed(500, time))
|
||||
})
|
||||
t.Run("deleted", func(t *testing.T) {
|
||||
file := &File{Photo: nil, FileType: "jpg", FileSize: 500, FileModified: time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC), DeletedAt: &deletedAt}
|
||||
file := &File{Photo: nil, FileType: "jpg", FileSize: 500, ModTime: time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC).Unix(), DeletedAt: &deletedAt}
|
||||
time := time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC)
|
||||
assert.Equal(t, true, file.Changed(500, time))
|
||||
})
|
||||
|
@ -97,7 +97,7 @@ func TestFile_Create(t *testing.T) {
|
|||
assert.Error(t, file.Create())
|
||||
})
|
||||
t.Run("file already exists", func(t *testing.T) {
|
||||
file := &File{PhotoID: 123, FileType: "jpg", FileSize: 500, FileModified: time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC)}
|
||||
file := &File{PhotoID: 123, FileType: "jpg", FileSize: 500, ModTime: time.Date(2019, 01, 15, 0, 0, 0, 0, time.UTC).Unix()}
|
||||
file.Create()
|
||||
assert.Error(t, file.Create())
|
||||
})
|
||||
|
|
|
@ -119,7 +119,7 @@ func (t *Detector) loadModel() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
log.Infof("nsfw: loading model from %s", txt.Quote(filepath.Base(t.modelPath)))
|
||||
log.Infof("nsfw: loading %s", txt.Quote(filepath.Base(t.modelPath)))
|
||||
|
||||
// Load model
|
||||
model, err := tf.LoadSavedModel(t.modelPath, t.modelTags, nil)
|
||||
|
|
|
@ -45,7 +45,7 @@ func (m *Files) Init() error {
|
|||
|
||||
// Ignore tests of a file requires indexing, file name must be relative to the originals path.
|
||||
func (m *Files) Ignore(fileName string, modTime time.Time, rescan bool) bool {
|
||||
timestamp := modTime.Round(time.Second).Unix()
|
||||
timestamp := modTime.Unix()
|
||||
|
||||
m.mutex.Lock()
|
||||
defer m.mutex.Unlock()
|
||||
|
|
|
@ -134,6 +134,12 @@ func (ind *Index) Start(opt IndexOptions) map[string]bool {
|
|||
return result
|
||||
}
|
||||
|
||||
done[fileName] = true
|
||||
|
||||
if !fs.FileExt.Media(fileName) {
|
||||
return nil
|
||||
}
|
||||
|
||||
mf, err := NewMediaFile(fileName)
|
||||
|
||||
if err != nil {
|
||||
|
@ -141,8 +147,6 @@ func (ind *Index) Start(opt IndexOptions) map[string]bool {
|
|||
return nil
|
||||
}
|
||||
|
||||
done[fileName] = true
|
||||
|
||||
if ind.files.Ignore(relName, mf.modTime, opt.Rescan) {
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -84,7 +84,7 @@ func (ind *Index) MediaFile(m *MediaFile, o IndexOptions, originalName string) (
|
|||
fileRoot, fileBase, filePath, fileName := m.PathNameInfo()
|
||||
|
||||
logName := txt.Quote(fileName)
|
||||
fileSize, fileModified, err := m.Stat()
|
||||
fileSize, modTime, err := m.Stat()
|
||||
|
||||
if err != nil {
|
||||
err := fmt.Errorf("index: %s not found", logName)
|
||||
|
@ -152,10 +152,10 @@ func (ind *Index) MediaFile(m *MediaFile, o IndexOptions, originalName string) (
|
|||
} else {
|
||||
photoQuery = entity.UnscopedDb().First(&photo, "id = ?", file.PhotoID)
|
||||
|
||||
fileChanged = file.Changed(fileSize, fileModified)
|
||||
fileChanged = file.Changed(fileSize, modTime)
|
||||
|
||||
if fileChanged {
|
||||
log.Debugf("index: file was modified (new size %d, old size %d, new date %s, old date %s)", fileSize, file.FileSize, fileModified, file.FileModified)
|
||||
log.Debugf("index: file was modified (new size %d, old size %d, new timestamp %d, old timestamp %d)", fileSize, file.FileSize, modTime.Unix(), file.ModTime)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -525,10 +525,10 @@ func (ind *Index) MediaFile(m *MediaFile, o IndexOptions, originalName string) (
|
|||
file.FileName = fileName
|
||||
file.FileHash = fileHash
|
||||
file.FileSize = fileSize
|
||||
file.FileModified = fileModified
|
||||
file.FileType = string(m.FileType())
|
||||
file.FileMime = m.MimeType()
|
||||
file.FileOrientation = m.Orientation()
|
||||
file.ModTime = modTime.Unix()
|
||||
|
||||
if photoExists {
|
||||
if err := photo.Save(); err != nil {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package query
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/photoprism/photoprism/internal/entity"
|
||||
|
@ -112,28 +111,19 @@ func IndexedFiles() (result FileMap, err error) {
|
|||
|
||||
type Files struct {
|
||||
FileName string
|
||||
Modified int64
|
||||
ModTime int64
|
||||
}
|
||||
|
||||
var files []Files
|
||||
|
||||
var sql string
|
||||
sql := "SELECT file_name, mod_time FROM files"
|
||||
|
||||
switch DbDialect() {
|
||||
case MySQL:
|
||||
sql = "SELECT file_name, UNIX_TIMESTAMP(file_modified) AS modified FROM files"
|
||||
case SQLite:
|
||||
sql = "SELECT file_name, strftime('%s',file_modified) AS modified FROM files"
|
||||
default:
|
||||
return result, fmt.Errorf("unknown sql dialect: %s", DbDialect())
|
||||
}
|
||||
|
||||
if err := Db().Raw(sql).Scan(&files).Error; err != nil {
|
||||
if err := UnscopedDb().Raw(sql).Scan(&files).Error; err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
for _, row := range files {
|
||||
result[row.FileName] = row.Modified
|
||||
result[row.FileName] = row.ModTime
|
||||
}
|
||||
|
||||
return result, err
|
||||
|
|
|
@ -112,6 +112,48 @@ var FileExt = FileExtensions{
|
|||
".json": TypeJson,
|
||||
}
|
||||
|
||||
func (m FileExtensions) Media(name string) bool {
|
||||
if name == "" {
|
||||
return false
|
||||
}
|
||||
|
||||
ext := strings.ToLower(filepath.Ext(name))
|
||||
|
||||
fileType, ok := m[ext]
|
||||
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
|
||||
switch fileType {
|
||||
case TypeJpeg, TypePng, TypeGif, TypeTiff, TypeBitmap, TypeRaw, TypeHEIF, TypeMov, TypeMP4, TypeAvi:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
func (m FileExtensions) Sidecar(name string) bool {
|
||||
if name == "" {
|
||||
return false
|
||||
}
|
||||
|
||||
ext := strings.ToLower(filepath.Ext(name))
|
||||
|
||||
fileType, ok := m[ext]
|
||||
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
|
||||
switch fileType {
|
||||
case TypeAAE, TypeXML, TypeYaml, TypeToml, TypeJson, TypeText, TypeMarkdown:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
func (m FileExtensions) Known(name string) bool {
|
||||
if name == "" {
|
||||
return false
|
||||
|
|
Loading…
Reference in New Issue
Block a user