]> git.gir.st - subscriptionfeed.git/blob - README.md
more TODOs
[subscriptionfeed.git] / README.md
1 # Unnamed Youtube Frontend
2
3 Note: this is a work in progress, still unreleased software. Feel free to look around, but keep in mind that this repository will move servers for its public release.
4
5 Contributors wanted! Please send me an email (see commit log) or contact `girst` on irc.freenode.net (hanging out in `#invidious` for now)
6
7 Test Instance: http://delta.gir.st:8000/ (will move in the future)
8
9 TODO:
10 - webhook: as blueprint; main app looks in envvar/config what to load?
11 - reddit blueprint:
12 - pin/hide videos (linking their reddit comments)
13 - abstract database access
14 we want to be able to choose between at least sqlite and postgres
15 - implement 'dangerous' functions as disablable blueprint
16 - search through invidious-api
17 - proxy for subtitles, hls/dash manifests, ...
18 - subtitles on /watch
19 - hls.js for livestreams
20 - proxy for geolocked videos?
21 - modern css frontend (flexbox)
22 - document all the things
23 - quality of life improvements:
24 - asynchronically call update-subs and pull-subs on subscribing, iff necessary
25 - get_video_info on incoming websub-webhook to get exact published date
26 - development-friendly error handling:
27 - log unkown info/endcards to file
28 - save get_video_info/reddit.json/etc with traceback
29 - proper support for sponsorblock (cached db?)
30 - cleanups:
31 - remove jsonify()
32 - purge magic strings (e.g guest token)
33 - fix all the TODOs and XXXs
34 - clean up login stuff
35 https://flask-login.readthedocs.io/en/latest/
36 https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-v-user-logins
37 - jinja2: for/else
38 - welcome message: maybe make dismissable, show on all pages?
39 - find a name!
40 - /channel/UE.../videos 404s
41 - reddit.j2: titles are double-html-escaped
42
43 stuff to look at:
44 - app.config.from_pyfile('the-config.cfg')
45 NOTE: this will not work for the non-python/non-flask parts
46
47 wishlist:
48 - proxy googlevideo (and probably thumnails) responses
49
50 # Installation
51
52 see INSTALL file
53
54 # Usage
55
56 Since user authentication is not yet implemented, users are for now identified by a randomized token. To "log in", just visit `/feed/subscriptions?token=....`. at the bottom, click 'Manage Subscriptions' and paste the UC...-URLs of channels you want to subscribe to.
57
58 If no token is specified, it defaults to `guest`. Since this is a readonly account, you can populate it by directly writing into the database:
59
60 first, prepare a file (guest.csv) of channel ids like so:
61 UCxxxxxxxxxxxxxxxxxxxxxxxx,guest,channel
62 then from the sqlite3 console, issue:
63 .mode csv
64 .import guest.csv subscriptions
65
66
67 # Notes
68 - caching external api requests
69 currently using in-memory-backend, which is purged every 10minutes. a real installation should use redis, which should scale better and handle purging for us.
70 the in-memory cache conflicts with gunicorn's worker model: which is a sepreate process for each request. switch to mulitple gthreads on a single worker to avoid getting the cache torn down after every request (note that threads may leak memory, if my observations from $dayjob are still valid).
71 - neater sqlite output:
72 .mode column
73 .headers on
Imprint / Impressum