Files
photoassistant/TODO
2022-01-20 14:18:27 +11:00

119 lines
6.4 KiB
Plaintext

## GENERAL
* for below.. make Options( request )
- know that a view is a "path", dont rely on orig_url
- remove all "Options()" that are not set by a user-choice in the F/E and just make sure new "Options" sets all defaults as needed
-- viewlist can work out new view_eids server side, and pass them back as json data
- can consider an optim-- new_view page makes calls to viewlist to ADD json data only, so only trigger a new "viewlist" if we dont have data for that part of the eids
* going forward into search page (and probably all POSTs) does not work
don't render_template instead do a redirect to a GET of the new, or list? for del...
files.py:@app.route("/view/<id>", methods=["POST"])
- first pass -- fails on storage in prod (view_eids was NONE, but prefs had content, odd... ALSO in dev, it did have a list but the img we were viewing was not in the list!
files.py:@app.route("/viewlist", methods=["POST"])
-- this will need a total rewrite for viewer to handle fullscreen across offset/size boundaries so fix that instead
job.py:@app.route("/jobs", methods=["GET", "POST"])
job.py:@app.route("/job/<id>", methods=["GET","POST"])
-- these ned to store 'job prefs' somewhere...
files.py:@app.route("/fix_dups", methods=["POST"])
* optim to not run_ai_on_* for scan, needs to make sure last run_ai_on actually ran/worked - might have failed (or in my case was marked stale and I cancelled it)
-- also the case for get file details though, need to make sure last one was completed
* per file you could select an unknown face and add it as a ref img to an existing person, or make a new person and attach?
* [DONE] order/ find face with largest size and at least show that as unmatched
- could also try to check it vs. other faces, if it matches more than say 10? we offer it up as a required ref img, then cut that face (with margin) out and use it is a new ref image / person
* on viewer: allow face to be used to create person, add to existing person, and allow 'ignore', mark as 'not a face', etc. -> all into DB
- so need face 'treatment' -> could be matched via face_refimg_link, but also could be 'ignore' or 'not a face', in each case we could exclude those faces from
matching for the future, and reporting on matches, etc.
- context-menu with rects on a canvas
https://stackoverflow.com/questions/31601393/create-context-menu-using-jquery-with-html-5-canvas
- also allow joblog search from the viewer for that file...
* delete folder
* allow joblog search
* in Fullscreen mode and next/prev dropped out of FS when calling /viewlist route
-- only way to fix this, is for when we POST to viewlist, it returns json, and we never leave /view/X
-- then we can stay on-page, and stay in FS and then just call ViewImageOrVide()
GUI overhaul?
* on a phone, the files.html page header is a mess "Oldest.." line is too large to fit on 1 line (make it a hamburger?)
- searched for text overlaps buttons above and below
- < 10 files > is subsequently not centered
- the fodler/bin icons might be best below search then? (and on same line as XS/S, etc.)
* when search, have a way to hide deleted files
-> not sure where to put this on GUI, its so busy...
* metadata at folder level with file level to add more richness
- store in DB? or store in hidden file (or both)... IF it is outside the DB, then I can 'rebuild' the DB at anytime from scratch
* dont allow me to stupidly move a folder to itself
* get build process to create a random string for secret for PROD, otherwise use builtin for dev
* deal with changing/adding/removing a path in settings
* dup issues:
* when we have lots of dups, sort the directories by alpha so its consistent when choosing
* auto-detect has 0 choices to keep 0 files -- not sure what that was about really
* comment your code -> only html files remaining
* read that guys face matching / clustering / nearest neighbour examples, for a whole new AI capability
https://www.pyimagesearch.com/2018/07/09/face-clustering-with-python/
* fix up logging in general
* support animated gifs in html5 canvas
* think about security - in job_mgr anywhere I can os.replace/remove NEED to protect, etc
## DB
* Dir can have date in the DB, so we can do Oldest/Newest dirs in Folder view
### BACKEND
* revisit SymlinkName() and make it simpler (see comment in shared.py)
*** Need to use thread-safe sessions per Thread, half-assed version did not work
Admin
-> do I want to have admin roles/users?
-> purge deleted files (and associated DB data) needs a dbox or privs
### AI
* faces per file (need a threshold for too many? OR
* consider size of bbox of face / 'high-quality' faces -- if face is too small in image, dont match it
### UI
* viewer needs to allow toggle to scan_model (and prob. right-click on file... AI (with CNN) AI (with hog)
- make the form-select AI_Model actually do the change (but need more mem on mara really)
For AI / rescan:
way to override per file:
the model used [partial - UI done, need mem on mara]
the threshold used?
maybe on the per file you could select an unknown face and add it as a ref img to a existing person, or make a new person and attach?
file details is sort of crap - only works on import path
- probably better to have a different 'view', e.g. folders/flat/detailed
timelineview? (I think maybe sunburst for large amounts of files, then maybe something more timeline-series for drilling in?)
(vertical timeline, date has thumbnails (small) horizontally along
a page, etc.?
https://www.highcharts.com/docs/chart-and-series-types/timeline-series
https://www.highcharts.com/demo/sunburst
https://www.highcharts.com/demo/heatmap
https://www.highcharts.com/demo/packed-bubble-split
### SORTER
* exif processing?
* location stuff - test a new photo from my camera out
-- image is in dir, need to look at exifread output
### FUTURE:
* can emby use nfo for images (for AI/tags?)
-NO sadly