]> 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 - reorganize using departmental flask blueprints:
11 forces decoupling of all youtube <-> reddit and allows 3rd party extensions
12 https://flask.palletsprojects.com/en/1.1.x/tutorial/views/
13 https://exploreflask.com/en/latest/blueprints.html
14 - reddit blueprint:
15 - user should be able to subscribe to subreddits
16 - show a frontpage-like feed, pin/hide videos (linking their reddit comments)
17 - abstract database access
18 we want to be able to choose between at least sqlite and postgres
19 - implement 'dangerous' functions as disablable blueprint
20 - search through invidious-api
21 - proxy for subtitles, hls/dash manifests, ...
22 - subtitles on /watch
23 - hls.js for livestreams
24 - proxy for geolocked videos?
25 - modern css frontend (flexbox)
26 - document all the things
27 - quality of life improvements:
28 - asynchronically call update-subs and pull-subs on subscribing, iff necessary
29 - get_video_info on incoming websub-webhook to get exact published date
30 - development-friendly error handling:
31 - log unkown info/endcards to file
32 - save get_video_info/reddit.json/etc with traceback
33 - proper support for sponsorblock (cached db?)
34 - cleanups:
35 - remove jsonify()
36 - purge magic strings (e.g guest token)
37 - fix all the TODOs and XXXs
38 - clean up login stuff
39 https://flask-login.readthedocs.io/en/latest/
40 https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-v-user-logins
41 - find a name!
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