ydl-podcast


Nameydl-podcast JSON
Version 1.3.1 PyPI version JSON
download
home_pagehttps://github.com/nbr23/ydl-podcast
SummaryA simple tool to generate Podcast-like RSS feeds from youtube (or other youtube-dl supported services) channels, using youtube-dl
upload_time2024-01-26 19:37:22
maintainer
docs_urlNone
authornbr23
requires_python>=3.7,<4.0
licenseMIT
keywords podcast youtube-dl
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![Pypi Version Shield](https://img.shields.io/pypi/v/ydl-podcast.svg?style=flat-square)](https://pypi.org/project/ydl-podcast/)
[![Pypi License Shield](https://img.shields.io/pypi/l/ydl-podcast.svg?style=flat-square)](https://pypi.org/project/ydl-podcast/)

# ydl-podcast

A simple tool to generate Podcast-like RSS feeds from youtube (or other
youtube-dl supported services) channels, using
[`youtube-dl`](https://github.com/rg3/youtube-dl).

## Setup

Install package with requirements:

### Youtube-dl:

`pip install ydl-podcast[youtube-dl]`

### yt-dlp:

`pip install ydl-podcast[yt-dlp]`

## Configuration

Edit the config.yaml file to list your podcast sources and configure them,
as well as edit general configuration.

The available settings are the following.

### General settings

- `output_dir`: local directory where the downloaded media will be stored, and
  the podcast xml files generated.
- `url_root`: root url for the static files (used in the generation of the XML
  to point to the media files.
- `subscriptions`: a list of feeds to subscribe to.
- `youtube-dl-module`: Alternative youtube-dl python module. By default, this
uses [youtube-dl](https://github.com/rg3/youtube-dl), but can leverage forks
such as [yt-dlp](https://github.com/yt-dlp/yt-dlp).

### Feed settings

#### Mandatory
- `name NAME`: Name of the podcast source. Used as the podcast title, and media
  directory name.
- `url URL`: source url for the youtube (or other) channel.

#### Optional
- `audio_only True/False`: if `True`, audio will be extracted from downloaded
  videos to create an audio podcast.
- `retention_days N`: only download elements newer than `N` days, and
  automatically delete elements older.
- `download_last N`: only download the latest `N` videos.
- `initialize True/False`: if `True`, then downloads everything on the first
  run, no matter the `download_last` or `retention_days` specified.
- `output_dir`: local directory where the downloaded media will be stored, and
  the podcast xml files generated.
- `url_root`: root url for the static files (used in the generation of the XML
  to point to the media files.
- `format`: file format to force youtube-dl to use (eg mp4, webm, mp3 for audio
  only…)
- `best`: force best quality (only useful when specifying a format).
- `ydl_options`: list of raw youtube-dl options to use. For experienced users,
  since this will likely yield issues if not understood.
- `nfo_files`: generates nfo files for subscriptions and downloaded episodes (simulates a "tvshow" nfo for the subscription and "tvshow episode" for each video). This helps plex, kodi, jellyfin import correct metadata. Does NOT support `audio_only` feeds at this point.
- `skip_download`: Don't perform download, just generate the Atom feed from the existing files. Mandatory `url` parameter can be skipped if `skip_download` is set to `true`
- `download_as_playlist`: Pass the url to the downloader directly, without processing the metadata of each item in the playlist. This is helpful with generic urls, and a few specific extractors.

## Usage

Using cron or your favorite scheduler, run:

`ydl_podcast [configfile.yaml]`

You can then use your favorite web server to serve the files (a good idea is to
exclude the `*.json` and `*.part` files from being served as the first might
leak information, and the second is unnecessary.

eg with nginx:

```
root /var/www/static/podcasts/;
location ~ (\.json$|\.part$) {
  return 403;
}
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/nbr23/ydl-podcast",
    "name": "ydl-podcast",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7,<4.0",
    "maintainer_email": "",
    "keywords": "podcast,youtube-dl",
    "author": "nbr23",
    "author_email": "max@23.tf",
    "download_url": "https://files.pythonhosted.org/packages/8d/de/3bf6314c742cfe16d67ffa6e567047877b55e378e03b950eccab879c5aba/ydl_podcast-1.3.1.tar.gz",
    "platform": null,
    "description": "[![Pypi Version Shield](https://img.shields.io/pypi/v/ydl-podcast.svg?style=flat-square)](https://pypi.org/project/ydl-podcast/)\n[![Pypi License Shield](https://img.shields.io/pypi/l/ydl-podcast.svg?style=flat-square)](https://pypi.org/project/ydl-podcast/)\n\n# ydl-podcast\n\nA simple tool to generate Podcast-like RSS feeds from youtube (or other\nyoutube-dl supported services) channels, using\n[`youtube-dl`](https://github.com/rg3/youtube-dl).\n\n## Setup\n\nInstall package with requirements:\n\n### Youtube-dl:\n\n`pip install ydl-podcast[youtube-dl]`\n\n### yt-dlp:\n\n`pip install ydl-podcast[yt-dlp]`\n\n## Configuration\n\nEdit the config.yaml file to list your podcast sources and configure them,\nas well as edit general configuration.\n\nThe available settings are the following.\n\n### General settings\n\n- `output_dir`: local directory where the downloaded media will be stored, and\n  the podcast xml files generated.\n- `url_root`: root url for the static files (used in the generation of the XML\n  to point to the media files.\n- `subscriptions`: a list of feeds to subscribe to.\n- `youtube-dl-module`: Alternative youtube-dl python module. By default, this\nuses [youtube-dl](https://github.com/rg3/youtube-dl), but can leverage forks\nsuch as [yt-dlp](https://github.com/yt-dlp/yt-dlp).\n\n### Feed settings\n\n#### Mandatory\n- `name NAME`: Name of the podcast source. Used as the podcast title, and media\n  directory name.\n- `url URL`: source url for the youtube (or other) channel.\n\n#### Optional\n- `audio_only True/False`: if `True`, audio will be extracted from downloaded\n  videos to create an audio podcast.\n- `retention_days N`: only download elements newer than `N` days, and\n  automatically delete elements older.\n- `download_last N`: only download the latest `N` videos.\n- `initialize True/False`: if `True`, then downloads everything on the first\n  run, no matter the `download_last` or `retention_days` specified.\n- `output_dir`: local directory where the downloaded media will be stored, and\n  the podcast xml files generated.\n- `url_root`: root url for the static files (used in the generation of the XML\n  to point to the media files.\n- `format`: file format to force youtube-dl to use (eg mp4, webm, mp3 for audio\n  only\u2026)\n- `best`: force best quality (only useful when specifying a format).\n- `ydl_options`: list of raw youtube-dl options to use. For experienced users,\n  since this will likely yield issues if not understood.\n- `nfo_files`: generates nfo files for subscriptions and downloaded episodes (simulates a \"tvshow\" nfo for the subscription and \"tvshow episode\" for each video). This helps plex, kodi, jellyfin import correct metadata. Does NOT support `audio_only` feeds at this point.\n- `skip_download`: Don't perform download, just generate the Atom feed from the existing files. Mandatory `url` parameter can be skipped if `skip_download` is set to `true`\n- `download_as_playlist`: Pass the url to the downloader directly, without processing the metadata of each item in the playlist. This is helpful with generic urls, and a few specific extractors.\n\n## Usage\n\nUsing cron or your favorite scheduler, run:\n\n`ydl_podcast [configfile.yaml]`\n\nYou can then use your favorite web server to serve the files (a good idea is to\nexclude the `*.json` and `*.part` files from being served as the first might\nleak information, and the second is unnecessary.\n\neg with nginx:\n\n```\nroot /var/www/static/podcasts/;\nlocation ~ (\\.json$|\\.part$) {\n  return 403;\n}\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A simple tool to generate Podcast-like RSS feeds from youtube (or other youtube-dl supported services) channels, using youtube-dl",
    "version": "1.3.1",
    "project_urls": {
        "Homepage": "https://github.com/nbr23/ydl-podcast",
        "Repository": "https://github.com/nbr23/ydl-podcast"
    },
    "split_keywords": [
        "podcast",
        "youtube-dl"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bcdc639f2c6c29ef157c1d6dfe65161c3493e2d54f4f3bf30dee7cc3388a454f",
                "md5": "8d08341ba687a2ec9cf0686ac8abf9a6",
                "sha256": "6eef9e507d7d99be4e2ed470d5db21ce44daa11ccde5183c4b4d6455420c803c"
            },
            "downloads": -1,
            "filename": "ydl_podcast-1.3.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8d08341ba687a2ec9cf0686ac8abf9a6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7,<4.0",
            "size": 9516,
            "upload_time": "2024-01-26T19:37:20",
            "upload_time_iso_8601": "2024-01-26T19:37:20.254950Z",
            "url": "https://files.pythonhosted.org/packages/bc/dc/639f2c6c29ef157c1d6dfe65161c3493e2d54f4f3bf30dee7cc3388a454f/ydl_podcast-1.3.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8dde3bf6314c742cfe16d67ffa6e567047877b55e378e03b950eccab879c5aba",
                "md5": "83ef60abfe3ab282bc0a1f65ba2a7f46",
                "sha256": "7c21614cbf3ff9e8cf03fb2fc7e1b3bcf6d1fc7498f23109a6ba767d1030b557"
            },
            "downloads": -1,
            "filename": "ydl_podcast-1.3.1.tar.gz",
            "has_sig": false,
            "md5_digest": "83ef60abfe3ab282bc0a1f65ba2a7f46",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7,<4.0",
            "size": 9596,
            "upload_time": "2024-01-26T19:37:22",
            "upload_time_iso_8601": "2024-01-26T19:37:22.056357Z",
            "url": "https://files.pythonhosted.org/packages/8d/de/3bf6314c742cfe16d67ffa6e567047877b55e378e03b950eccab879c5aba/ydl_podcast-1.3.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-26 19:37:22",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "nbr23",
    "github_project": "ydl-podcast",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "ydl-podcast"
}
        
Elapsed time: 0.17369s