Save youtube before it dies
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.9 KiB

1 year ago
  1. Youtube Disaster plan
  2. =====================
  3. YouTube is going to shit and I'd like to archive as many videos as possible before it shits the bed.
  4. This web application allows users to scrape channels/playlists/videos that they enjoy and request specific videos to be downloaded (with subs, description, metadata, and even current sponsorblock info).
  5. To handle the creators who might have some bangers but don't always bang, you can also mark videos as hidden to exclude them from your search results so you can just go through videos you haven't decided on yet.
  6. TODO
  7. ----
  8. - LDAP authentication to have multi-user support for the application
  9. - Automatically download metadata for channels and playlists the user specifies
  10. - Automatically download videos which match certain criteria (from a channel/playlist/title matches a search/could get crazy with vector search since each video's title is vectorized)
  11. - Display current scraping and downloading jobs to give the user some feedback as to what is happening
  12. - Not shit UI
  13. How-to
  14. ------
  15. 1. Make a directories for the docker containers to store their database. By default the docker-compose file uses "dump/backend" and "dump/typesense".
  16. 2. Run `docker compose build && docker compose up`
  17. 3. In the frontend directory run `npm install`
  18. 4. Now the frontend just needs `npm start` to run
  19. Deploying
  20. ---------
  21. - Pray
  22. - Also you'll need to stop hardcoding the backend url in the frontend + put both typesense and the flask app behind a reverse proxy
  23. Architecture
  24. ------------
  25. The backend is a Flask app.
  26. It makes use of Python RQ+redis to create worker queues for downloading metadata and downloading videos.
  27. The docker compose file currently spawns two workers, but you can bump that number up to do more things at the same time.
  28. The search functionality is provided by typesense.
  29. The frontend is written in Vue and utilizes InstantSearch.js to provide a good search UI.