Name | playlist2podcast JSON |
Version |
0.6.8
JSON |
| download |
home_page | |
Summary | Creates podcast feed from playlist URL |
upload_time | 2023-12-10 04:30:12 |
maintainer | |
docs_url | None |
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"
}