podpodge

所属分类:内容生成
开发工具:Scala
文件大小:55KB
下载次数:0
上传日期:2023-05-31 23:56:07
上 传 者sh-1993
说明:  将YouTube播放列表转换为纯音频RSS源,以便播客应用程序使用。
(Convert YouTube playlists to audio-only RSS feeds for podcast apps to consume.)

文件列表:
.editorconfig (146, 2023-10-08)
.jvmopts (98, 2023-10-08)
.scalafmt.conf (1123, 2023-10-08)
LICENSE (11357, 2023-10-08)
build.sbt (2832, 2023-10-08)
core (0, 2023-10-08)
core\src (0, 2023-10-08)
core\src\main (0, 2023-10-08)
core\src\main\resources (0, 2023-10-08)
core\src\main\resources\application.properties (77, 2023-10-08)
core\src\main\resources\question.png (8251, 2023-10-08)
core\src\main\scala (0, 2023-10-08)
core\src\main\scala\podpodge (0, 2023-10-08)
core\src\main\scala\podpodge\CreateEpisodeRequest.scala (379, 2023-10-08)
core\src\main\scala\podpodge\DownloadWorker.scala (3011, 2023-10-08)
core\src\main\scala\podpodge\Main.scala (840, 2023-10-08)
core\src\main\scala\podpodge\PodpodgeLogging.scala (643, 2023-10-08)
core\src\main\scala\podpodge\RssFormat.scala (2055, 2023-10-08)
core\src\main\scala\podpodge\StaticConfig.scala (611, 2023-10-08)
core\src\main\scala\podpodge\config (0, 2023-10-08)
core\src\main\scala\podpodge\config\package.scala (2961, 2023-10-08)
core\src\main\scala\podpodge\controllers (0, 2023-10-08)
core\src\main\scala\podpodge\controllers\ConfigurationController.scala (521, 2023-10-08)
core\src\main\scala\podpodge\controllers\EpisodeController.scala (4602, 2023-10-08)
core\src\main\scala\podpodge\controllers\PodcastController.scala (7245, 2023-10-08)
core\src\main\scala\podpodge\db (0, 2023-10-08)
core\src\main\scala\podpodge\db\Configuration.scala (799, 2023-10-08)
core\src\main\scala\podpodge\db\DbMigration.scala (410, 2023-10-08)
core\src\main\scala\podpodge\db\Episode.scala (987, 2023-10-08)
core\src\main\scala\podpodge\db\Podcast.scala (2636, 2023-10-08)
core\src\main\scala\podpodge\db\dao (0, 2023-10-08)
core\src\main\scala\podpodge\db\dao\ConfigurationDao.scala (2871, 2023-10-08)
core\src\main\scala\podpodge\db\dao\EpisodeDao.scala (2042, 2023-10-08)
core\src\main\scala\podpodge\db\dao\PodcastDao.scala (1533, 2023-10-08)
... ...

# Podpodge ![Scala CI](https://github.com/reibitto/podpodge/actions/workflows/scala.yml/badge.svg) ## What is it? Podpodge is a server + client for converting YouTube playlists (or plain audio files in a directory) into audio-only RSS feeds that podcast apps can consume. Podpodge is written using [akka-http](https://doc.akka.io/docs/akka-http/current/index.html) + [tapir](https://tapir.softwaremill.com) + [ZIO](https://zio.dev) + [Quill](https://getquill.io/). It's still a work in progress in the sense that it doesn't have the nicest front-end yet (a Scala.js + [Slinky](https://slinky.dev/) front-end will be coming). Though it does have built-in Swagger integration so that you don't have to construct the API requests yourself for interacting with the DB and getting the RSS feed. ## Requirements - You need to obtain a [YouTube API Key](https://developers.google.com/youtube/registering_an_application) and set the `PODPODGE_YOUTUBE_API_KEY` environment variable. - [youtube-dl](https://github.com/ytdl-org/youtube-dl) or [yt-dlp](https://github.com/yt-dlp/yt-dlp) must be installed (there's an [open issue](https://github.com/reibitto/podpodge/issues/6) for automatically downloading it) _* The above are only requirements if `sourceType` is `youTube`. For `directory` you can ignore this._ ## Usage Run the server either using sbt (`sbt run`) or create an executable jar (`sbt assembly`) and run that. This will run the Podpodge server at http://localhost:8080 by default (this can be changed with `PODPODGE_HOST` and `PODPODGE_PORT`). For example, you might want to change `PODPODGE_HOST` to your network IP (like 192.168.1.100 or whatever it's set to) so that you can access it from your phone on the same local network. Of course the other option is to host it on a "proper" public server so that you can access it from anywhere. To register a YouTube playlist as a Podcast, call the `POST /podcast/{sourceType}` route (where `sourceType` can be set to `youTube` or `directory`). You can do this with the built-in Swagger integration (which is the default top-level page). The playlist ID is what appears in the address bar when visiting a YouTube playlist page, like https://www.youtube.com/playlist?list=YOUTUBE_PLAYLIST_ID *Note:* Private playlists aren't supported (might be possible after [this issue](https://github.com/reibitto/podpodge/issues/1) is addressed). Using unlisted playlists is the closest alternative for now. If successful, this should return you a JSON response of the Podcast. You can then use the `POST /podcasts/check` route to check for new episodes: (*Note:* There is an [issue](https://github.com/reibitto/podpodge/issues/8) for setting up CRON-like schedules per Podcast for automatic checks) Once that's done, you can access the RSS feed URL and put it into whatever podcast app you use. It'll look something like this (the ID may be different if you have multiple podcasts): http://localhost:8080/podcast/1/rss ## Contributing Podpodge is fairly barebones and I mainly made it for myself because similar apps I tried at the time didn't quite work for me. Plus, this was an exercise to learn how akka-http + ZIO + Quill (and eventually Slinky) work together. There are a bunch more features that could potentially be added and I created some issues for those. Feel free to take any if you'd like. Contributions are always welcome!

近期下载者

相关文件


收藏者