Commit graph

116 commits

Author SHA1 Message Date
7f1120fd47
Select MP4 audio streams only (experimental)
The filter used to select the stream with the highest bitrate, but this
may result in a stream with a codec/container that is not supported by
all podcast clients, such as WEBM. Select the (almost always available)
highest stream using the MP4 container instead.
2023-01-29 14:27:47 +01:00
371b758962 Strip parameters from MIME types
Some podcast clients are scared of them and they are not really
necessary either.
2022-12-31 14:32:58 +01:00
2cd756254b
Fix typo 2022-12-30 11:17:30 +01:00
b7a923c918
Bump the version to 0.3.0 2022-12-24 13:31:27 +01:00
6284f6327a
Update the changelog 2022-12-24 13:31:09 +01:00
4244fbc6d2
Bump dependencies; cargo update 2022-12-24 13:22:54 +01:00
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
a6c9275d93
Add more channel & item metadata
This includes categories (from hashtags), descriptions and keywords.
2022-12-23 22:17:56 +01:00
cd831a5145
Update documentation 2022-12-23 22:17:56 +01:00
a855c98399
Always apply limit after filtering successful streams 2022-12-23 22:17:56 +01:00
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
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
94121c0828
Apply a default item limit of 50 2022-12-23 22:17:55 +01:00
8e73deb042
Mention YouTube support in the public documentation 2022-12-23 22:17:55 +01:00
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
59e1f8a987
Add first version of the YouTube back-end 2022-12-23 22:17:52 +01:00
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
32040f3b0f
Cargo update 2022-10-17 19:51:33 +02:00
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
fa8fc40b58
Add missing trait derives on back-end types 2022-08-15 21:07:53 +02:00
101df7d486
Add missing/fix cache-related comments 2022-08-15 20:24:13 +02:00
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
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
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
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
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
5cb476c7e2 Cargo update 2022-08-12 09:53:29 +02:00
01ca8165e1 Fix string type 2022-08-12 09:52:23 +02:00
45cb7faed9
Cargo update 2022-07-17 16:29:36 +02:00
8e77e35690
Add missing error documentation; tweak messages 2022-06-05 21:58:02 +02:00
e585a8cf59
Fix (doc)test failure 2022-06-05 20:56:17 +02:00
9ae7ea8eb4
Simplify launching Rocket 2022-06-05 20:54:48 +02:00
679a73ab63
Refactor limit handling to be more readable 2022-05-28 09:29:31 +02:00
45fca01e27
Fix typo in the changelog 2022-05-27 23:01:26 +02:00
61db7c4b76
Update the changelog 2022-05-27 22:59:29 +02:00
8c0bfd766a
Bump the version to 0.2.0 2022-05-27 22:59:29 +02:00
27a40b1a91
Increase TTL for redirect URI to 24 hours 2022-05-27 22:59:28 +02:00
dafcdc009b Merge pull request 'Implement paging' (#9) from 2-implement-paging into main
Reviewed-on: #9
2022-05-27 22:50:51 +02:00
0701088fbc
Update the documentation 2022-05-27 22:47:52 +02:00
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
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
09ee0b9ba9
Make default_file_type functions const 2022-05-27 22:39:53 +02:00
10bbd9b495
Cargo update 2022-05-26 22:12:31 +02:00
cde2a34e91
Fix documentation 2022-05-26 22:12:01 +02:00
11c78a6cc8
Drop the get_ prefix for functions 2022-05-26 21:25:37 +02:00
11b32acfb4
Use an URL parser for the URL passed to youtube-dl 2022-05-26 21:23:38 +02:00
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
b4c0188fba
Drop some unnecessary bloat/unused crates 2022-05-26 20:40:18 +02:00
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
a67df934bf
Enable some more lints; fix clippy issues 2022-05-26 20:03:44 +02:00