Git Product home page Git Product logo

twitchtopodcastrss's Introduction

based on twitchRSS

TwitchToPodcastRSS

ℹ️ Also check vod2pod-rss a rewrite in rust that adds youtube support and modern UI for feed generation

converts a twitch channel in a full-blown podcast

Features:

  • completely converts the vods in a proper podcast RSS that can be listened directly inside the client (you can even disable trascoding if they support audio only m3u8 playback, podcast addict is the only app I found that has support for it), no need for the twitch app
  • the description has a clickable image that opens the vod in the twitch app
  • the vods are not downloaded on the server, this means that the episodes are only available until they get deleted from twitch (2 weeks - 2 months in general, depends on the creator settings)
  • vods are transcoded to mp3 192k on the fly by default, tested to be working flawlessly even on a raspberry pi 3.

Known issues:

  • when transcoding seeking to the last minute or so can be buggy, I have no idea why, help is welcome
  • to improve performance you can only have one ongoing transcoding of the same vod on the same client at once
  • when transcoding seeking around too fast can be buggy
  • when playing transcoded vod's mp3 it's possible to hear audio skipping 1-2 second in time every once in a while, this is caused by the connection dropping when downloading, and due to a technical limitation can't really be fixed (twitch gives a variable bitrate stream with seek data in seconds, but the clients wants a fixed bitrate stream with seek data in bytes, when converting some rounding errors cause the audio to glitch)
  • (only if transcoding is disabled) first time you ask for a feed it will take up to a minute or two for the request to go through, this is due to technical limitations. since updates are generally done in background by the podcast clients this should not be a huge limitation, just give it time. if you only listen/watch inside the twitch app or website be sure to enable links only mode to make the feed generation much faster
  • (only if transcoding is disabled) downloading only works with transcoding enabled (unless the client supports m3u8 download, which is rare)

Donations

this is a passion project, and mostly made for myself, but if you want to gift me a pizza margherita feel free!

"Buy Me A Coffee"

Usage

when you host this just add /vod/channelName to your server path and an RSS will be generated

example: myserver.com/vod/channelname

just add the link to your podcast client

transcoding

to enable transcoding just add ?transcode=true to your url

example: myserver.com/vod/channelname?transcode=True

show currently streaming

unfinished streams are not included, but if you want them to just add ?include_streaming=True to the feed URL

example: myserver.com/vod/channelname?include_streaming=True

sorting

if you use a feed reader you can order the feed by any field suppored by twitch, the list of fields to sort by can be found here in the response field section

by default it sorts by the published_at field

to enable sorting just add sort_by=[key] or/and desc=True to the URL

some examples:

to sort by views:

myserver.com/vod/channelname?sort_by=view_count

to sort by views descending:

myserver.com/vod/channelname?sort_by=view_count&desc=true

only links mode

if you only listen to the episodes in the twitch app or website you can enable the links_only=true to skip the fetching of the audio stream, doing so will make the feed generation almost instant, so it's highly raccomanded to enable the option if you don't use the included audio feed

example: myserver.com/vod/channelname?links_only=True

mixing options

to mix options just add & beetween them

example: myserver.com/vod/channelname?sort_by=view_count&desc=true&links_only=true&include_streaming=True

install with docker

before doing anything be sure to get your SECRET and CLIENT ID from twitch https://dev.twitch.tv/console

precompiled images are here for linux machines with arm64, amd64, arm/v7, i386 architectures

images for raspberry pis are included

use docker-compose with precompiled image (easiest)

git clone https://github.com/madiele/TwitchToPodcastRSS.git

cd TwitchToPodcastRSS

edit docker-compose.yml with your PORT, SECRET and CLIENT_ID (in the file you will find also optional parameters like sub_folder for use with reverse proxies, define a unique server name, and so on)

nano docker-compose.yml

save and

sudo docker-compose up -d

when you want to update:

run this inside the folder with docker-compose.yml

sudo docker-compose pull && sudo docker-compose up -d

then run this to delete the old version form your system (note: this will also delete any other unused image you have)

sudo docker system prune

pull the precompiled image from hub.docker.com

docker pull madiele/twitch_to_podcast_rss:latest

edit with PORT,SECRET and CLIENT_ID

sudo docker run -d --restart always -p <PORT>:80 -e TWITCH_SECRET="<YOUR_SECRET>" -e TWITCH_CLIENT_ID="<YOUR_CLIENT_ID>" madiele/twitch_to_podcast_rss:latest

to update kill and delete the running container and run the same commands

build it yourself (this will take a while)

git clone https://github.com/madiele/TwitchToPodcastRSS.git

cd TwitchToPodcastRSS

docker build -t TwitchToPodcastRSS .

edit with PORT,SECRET and CLIENT_ID

sudo docker run -d --restart always -p <PORT>:80 -e TWITCH_SECRET="<YOUR_SECRET>" -e TWITCH_CLIENT_ID="<YOUR_CLIENT_ID>" TwitchToPodcastRSS

install without docker

since this is a flask app most methods of deployment listed here should work too

About

the original twitchRSS has been developed by László Zeke. Later modified into TwitchToPodcastRSS by Mattia Di Eleuterio

twitchtopodcastrss's People

Contributors

dependabot[bot] avatar lzeke0 avatar madiele avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

docker-projects

twitchtopodcastrss's Issues

hosting of a public instance

While we're all waiting on lzeke0/TwitchRSS#17 to be closed, would you think about hosting your fork online, somewhere where we can all send requests to the url?

If it's too much trouble, I could do it myself, but I figure it might be less trouble for you than me.

Is transocding to MP3 realy required ?

Podcast clients seem to support AAC¹ format even if they do not support M3U8 (except podcast addict).

Won't proxying a « bare » AAC stream be enough (and probably more light on resource usage than transcoding to MP3) ?

I'm not really into audio stuff, so maybe this is a stupid question.

Wrong duration if feed is fetched while the stream is still going

if the vod is unfinished due to the streamer still being online when the client fetches updates the duration will smaller than the eventual finished stream duration

possible fix: give the option to hide unfinished streams form feed

pull requests are welcome for this issue if you can't wait for when I get around to fix it myself

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.