Commit Graph

64 Commits

Author SHA1 Message Date
Paul van Tilburg 2cd756254b
Fix typo 2022-12-30 11:17:30 +01:00
Paul van Tilburg b7a923c918
Bump the version to 0.3.0 2022-12-24 13:31:27 +01:00
Paul van Tilburg 6284f6327a
Update the changelog 2022-12-24 13:31:09 +01:00
Paul van Tilburg 4244fbc6d2
Bump dependencies; cargo update 2022-12-24 13:22:54 +01:00
Paul van Tilburg bec7fa850c Merge pull request 'Implement YouTube back-end' (#12) from 5-add-youtube-backend into main
Add support for creating podcast feeds of YouTube channels and playlists.

* Add the YouTube back-end
* Update the documentation
* Use the MIME DB to determine the download URL file extensions

Reviewed-on: #12
2022-12-24 13:19:51 +01:00
Paul van Tilburg a6c9275d93
Add more channel & item metadata
This includes categories (from hashtags), descriptions and keywords.
2022-12-23 22:17:56 +01:00
Paul van Tilburg cd831a5145
Update documentation 2022-12-23 22:17:56 +01:00
Paul van Tilburg a855c98399
Always apply limit after filtering successful streams 2022-12-23 22:17:56 +01:00
Paul van Tilburg 4177e1c6f9
Set updated at timestamp for videos
Since the metadata only provides a date, set the time part to 12:00:00
(UTC).

Also fix up the deprecation warning for the creation of the initial zero
last build timestamp.
2022-12-23 22:17:56 +01:00
Paul van Tilburg 9f88f4f9a3
Bump the depend on ytextract
This newer version is able to correctly parse the date of streamed
videos.

Also use the full `ytextract::Video` structs which should have have all
the metadata.
2022-12-23 22:17:55 +01:00
Paul van Tilburg 94121c0828
Apply a default item limit of 50 2022-12-23 22:17:55 +01:00
Paul van Tilburg 8e73deb042
Mention YouTube support in the public documentation 2022-12-23 22:17:55 +01:00
Paul van Tilburg 3a3fbc96f4
Use a MIME DB to determine the download URL file extensions
* Also apply it to the default MIME type for Mixcloud posts
* Add a dependency on the `mime_db` crate
2022-12-23 22:17:55 +01:00
Paul van Tilburg 59e1f8a987
Add first version of the YouTube back-end 2022-12-23 22:17:52 +01:00
Paul van Tilburg 66452cc96d
Add more lints
Not enabling the `trivial_casts` lint, because the `uri!` seems to
trigger it.
2022-10-17 20:10:06 +02:00
Paul van Tilburg 32040f3b0f
Cargo update 2022-10-17 19:51:33 +02:00
Paul van Tilburg bde6135f70
Use public URL instead of URL in configuration
Change the name of the `url` config key to `public_url` to be more clear
about what it is for.
2022-10-17 19:51:24 +02:00
Paul van Tilburg fa8fc40b58
Add missing trait derives on back-end types 2022-08-15 21:07:53 +02:00
Paul van Tilburg 101df7d486
Add missing/fix cache-related comments 2022-08-15 20:24:13 +02:00
Paul van Tilburg 76f1e01657
Make channel/item image optional; change item length type
This allows more back-ends to be compatible.
2022-08-15 20:22:15 +02:00
Paul van Tilburg 49e0e47ba2
Introduce enum and enum dispatching for backends
This way handlers don't need to do case matching on backend ID strings
anymore.

* Rename `backend` to `backend_id` where we have a backend ID
* Add `get` function and `Backends` enum to the `backend` module
* Add a depend on the `enum_dispatch` crate
2022-08-15 20:21:42 +02:00
Paul van Tilburg cb40f6b192
Split off feed generation to feed module
Also rename the handler function names so they don't conflict with
(current and future) modules.
2022-08-14 10:16:05 +02:00
Paul van Tilburg bc9a9e307d
Add back-end abstraction; refactor Mixcloud back-end (closes: #10)
* Add a `backend` module `Backend` trait and necessary abstract types
* Refactor handlers to use the back-end abstraction
* Directly serialize to URLs where necessary in Mixcloud back-end
* Require `serde` feature for the url crate
2022-08-14 09:03:58 +02:00
Paul van Tilburg 218e714b03 Bump dependency on cached to 0.38.0
This fixes the unused `*_prime_cache` compile warnings.
2022-08-12 09:53:56 +02:00
Paul van Tilburg 5cb476c7e2 Cargo update 2022-08-12 09:53:29 +02:00
Paul van Tilburg 01ca8165e1 Fix string type 2022-08-12 09:52:23 +02:00
Paul van Tilburg 45cb7faed9
Cargo update 2022-07-17 16:29:36 +02:00
Paul van Tilburg 8e77e35690
Add missing error documentation; tweak messages 2022-06-05 21:58:02 +02:00
Paul van Tilburg e585a8cf59
Fix (doc)test failure 2022-06-05 20:56:17 +02:00
Paul van Tilburg 9ae7ea8eb4
Simplify launching Rocket 2022-06-05 20:54:48 +02:00
Paul van Tilburg 679a73ab63
Refactor limit handling to be more readable 2022-05-28 09:29:31 +02:00
Paul van Tilburg 45fca01e27
Fix typo in the changelog 2022-05-27 23:01:26 +02:00
Paul van Tilburg 61db7c4b76
Update the changelog 2022-05-27 22:59:29 +02:00
Paul van Tilburg 8c0bfd766a
Bump the version to 0.2.0 2022-05-27 22:59:29 +02:00
Paul van Tilburg 27a40b1a91
Increase TTL for redirect URI to 24 hours 2022-05-27 22:59:28 +02:00
Paul van Tilburg dafcdc009b Merge pull request 'Implement paging' (#9) from 2-implement-paging into main
Reviewed-on: #9
2022-05-27 22:50:51 +02:00
Paul van Tilburg 0701088fbc
Update the documentation 2022-05-27 22:47:52 +02:00
Paul van Tilburg c13ce71c69
Add feed item limit support
* The feed item limit defaults to the default page size (50) if not
  provided
* Move caching from response to URL fetch results; add helper functions
* Add a helper function to set the paging query of an URL
* Modify paging so we don't retrieve more than the feed item limit
2022-05-27 22:47:52 +02:00
Paul van Tilburg 78fc93fedf
Retrieve all pages by following the next URL
* Derserialize the paging information
* Parse each next URL; handle URL parse errors
* Use a default page size of 50; pass offset 0 to count by item index
2022-05-27 22:47:52 +02:00
Paul van Tilburg 09ee0b9ba9
Make default_file_type functions const 2022-05-27 22:39:53 +02:00
Paul van Tilburg 10bbd9b495
Cargo update 2022-05-26 22:12:31 +02:00
Paul van Tilburg cde2a34e91
Fix documentation 2022-05-26 22:12:01 +02:00
Paul van Tilburg 11c78a6cc8
Drop the get_ prefix for functions 2022-05-26 21:25:37 +02:00
Paul van Tilburg 11b32acfb4
Use an URL parser for the URL passed to youtube-dl 2022-05-26 21:23:38 +02:00
Paul van Tilburg 451c07a09e
Implement caching (closes: #3)
* Enable the `async` feature for the `cached` crate
* Make the types that we cache implement `Clone`
* Rename the argument of mixcloud::redirect_url` because of this issue:
  https://github.com/jaemk/cached/issues/114
2022-05-26 21:20:10 +02:00
Paul van Tilburg b4c0188fba
Drop some unnecessary bloat/unused crates 2022-05-26 20:40:18 +02:00
Paul van Tilburg 3ec1879932
Replace own youtube-dl impl by youtube_dl crate (refs: #8)
* Drop the depend on the `tokio` crate, because we don't need to
  run our own processes anymore.
* Remove unnecessary error variant for command failure
2022-05-26 20:38:51 +02:00
Paul van Tilburg a67df934bf
Enable some more lints; fix clippy issues 2022-05-26 20:03:44 +02:00
Paul van Tilburg b53365a293
Implement proper error logging and handling (closes: #6)
* Use the `thiserror` crate to make our own error type
* Implement Rocket's `Responder` type for the error type
* Adjust all methods to use the error type
* Small documentation tweaks
2022-05-26 19:57:24 +02:00
Paul van Tilburg 9d1bfd8351
Add a changelog 2022-05-24 11:28:10 +02:00