121 lines
6.0 KiB
Plaintext
121 lines
6.0 KiB
Plaintext
## GENERAL
|
|
* search allow noo
|
|
|
|
* [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...
|
|
|
|
* re-think unmatched faces...
|
|
(the view needs a orig_url and pa_user_state to support viewer for this)
|
|
|
|
* refimg locns can lose an array idx of 0 always.
|
|
|
|
* could get better AI optim, by keeping track of just new files since scan (even if we did this from the DB),
|
|
then we could just feed those eid's explicitly into a 'run_ai_on_new_files' :) -- maybe particularly
|
|
if count('new files') < say 1000 do eids, otherwise do path AND no new refimgs
|
|
|
|
* DECIDED TO DITCH multiple Dirs per Path, just adds complexity and not needed - will address BUG-60
|
|
|
|
* delete folder
|
|
|
|
* allow joblog search
|
|
|
|
* back button will fail if we do these POSTs:
|
|
job.py:@app.route("/jobs", methods=["GET", "POST"])
|
|
job.py:@app.route("/job/<id>", methods=["GET","POST"])
|
|
-- these need to store 'job prefs' somewhere... (extras?)
|
|
files.py:@app.route("/fix_dups", methods=["POST"])
|
|
???
|
|
|
|
* browser back/forward buttons dont work -- use POST -> redirect to GET
|
|
* viewlist
|
|
- can consider a POST every time we next/prev in viewer --> set only, to just update the OPT.current, every time you go back into the viewer, then it would go the last image viewed, rather than the first image on the last page you viewed...
|
|
- 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
|
|
- need some sort of clean-up of pa_user_state -- I spose its triggered by browser session, so maybe just after a week is lazy/good enough
|
|
-- pa_user_state has last_used as a timestamp so can be used to delete old entries
|
|
|
|
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
|
|
|