diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..2d598d8 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,13 @@ +# These are supported funding model platforms + +#github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +#patreon: # Replace with a single Patreon username +#open_collective: # Replace with a single Open Collective username +#ko_fi: # Replace with a single Ko-fi username +#tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +#community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +#liberapay: # Replace with a single Liberapay username +#issuehunt: # Replace with a single IssueHunt username +#otechie: # Replace with a single Otechie username +#lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +custom: ['https://www.buymeacoffee.com/madiele'] diff --git a/.github/workflows/rust-clippy.yml b/.github/workflows/rust-clippy.yml index a4bd946..c2b334e 100644 --- a/.github/workflows/rust-clippy.yml +++ b/.github/workflows/rust-clippy.yml @@ -37,7 +37,7 @@ jobs: continue-on-error: true - name: Upload analysis results to GitHub - uses: github/codeql-action/upload-sarif@v2 + uses: github/codeql-action/upload-sarif@v3 with: sarif_file: rust-clippy-results.sarif wait-for-processing: true diff --git a/Cargo.toml b/Cargo.toml index 836163d..17704d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,28 +14,28 @@ path = "src/main.rs" [dependencies] actix-rt = "=2.9.0" google-youtube3 = "=5.0.3" -actix-web = "=4.4.0" -async-trait = "=0.1.74" -url = { version="=2.4.1", features = ["serde"]} -futures = "=0.3.29" +actix-web = "=4.4.1" +async-trait = "=0.1.77" +url = { version="=2.5.0", features = ["serde"]} +futures = "=0.3.30" log = "=0.4.20" regex = "=1.10.2" -reqwest = { version = "=0.11.22", features = ["json"] } -serde = "=1.0.192" -serde_json = "=1.0.108" -tokio = { version = "=1.34.0", features = ["macros", "process"]} +reqwest = { version = "=0.11.23", features = ["json"] } +serde = "=1.0.195" +serde_json = "=1.0.111" +tokio = { version = "=1.35.1", features = ["macros", "process"]} uuid = { version= "=1.6.1", features = ["v4", "serde"]} genawaiter = {version = "=0.99", features = ["futures03"] } openssl = { version = "*", features = ["vendored"] } #this is here just to make cross-compiling work during github actions rss = { version = "=2.0", features = ["serde"] } eyre = "=0.6" -simple_logger = "=4.2" -redis = { version = "=0.23", features = ["tokio-comp"] } +simple_logger = "=4.3" +redis = { version = "=0.24", features = ["tokio-comp"] } mime = "=0.3.17" -cached = { version = "=0.46.1", features = ["redis_tokio"] } +cached = { version = "=0.47.0", features = ["redis_tokio"] } iso8601-duration = "=0.2.0" chrono = "=0.4.31" -feed-rs = "=1.3.0" +feed-rs = "=1.4.0" [dev-dependencies] temp-env ={ version = "=0.3.6", features = ["async_closure"] } diff --git a/Dockerfile b/Dockerfile index 30ac9d2..da49571 100644 --- a/Dockerfile +++ b/Dockerfile @@ -46,10 +46,10 @@ COPY templates/ ./templates/ RUN sh set_version.sh -RUN echo "final size of vod2pod:\n $(ls -lah /tmp/vod2pod/target/*/release/app)" - RUN cargo build --release --target "$(cat /rust_platform.txt)" +RUN echo "final size of vod2pod:\n $(ls -lah /tmp/vod2pod/target/*/release/app)" + #---------- #this step will always run on the target architecture, #so the build driver will need to be able to support runtime commands on it (es: using QEMU) diff --git a/README.md b/README.md index 7d1cb2b..ed9009b 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,14 @@ Converts a YouTube or Twitch channel into a full-blown podcast. - + ## Features - Completely converts the VoDs into a proper podcast RSS that can be listened to directly inside the client. - The VoDs are not downloaded on the server, so no need for storage while self-hosting this app. - VoDs are transcoded to MP3 192k on the fly by default, tested to be working flawlessly even on a Raspberry Pi 3-4. -- also work on standard rss podcasts feed if you want to have a lower bitrate version to save mobile data. +- also works on standard rss podcasts feed if you want to have a lower bitrate version to save mobile data. ## Limitations @@ -17,7 +17,7 @@ Converts a YouTube or Twitch channel into a full-blown podcast. ## Usage - + Just go to the root of the server es: `myserver.com` and paste the channel you want to convert to podcast and copy the generated link. @@ -92,8 +92,8 @@ then run this to delete the old version form your system (note: this will also d You can set the following environment variables: -- `TRANSCODE`: Set to "false" to disable transcoding, usefull if you only need the feeds (default: "true") -- `BITRATE`: Set the bitrate of the trascoded stream to your client (default: "192") +- `TRANSCODE`: Set to "false" to disable transcoding, usefull if you only need the feeds (default: "false") +- `MP3_BITRATE`: Set the bitrate of the trascoded stream to your client (default: "192") - `SUBFOLDER`: Set the the root path of the app, useful for reverse proxies (default: "/") - `VALID_URL_DOMAINS`: (optional) Set a comma separated list of domains urls that are allowed to be converted into RSS (defaults to yotube and twitch urls) diff --git a/docker-compose.yml b/docker-compose.yml index 5eb1bc6..70a0c2c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,9 @@ services: vod2pod: extends: api_keys - image: madiele/vod2pod-rss:latest + #change "latest" to "X.X.X" to pin a version es: "1.0.4" will force the image to use to version 1.0.4, if you do please watch the repo for updates (tutorial in README.md) + #change "latest" to "beta" if you want to test yet unreleased fixes/features (expect bugs and broken builds from time to time) + image: madiele/vod2pod-rss:latest depends_on: - redis restart: unless-stopped diff --git a/requirements.txt b/requirements.txt index d52b101..263e1b5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ # this is only used to track the version in the Dockerfile and with depend-a-bot -yt-dlp==2023.11.16 +yt-dlp==2023.12.30 diff --git a/src/provider/youtube.rs b/src/provider/youtube.rs index de792fb..2140e28 100644 --- a/src/provider/youtube.rs +++ b/src/provider/youtube.rs @@ -61,7 +61,6 @@ impl MediaProvider for YoutubeProvider { path if path.starts_with("/channel/") || path.starts_with("/user/") || path.starts_with("/c/") - || path.starts_with("/c/") || path.starts_with("/@") => { let url = find_yt_channel_url_with_c_id(&channel_url).await?;