* Bumped up the line length because I fear no man
* Refactored indexing
Previously, indexing worked by collecting the video IDs of only videos
that matched indexing criteria. This new model instead stores ALL videos
for a given source, but will only _download_ videos that meet that criteria.
This lets us backfill without indexing, makes it easier to add in other
backends, lets us download one-off videos for a source that don't quite
meet criteria, you name it.
* Updated media finders to respect format filters; Added credo file
* Added scratchpad dir
* Installed Alpine
* [WIP] began integrating Tailwind and accompanying theme
* [WIP] Set up basic views for sources
* Adds new UI to media profiles page
* Removes unneeded view
* Adds options + option builder + metadata parsing for media thumbnails
* Added release-type options to media profile; built option parser for indexing operations
* Added new media_profile options to creation form; made show helper for rendering database items
* Added options for downloading/embedding metadata
* Adds option on sources to not download media (index only)
* reformatted docs
* [WIP] updated the output of VideoCollection to include playlists
* Updated source's name to collection_name; supported playlist ID/name fetching
* Hooked up collection_type to form; refactored enqueue_pending_media_downloads
* Added friendly_name to form
* Added media profile link to source view
* Updates comment
* Ensure channel detail lookup doesn't download the video - oops
* Ran the needful migrations for replacing channels with sources
* got media source test back working
* channel tasks test
* Media indexing worker test
* media tests
* Got all tests working except controller tests
* got all tests working
* Renamed Channel struct to Source
* renamed ChannelTasks
* More renaming; renamed channel details module
* Removed Channel yt-dlp module, instead throwing things in the VideoCollection module
* Renamed what looks like the last of the outstanding data