mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 16:57:55 +00:00
107 lines
4.4 KiB
Plaintext
107 lines
4.4 KiB
Plaintext
= Multimedia archiving
|
|
:toc:
|
|
|
|
More like offline delivery, really.
|
|
Just wait for the task to complete and you have your videos, pictures, music, and whatever questionable files you want to download.
|
|
It's a nice offline repository for it especially that internet usually randomly disconnects so that's nice while I still have something working, yeah?
|
|
|
|
|
|
|
|
|
|
== Project structure
|
|
|
|
The following listing block shows the files and folders that this project should have.
|
|
|
|
[source, tree]
|
|
----
|
|
./modules/nixos/tasks/multimedia-archive/
|
|
├── data/
|
|
├── scripts/
|
|
├── default.nix
|
|
└── README.adoc
|
|
----
|
|
|
|
Some points of interests include...
|
|
|
|
* link:./data/[`./data/`] contains a bunch of data (i.e., jobs for various services).
|
|
This is used to easily import them from a process that is used to externally generate them.
|
|
Some of the data may have a schema available (e.g., link:./data/jobs.schema.json[`./data/jobs.schema.json`] for the jobs database).
|
|
|
|
* link:./scripts/[`./scripts/`] contains a bunch of scripts specific for this tasks.
|
|
Mainly, it contains scripts to generate data found in `./data/` such as link:./scripts/create-jobs-from-newpipe-db[a script that is used to generate a jobs database suitable for this task from a NewPipe database].
|
|
|
|
* link:./default.nix[`./default.nix`], the entry point for this module.
|
|
|
|
|
|
|
|
|
|
[#integrating-with-newpipe-subscriptions]
|
|
== Integrating with Newpipe subscriptions
|
|
|
|
In this task, I usually just download videos from YouTube.
|
|
While I could note every preferred creator manually, I could automate them by getting a list of subscriptions from my Newpipe config which I use surprisingly more often than I thought.
|
|
This is done by running the link:./scripts/create-jobs-from-newpipe-db[`./scripts/create-jobs-from-newpipe-db`] script and specifying the exported Newpipe database (as a ZIP file).
|
|
|
|
[CAUTION]
|
|
====
|
|
Please don't run the task with all of the subscriptions.
|
|
You should select only a few categories and clean them up.
|
|
====
|
|
|
|
[source, sh]
|
|
----
|
|
./scripts/create-jobs-from-newpipe-db.py ~/Downloads/NewPipeData-20220714_185126.zip
|
|
----
|
|
|
|
You can run the script with the `-h` flag for more information.
|
|
There are nifty things you can do with the script.
|
|
Such as the following code block which you can interactively select which folders to export.
|
|
|
|
[source, sh]
|
|
----
|
|
./scripts/create-jobs-from-newpipe-db.py ~/Downloads/NewPipeData-20220714_185126.zip --list-categories \
|
|
| fzf --multi --prompt "Choose which categories to export " \
|
|
| ./scripts/create-jobs-from-newpipe-db.py ~/Downloads/NewPipeData-20220714_185126.zip -o ./newpipe-db.json
|
|
----
|
|
|
|
Remember the larger the list, the larger the chances for a throttling.
|
|
Thus, it is heavily encouraged that you clean up your list (and/or get good at organizing your categories) before activating the updated version.
|
|
|
|
|
|
|
|
|
|
== Exporting a jobset with OPML
|
|
|
|
There is also an easy way to export a jobset from OPML with link:./scripts/create-jobs-from-rss-opml.py[`./scripts/create-jobs-from-rss-opml.py`].
|
|
The script should have similar interface with the featured script from <<integrating-with-newpipe-subscriptions>>.
|
|
|
|
Here's an basic example of using the script.
|
|
|
|
[source, sh]
|
|
----
|
|
./scripts/create-jobs-from-rss-opml.py ~/Downloads/MyThunderbirdFeeds-Blogs\ &\ News Feeds.opml
|
|
----
|
|
|
|
Take note there are assumptions to the exported subscription list.
|
|
|
|
- The folder structure is assumed from the outline.
|
|
|
|
- Any `<outline>` element with the `title`/`text` attribute is considered valid and as part of the hierarchy.
|
|
Otherwise, it is assumed they'll be in a fallback category within the outline.
|
|
|
|
- The category list is also assumed from the outline, only with the direct children of valid `<outline>` elements. footnote:[The `category` attribute from the RSS nodes is barely taken care of by most of the applications I use. WHY!?!]
|
|
|
|
- Categories are also extracted from the `category` attribute of each RSS node.
|
|
Similarly, it only extracts the head of each category hierarchy (e.g., `Computers` for `/Computers/Science`, `World` for `/World/Countries/Philippines`).
|
|
|
|
Similar to the Newpipe database script, you can do some nifty things with the script.
|
|
Here's the same example from the previous featured script.
|
|
|
|
[source, sh]
|
|
----
|
|
./scripts/create-jobs-from-rss-opml.py ~/Downloads/MyThunderbirdFeeds-Blogs\ &\ News Feeds.opml -l \
|
|
| fzf --multi --prompt "Choose which categories to export " \
|
|
| ./scripts/create-jobs-from-rss-opml.py ~/Downloads/MyThunderbirdFeeds-Blogs\ &\ News Feeds.opml
|
|
----
|
|
|