{ "info": { "author": "Kiss Gy\u00f6rgy", "author_email": "kissgyorgy@me.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# Simple podcast downloader (podcatcher)\n\nThe simplest podcast downloader with no configuration, no tagging, no nothing. \nIt simply downloads missing episodes from supported podcasts to a directory. \n*That's it.*\n\nYou don't even have to know the URL of the RSS, you can give it a website URL, \na domain name, or simply the podcast name, it will find out which podcast you want to download. \n\nIt doesn't have a complicated UI or fancy features, it's just a command line application. \nThe download folder and the number of threads can be customized.\n\nI use it in a Jenkins job to synchronize all the episodes to [Nextcloud](https://nextcloud.com/), \nso it will be synced to my phone and I can listen the episodes without internet connection.\n\n\n## Supported podcasts\n\n- Talk Python To Me (https://talkpython.fm/)\n- Python Bytes (https://pythonbytes.fm/)\n- The Changelog (https://changelog.com/podcast)\n- Podcast.\\_\\_init__ (https://www.podcastinit.com/)\n- Indie Hackers (https://www.indiehackers.com/podcast)\n\n\n## Installation\n\nYou need at least Python 3.6, then you can simply run:\n```\n$ pip3 install simple-podcast-dl\n```\n\n\n## Getting started\n\nIt is as simple as running the command:\n```\n$ podcast-dl talkpython.fm\n```\n\nAnd the podcast will be downloaded to the \"talkpython.fm\" directory. \nYou can change the download directory by specifying the `--directory`\n(or `-d`) option:\n```\n$ podcast-dl talkpython.fm -d talkpython-podcast\n```\n\nYou can list the supported podcast sites with the `--list-podcasts`\n(or `-l`) option:\n```\n$ podcast-dl --list-podcasts\n```\n\nYou can specify which episodes to download with the `--episodes`\n(or `-e`) option:\n```\n$ podcast-dl --episodes 1,2,3 talkpython\n```\n\nYou can use the \"last\" or \"last:n\" keyword to select the last or last n number\nof episodes to download:\n```\n$ podcast-dl --episodes last:3 talkpython\n```\n\nYou can list the podcast episodes sorted by episode number with\n`--show-episodes` or (`-s`):\n```\n$ podcast-dl --show-episodes talkpython\n```\n\nOr you can even combine it with selecting episodes:\n```\n$ podcast-dl --show-episodes -e 1-5 talkpython\n```\n\nIt can show a progress bar with the `--progress` or (`-p`) option:\n```\n$ podcast-dl -p talkpython\nFound a total of 182 missing episodes.\n [##########--------------------------] 28% 00:03:16\n```\n\n## Usage\n\n```plain\nUsage: podcast-dl [OPTIONS] PODCAST\n\n Download podcast episodes to the given directory\n\n URL or domain or short name for the PODCAST argument can be specified,\n e.g. pythonbytes.fm or talkpython or https://talkpython.fm\n\nOptions:\n -d, --download-dir PATH Where to save downloaded episodes. Can be\n specified by the DOWNLOAD_DIR environment\n variable. [default: name of PODCAST]\n -e, --episodes EPISODELIST Episodes to download.\n -s, --show-episodes Show the list of episodes for PODCAST.\n -l, --list-podcasts List of supported podcasts, ordered by name.\n -p, --progress Show progress bar instead of detailed\n messages during download.\n -t, --max-threads INTEGER RANGE\n The maximum number of simultaneous\n downloads. Can be specified with the\n MAX_THREADS environment variable. [default:\n 10]\n -v, --verbose Show detailed informations during download.\n -V, --version Show the version and exit.\n -h, --help Show this message and exit.\n```\n\n\n## Development\n\nThe project have a `, so you can simply install everything needed for development with a single command:\n\n```\n$ pip install pipenv\n$ poetry install\n```\n\nYou should format your code with black (it's included in the development requirements):\n\n```\n$ poetry run black .\n```\n\nYou can run the tests with:\n```\n$ poetry run pytest\n```\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kissgyorgy/simple-podcast-dl", "keywords": "podcasts", "license": "MIT", "maintainer": "Kiss Gy\u00f6rgy", "maintainer_email": "kissgyorgy@me.com", "name": "simple-podcast-dl", "package_url": "https://pypi.org/project/simple-podcast-dl/", "platform": "", "project_url": "https://pypi.org/project/simple-podcast-dl/", "project_urls": { "Homepage": "https://github.com/kissgyorgy/simple-podcast-dl", "Repository": "https://github.com/kissgyorgy/simple-podcast-dl" }, "release_url": "https://pypi.org/project/simple-podcast-dl/1.3/", "requires_dist": [ "attrs (>=18.2,<19.0)", "click (>=7.0,<8.0)", "python-slugify (>=1.2,<2.0)", "lxml (>=4.2,<5.0)", "aiohttp (>=3.4,<4.0)", "aiodns (>=1.1,<2.0)" ], "requires_python": ">=3.6", "summary": "Simple podcast downloader (podcatcher)", "version": "1.3" }, "last_serial": 5331889, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "9d6cdd6423b8990757521f86d5bc78de", "sha256": "51d05953c1d6e3fe78e1f681ecf9c4e490f5998b3eef0ad37af94934f07d0fef" }, "downloads": -1, "filename": "simple_podcast_dl-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9d6cdd6423b8990757521f86d5bc78de", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4650, "upload_time": "2018-10-05T19:52:41", "url": "https://files.pythonhosted.org/packages/cd/63/1e3e06ba353b9a1c860163e47ea6e47099194607112d8d879193059bf647/simple_podcast_dl-0.1-py3-none-any.whl" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "cb4c73eab4f776a11f7adb696a1d2617", "sha256": "f7c892203dbb8f4dfb7eb44eb9bec3b1718f92621d855d3da29b65d0c362c7c9" }, "downloads": -1, "filename": "simple_podcast_dl-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "cb4c73eab4f776a11f7adb696a1d2617", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4840, "upload_time": "2018-10-05T21:05:30", "url": "https://files.pythonhosted.org/packages/ea/4b/cbc8e56371728f9d5e67336c0a4a96ae6363151fbc31515bc67c4715f1ce/simple_podcast_dl-0.2-py3-none-any.whl" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "5e88d5fed630abc0bb4eb968f440138e", "sha256": "4e3fb1f40253884bdc22851f9e39879b9850830a7666a5de570b1b90b55297e8" }, "downloads": -1, "filename": "simple_podcast_dl-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5e88d5fed630abc0bb4eb968f440138e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10664, "upload_time": "2018-10-14T20:02:53", "url": "https://files.pythonhosted.org/packages/03/16/8e40de2830b3625c0aa3b879c44472e889be2a46e9c66526331a42cf539c/simple_podcast_dl-0.3-py3-none-any.whl" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "947684e736738c17a48276135f11cda0", "sha256": "1c6ae36f5a969d949f19bc94ced2cb1cbdab3ba7aaf799d6f901faaa9666ffe2" }, "downloads": -1, "filename": "simple_podcast_dl-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "947684e736738c17a48276135f11cda0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10780, "upload_time": "2018-10-18T19:43:25", "url": "https://files.pythonhosted.org/packages/75/f6/05292c4bc5a72bfe25808acdecfb59fc79b80e5fc668bd8827dbf6678a64/simple_podcast_dl-1.0-py3-none-any.whl" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "a0e131fd21e6d40de1385438e0e58ae5", "sha256": "bc29f8d98e0f5f522cff4d705ae94e5ecc7eaa70021ff0ccc59c02df7c587306" }, "downloads": -1, "filename": "simple_podcast_dl-1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a0e131fd21e6d40de1385438e0e58ae5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10797, "upload_time": "2018-10-18T21:08:36", "url": "https://files.pythonhosted.org/packages/a3/96/642ddc3d1891009cb00cd77ff81fbd26c595693526b17dad4e813cc1a251/simple_podcast_dl-1.1-py3-none-any.whl" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "3dbf5165b86de012f5f36890495bdf94", "sha256": "cc01b00f32f030c1d93fedf235758266fdade6853cdde7208f9089ea7dde78da" }, "downloads": -1, "filename": "simple_podcast_dl-1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3dbf5165b86de012f5f36890495bdf94", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10803, "upload_time": "2018-10-18T21:12:06", "url": "https://files.pythonhosted.org/packages/92/37/8272ef646393275d4c9ecd94549d239e803cc97e1e3fdd3fc8edf10fa830/simple_podcast_dl-1.2-py3-none-any.whl" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "521554535a94eabc05c425318dd7c54d", "sha256": "500a01a945abf3e217c83b701534ec48092b5e3f01cb352b469ccd36e9303364" }, "downloads": -1, "filename": "simple_podcast_dl-1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "521554535a94eabc05c425318dd7c54d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 10951, "upload_time": "2019-05-29T11:37:20", "url": "https://files.pythonhosted.org/packages/52/08/a307734e0f16dc4e6421bfec51b0978ba0ca1dd867dba109aaaa5d9399c9/simple_podcast_dl-1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9fc35f9db1ea4bfc32bfe06382d9a190", "sha256": "45dccc597979d47dd34b727d3717c2f57c2acb8e72dabfb0dfb70e46dd4c0db0" }, "downloads": -1, "filename": "simple-podcast-dl-1.3.tar.gz", "has_sig": false, "md5_digest": "9fc35f9db1ea4bfc32bfe06382d9a190", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10528, "upload_time": "2019-05-29T11:37:18", "url": "https://files.pythonhosted.org/packages/4f/0d/85f5ef3a2d85b9cd4e45e73425539330f384f37ca1740b94888b41162d27/simple-podcast-dl-1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "521554535a94eabc05c425318dd7c54d", "sha256": "500a01a945abf3e217c83b701534ec48092b5e3f01cb352b469ccd36e9303364" }, "downloads": -1, "filename": "simple_podcast_dl-1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "521554535a94eabc05c425318dd7c54d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 10951, "upload_time": "2019-05-29T11:37:20", "url": "https://files.pythonhosted.org/packages/52/08/a307734e0f16dc4e6421bfec51b0978ba0ca1dd867dba109aaaa5d9399c9/simple_podcast_dl-1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9fc35f9db1ea4bfc32bfe06382d9a190", "sha256": "45dccc597979d47dd34b727d3717c2f57c2acb8e72dabfb0dfb70e46dd4c0db0" }, "downloads": -1, "filename": "simple-podcast-dl-1.3.tar.gz", "has_sig": false, "md5_digest": "9fc35f9db1ea4bfc32bfe06382d9a190", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10528, "upload_time": "2019-05-29T11:37:18", "url": "https://files.pythonhosted.org/packages/4f/0d/85f5ef3a2d85b9cd4e45e73425539330f384f37ca1740b94888b41162d27/simple-podcast-dl-1.3.tar.gz" } ] }