= Usecases =

- Get a list of highest rated films (top n)
- Get unrated films not seen for a long time
- Get highest rated films not seen for a long time
- Update that a film was seen
- Add/Change score of a film

= Requirements =

- SEEN file shall be next to movies
- SEEN file shall be line based
- SEEN file shall have a white space separated keyword in every line
- Allows you to store score (+ notes)
- Allows you to store video and audio quality (+ notes)

= Decisions =

== File Format ==

Use a human read and writeable file next to the film

- Use smplayers file_config database (not much activity there, unclear if patch is taken: see irc.log)
- Use sql database (heavy dependency, not editable directly in movie folder)
- Use SEEN text file

- Films are all placed in folders each
- Rating is mainly for films also available, garbage films are handled differently (just in an unrated list)

- Very handy
- Implementation done already
- Can be directly edited if needed

- Filesystem iterator needed for "database" access
- will not scale to millions of films

== IMDB Access ==

Do not reimplement or use imdb for scoring, but just as supplement for
movie information.

- Directly use IMDB for scoring
- imdb-tools (shell scripts based on curl)
- Implement something python with python-imdbpy http://www.webupd8.org/2012/03/lm-lists-imdb-information-for-your.html

- I do not want to share a full list of all movies I have seen or like
- I want to jump to any platform if desired

= Architecture =

seen will be implemented as library and (multiple) console tools.
It can be supplemented with shell scripts which additionally download
covers, imdb information and similar.

== Technologies ==

Will use boost internally for:
- Commandline arguments
- Iterating Filesystem
- Other important stuff not in C++11

Shell scripts for initializing new films, e.g. download cover
subdownloader, dlsub, or smplayer build-in functionality to download subtitles
imdb-tools for downloading imdb information

== Library ==

The library can be used to be embedded into movie players which will be
able to read and write the seen file then.

== Artifacts ==

libseen: implements all the functionality
seen-generate: ask interactively for some information to be added to the file
seen-top-movies: generate csv file which contains the top movies
seen-tips: generate a list of not seen or long not seen films which are
           good rated or unrated

= Planning =

- seen-generate
 - basic functionality 0,5h
 - add current films recently seen 0,5h
 - improvements of missing functionality, add requirements 1h
- seen-top-movies
 - Elektra integration 0,5h
 - Use configuration for how top movies, which columns (see code Elektra's generator) xh
 - iterate over all SEEN+buildup global database 2h
 - sorting scores + writeout csv 1h
 - implementing substitute to current odt 1h
- seen-tips
 - add SEEN to older films to have some test data 1h
 - implement commandline arguments (with elektra's fallback?) 1h
 - implement algorithm 1h
Fr Jul 30 13:54:24 CEST 2021
patent_button.gif valid-html401.png elektra.jpg fsfe-logo.png valid-css.png vim.gif anybrowser.gif