playlist2podcast


Nameplaylist2podcast JSON
Version 0.6.8 PyPI version JSON
download
home_page
SummaryCreates podcast feed from playlist URL
upload_time2023-12-10 04:30:12
maintainer
docs_urlNone
author
requires_python>=3.8
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Playlist2Podcast
================

|Repo| |Downloads| |Code style| |Checked against| |Checked with| |PyPI - Python Version| |PyPI - Wheel|
|CI - Woodpecker| |AGPL|


Playlist2Podcast is a command line tool that takes a Youtube playlist, downloads the audio portion of the videos on that
list, and creates a podcast feed from this.

Playlist2Podcast:

1) downloads and converts the videos in one or more playlists to opus audio only files,
2) downloads thumbnails and converts them to JPEG format, and
3) creates a podcast feed with the downloaded videos and thumbnails.

Install and run natively
------------------------

Easiest way to use Playlist2Podcast is to use `pipx` to install it from PyPi. Then you can simply use
`playlist2podcast` on the command line run it.

Playlist2Podcast will ask for all necessary parameters when run for the first time and store them in `config.json`
file in the current directory.

Docker Compose
--------------

There is a docker-image published for playlist2podcast.

You can use the below example docker compose to run playlist2podcast with a caddy frontend to publish the resulting podcast feed::

    ---
    version: "3.5"
    services:

    ##########################################################################
    # C A D D Y - R E V E R S E   P R O X Y
    ##########################################################################
       caddy:
        image: lucaslorentz/caddy-docker-proxy:latest
        container_name: caddy
        ports:
          - 80:80
          - 443:443
        environment:
          - CADDY_INGRESS_NETWORKS=caddy
        networks:
          - caddy
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - <path to folder where caddy can store ssl certs>:/data
          - <path to folder where caddy can write log files>:/logs
          - podcast-data:/publish:ro    # actual podcast feed data
        restart: unless-stopped

    ##########################################################################
    # P L A Y L I S T 2 P O D C A S T
    ##########################################################################
      playlist2podcast:
        image: codeberg.org/pyyttools/playlist2podcast:latest
        container_name: playlist2podcast
        tty: true
        stdin_open: true
        environment:
          - DEBUG_LOG_FILE=debug.log    # Optional: If set will create a debug log file
          - UPDATE_INTERVAL=4h          # How long to wait between updates.
       volumes:
          - <path to directory containing config.json file>:/config
          - podcast-data:/publish       # podcast feed data will be saved here
        restart: unless-stopped
        networks:
          - caddy
        labels:
          caddy: <full hostname podcast>    # DNS for this needs to resolve before starting
          caddy.root: "* /publish"
          caddy.file_server:

    ##########################################################################
    # N E T W O R K S
    ##########################################################################
    networks:
      caddy:


    ##########################################################################
    # V O L U M E S
    ##########################################################################
    volumes:
      podcast-data:


Changelog
---------

See the `Changelog`_ for any changes introduced with each version.

License
-------

Playlist2Podcast is licences under the `GNU Affero General Public License v3.0`_

.. _GNU Affero General Public License v3.0: http://www.gnu.org/licenses/agpl-3.0.html

.. |AGPL| image:: https://www.gnu.org/graphics/agplv3-with-text-162x68.png
    :alt: AGLP 3 or later
    :target: https://codeberg.org/PyYtTools/Playlist2Podcasts/src/branch/main/LICENSE.md

.. |Repo| image:: https://img.shields.io/badge/repo-Codeberg.org-blue
    :alt: Repo at Codeberg
    :target: https://codeberg.org/PyYtTools/Playlist2Podcasts

.. |Downloads| image:: https://pepy.tech/badge/playlist2podcast
    :target: https://pepy.tech/project/playlist2podcast

.. |Code style| image:: https://img.shields.io/badge/code%20style-black-000000.svg
    :alt: Code Style: Black
    :target: https://github.com/psf/black

.. |Checked against| image:: https://img.shields.io/badge/Safety--DB-Checked-green
    :alt: Checked against Safety DB
    :target: https://pyup.io/safety/

.. |Checked with| image:: https://img.shields.io/badge/pip--audit-Checked-green
    :alt: Checked with pip-audit
    :target: https://pypi.org/project/pip-audit/

.. |PyPI - Python Version| image:: https://img.shields.io/pypi/pyversions/playlist2podcast

.. |PyPI - Wheel| image:: https://img.shields.io/pypi/wheel/playlist2podcast

.. |CI - Woodpecker| image:: https://ci.codeberg.org/api/badges/PyYtTools/Playlist2Podcasts/status.svg
    :target: https://ci.codeberg.org/PyYtTools/Playlist2Podcasts

.. _Changelog: https://codeberg.org/PyYtTools/Playlist2Podcasts/src/branch/main/CHANGELOG.rst


            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "playlist2podcast",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "",
    "author": "",
    "author_email": "marvin8 <marvin8@tuta.io>",
    "download_url": "https://files.pythonhosted.org/packages/d3/af/26cb12707cb2c6c5e6c67c0e2c6a55d2f3e281295f3792ebe307a3d85c66/playlist2podcast-0.6.8.tar.gz",
    "platform": null,
    "description": "Playlist2Podcast\n================\n\n|Repo| |Downloads| |Code style| |Checked against| |Checked with| |PyPI - Python Version| |PyPI - Wheel|\n|CI - Woodpecker| |AGPL|\n\n\nPlaylist2Podcast is a command line tool that takes a Youtube playlist, downloads the audio portion of the videos on that\nlist, and creates a podcast feed from this.\n\nPlaylist2Podcast:\n\n1) downloads and converts the videos in one or more playlists to opus audio only files,\n2) downloads thumbnails and converts them to JPEG format, and\n3) creates a podcast feed with the downloaded videos and thumbnails.\n\nInstall and run natively\n------------------------\n\nEasiest way to use Playlist2Podcast is to use `pipx` to install it from PyPi. Then you can simply use\n`playlist2podcast` on the command line run it.\n\nPlaylist2Podcast will ask for all necessary parameters when run for the first time and store them in `config.json`\nfile in the current directory.\n\nDocker Compose\n--------------\n\nThere is a docker-image published for playlist2podcast.\n\nYou can use the below example docker compose to run playlist2podcast with a caddy frontend to publish the resulting podcast feed::\n\n    ---\n    version: \"3.5\"\n    services:\n\n    ##########################################################################\n    # C A D D Y - R E V E R S E   P R O X Y\n    ##########################################################################\n       caddy:\n        image: lucaslorentz/caddy-docker-proxy:latest\n        container_name: caddy\n        ports:\n          - 80:80\n          - 443:443\n        environment:\n          - CADDY_INGRESS_NETWORKS=caddy\n        networks:\n          - caddy\n        volumes:\n          - /var/run/docker.sock:/var/run/docker.sock\n          - <path to folder where caddy can store ssl certs>:/data\n          - <path to folder where caddy can write log files>:/logs\n          - podcast-data:/publish:ro    # actual podcast feed data\n        restart: unless-stopped\n\n    ##########################################################################\n    # P L A Y L I S T 2 P O D C A S T\n    ##########################################################################\n      playlist2podcast:\n        image: codeberg.org/pyyttools/playlist2podcast:latest\n        container_name: playlist2podcast\n        tty: true\n        stdin_open: true\n        environment:\n          - DEBUG_LOG_FILE=debug.log    # Optional: If set will create a debug log file\n          - UPDATE_INTERVAL=4h          # How long to wait between updates.\n       volumes:\n          - <path to directory containing config.json file>:/config\n          - podcast-data:/publish       # podcast feed data will be saved here\n        restart: unless-stopped\n        networks:\n          - caddy\n        labels:\n          caddy: <full hostname podcast>    # DNS for this needs to resolve before starting\n          caddy.root: \"* /publish\"\n          caddy.file_server:\n\n    ##########################################################################\n    # N E T W O R K S\n    ##########################################################################\n    networks:\n      caddy:\n\n\n    ##########################################################################\n    # V O L U M E S\n    ##########################################################################\n    volumes:\n      podcast-data:\n\n\nChangelog\n---------\n\nSee the `Changelog`_ for any changes introduced with each version.\n\nLicense\n-------\n\nPlaylist2Podcast is licences under the `GNU Affero General Public License v3.0`_\n\n.. _GNU Affero General Public License v3.0: http://www.gnu.org/licenses/agpl-3.0.html\n\n.. |AGPL| image:: https://www.gnu.org/graphics/agplv3-with-text-162x68.png\n    :alt: AGLP 3 or later\n    :target: https://codeberg.org/PyYtTools/Playlist2Podcasts/src/branch/main/LICENSE.md\n\n.. |Repo| image:: https://img.shields.io/badge/repo-Codeberg.org-blue\n    :alt: Repo at Codeberg\n    :target: https://codeberg.org/PyYtTools/Playlist2Podcasts\n\n.. |Downloads| image:: https://pepy.tech/badge/playlist2podcast\n    :target: https://pepy.tech/project/playlist2podcast\n\n.. |Code style| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n    :alt: Code Style: Black\n    :target: https://github.com/psf/black\n\n.. |Checked against| image:: https://img.shields.io/badge/Safety--DB-Checked-green\n    :alt: Checked against Safety DB\n    :target: https://pyup.io/safety/\n\n.. |Checked with| image:: https://img.shields.io/badge/pip--audit-Checked-green\n    :alt: Checked with pip-audit\n    :target: https://pypi.org/project/pip-audit/\n\n.. |PyPI - Python Version| image:: https://img.shields.io/pypi/pyversions/playlist2podcast\n\n.. |PyPI - Wheel| image:: https://img.shields.io/pypi/wheel/playlist2podcast\n\n.. |CI - Woodpecker| image:: https://ci.codeberg.org/api/badges/PyYtTools/Playlist2Podcasts/status.svg\n    :target: https://ci.codeberg.org/PyYtTools/Playlist2Podcasts\n\n.. _Changelog: https://codeberg.org/PyYtTools/Playlist2Podcasts/src/branch/main/CHANGELOG.rst\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Creates podcast feed from playlist URL",
    "version": "0.6.8",
    "project_urls": {
        "Changelog": "https://codeberg.org/PyYtTools/Playlist2Podcasts/src/branch/main/CHANGELOG.rst",
        "Documentation": "https://codeberg.org/PyYtTools/Playlist2Podcasts/src/branch/main/README.rst",
        "Issues": "https://codeberg.org/PyYtTools/Playlist2Podcasts/issues",
        "Source": "https://codeberg.org/PyYtTools/Playlist2Podcasts"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f929f750d03ef7de3886303facd64e0eaf8b42d14a91f246d1d91e66e08cc9c8",
                "md5": "1c66c97f3af107204eb6215e64668c55",
                "sha256": "6735d50292d6ff86a98693e42ab142e5f3286b912897f895f2cff57faa545868"
            },
            "downloads": -1,
            "filename": "playlist2podcast-0.6.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1c66c97f3af107204eb6215e64668c55",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 21151,
            "upload_time": "2023-12-10T04:30:10",
            "upload_time_iso_8601": "2023-12-10T04:30:10.568293Z",
            "url": "https://files.pythonhosted.org/packages/f9/29/f750d03ef7de3886303facd64e0eaf8b42d14a91f246d1d91e66e08cc9c8/playlist2podcast-0.6.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d3af26cb12707cb2c6c5e6c67c0e2c6a55d2f3e281295f3792ebe307a3d85c66",
                "md5": "7e5ce71fc807135ebf6fd69ec13de310",
                "sha256": "40b6985a02d7c0f6ed66dc31100ac17ce6c7c64867e1cde43295cbc8dda8e0b2"
            },
            "downloads": -1,
            "filename": "playlist2podcast-0.6.8.tar.gz",
            "has_sig": false,
            "md5_digest": "7e5ce71fc807135ebf6fd69ec13de310",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 10788,
            "upload_time": "2023-12-10T04:30:12",
            "upload_time_iso_8601": "2023-12-10T04:30:12.547467Z",
            "url": "https://files.pythonhosted.org/packages/d3/af/26cb12707cb2c6c5e6c67c0e2c6a55d2f3e281295f3792ebe307a3d85c66/playlist2podcast-0.6.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-10 04:30:12",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": true,
    "codeberg_user": "PyYtTools",
    "codeberg_project": "Playlist2Podcasts",
    "lcname": "playlist2podcast"
}
        
Elapsed time: 0.15223s