{"id":17267262,"url":"https://github.com/abe-101/podcast","last_synced_at":"2025-03-26T11:13:49.472Z","repository":{"id":184105183,"uuid":"671313847","full_name":"abe-101/podcast","owner":"abe-101","description":"automate podcast creation from youtube playlists: download videos, enhance audio, convert to mp3, and publish on captivate.fm.","archived":false,"fork":false,"pushed_at":"2023-12-30T23:39:44.000Z","size":159,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-31T12:23:02.969Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abe-101.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-27T03:30:48.000Z","updated_at":"2023-09-01T13:32:52.000Z","dependencies_parsed_at":"2024-12-04T10:41:33.694Z","dependency_job_id":"af5b13d4-b393-4991-974a-259132ffd79d","html_url":"https://github.com/abe-101/podcast","commit_stats":null,"previous_names":["abe-101/podcast"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abe-101%2Fpodcast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abe-101%2Fpodcast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abe-101%2Fpodcast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abe-101%2Fpodcast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abe-101","download_url":"https://codeload.github.com/abe-101/podcast/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245641437,"owners_count":20648644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T08:10:12.008Z","updated_at":"2025-03-26T11:13:49.452Z","avatar_url":"https://github.com/abe-101.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Podcast Automation Project\n\n![Podcast Automation](https://github.com/abe-101/podcast/blob/main/podcast_automation.jpg)\n\n## Overview\n\nThe Podcast Automation project is a Python-based tool that automates the process of creating podcasts from YouTube playlists. It provides a convenient way to download YouTube videos, convert them to MP3, enhance audio quality, and publish the resulting audio files as podcasts on Captivate.fm. The tool allows users to mimic given YouTube playlists and create corresponding podcasts effortlessly.\n\n## Table of Contents\n\n- [Project Description](#podcast-automation-project)\n- [Table of Contents](#table-of-contents)\n- [Features](#features)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Configuration](#configuration)\n- [Dependencies](#dependencies)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Features\n\n- Download YouTube videos and convert them to high-quality MP3 files.\n- Enhance audio quality using an Adobe AI-powered tool (Playwright integration).\n- Interact with the Captivate.fm API to upload and publish podcasts with metadata.\n- Support for handling multiple YouTube playlists and their corresponding podcasts.\n- Automatic generation of short URLs using the TinyURL API for easy sharing.\n- Audio processing functions like normalizing volume, combining MP3 files, etc.\n\n## Installation\n\n1. Clone the project repository from GitHub:\n\n   ```bash\n   git clone https://github.com/abe-101/podcast.git\n   ```\n\n## Usage\n\nThe script will prompt you to select a playlist/podcast from the available options.\nIt will then fetch the 15 most recent videos from the selected YouTube playlist.\nThe videos will be converted into podcasts using audio enhancement.\nThe resulting podcasts will be uploaded and published on Captivate.fm with metadata.\n\n## Configuration\n\nThe project uses a configuration file named `config.py` to store data for multiple playlists/podcasts. The configuration file includes information such as API keys, playlist IDs, directory paths, and URLs. You can modify this file to add, remove, or update playlist data as needed.\n\n```python\nPODCAST_1 = 0\nPODCAST_2 = 1\n\nplaylists = [\n    {\n        \"name\": \"podcast_1\",\n        \"podcast_show_id\": \"\u003cINSERT_CAPTIVATE_FM_SHOW_ID\u003e\",\n        \"spotify_id\": \"\u003cINSERT_SHOWS_SPOTIFY_ID\u003e\",\n        \"dir\": \"\u003cINSERT_DATA_DIR\u003e\",\n        \"apple_url\": \"\u003cINSERT_SHOWS_APPLE_LINK\u003e\",\n        \"rss\": \"\u003cINSERT_CAPTIVATE_FM_SHOW_RSS\u003e\",\n        \"playlist_id\": \"\u003cINSERT_YOUTUBE_PLAYLIST_ID\u003e\",\n        \"google_url\": \"\u003cINSERT_SHOWS_APPLE_LINK\u003e\",\n        \"channel_id\": \"\u003cINSERT_YOUTUBE_CHANNEL_ID\u003e\",\n    },\n    {\n        \"name\": \"podcast_2\",\n        \"podcast_show_id\": \"\u003cINSERT_CAPTIVATE_FM_SHOW_ID\u003e\",\n        \"spotify_id\": \"\u003cINSERT_SHOWS_SPOTIFY_ID\u003e\",\n        \"dir\": \"\u003cINSERT_DATA_DIR\u003e\",\n        \"apple_url\": \"\u003cINSERT_SHOWS_APPLE_LINK\u003e\",\n        \"rss\": \"\u003cINSERT_CAPTIVATE_FM_SHOW_RSS\u003e\",\n        \"playlist_id\": \"\u003cINSERT_YOUTUBE_PLAYLIST_ID\u003e\",\n        \"google_url\": \"\u003cINSERT_SHOWS_APPLE_LINK\u003e\",\n        \"channel_id\": \"\u003cINSERT_YOUTUBE_CHANNEL_ID\u003e\",\n    },\n]\n\nYOUTUBE_API_KEY = \"\u003cINSERT_YOUTUBE_API_KEY\u003e\"\nCAPTIVATE_USER_ID = \"\u003cINSERT_CAPTIVATE_FM_USER_ID\u003e\"\nCAPTIVATE_API_KEY = \"\u003cINSERT_CAPTIVATE_FM_API_KEY\u003e\"\nIMGUR_CLIENT_ID = \"\u003cINSERT_IMGUR_CLINET_ID\u003e\"\nIMGUR_CLIENT_SECRET = \"\u003cINSERT_IMGUR_CLINET_SECRET\u003e\"\nSPOTIFY_CLIENT_ID = \"\u003cINSERT_SPOTIFY_CLIENT_ID\u003e\"\nSPOTIFY_CLIENT_SECRET = \"\u003cINSERT_SPOTIFY_CLIENT_SECRET\u003e\"\nTINYURL_API_KEY = \"\u003cINSERT_TINY_URL_API_KEY\u003e\"\nPLAYWRIGHT_HEADLESS = 'False'\n\n\n```\n\n## Dependencies\n\nThe project utilizes the following Python libraries:\n\n- yt-dlp: For downloading YouTube videos and extracting metadata.\n- Playwright: For interacting with the Adobe AI-powered audio enhancement tool.\n- requests: For making HTTP requests to the Captivate.fm API and TinyURL API.\n- Other standard Python libraries.\n\n## Contributing\n\nContributions to the Podcast Automation project are welcome! If you find any bugs or want to add new features, please feel free to open an issue or submit a pull request.\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](https://github.com/abe-101/podcast/blob/main/LICENSE) file for details.\n\n---\n\nHappy Podcasting! 🎙️\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabe-101%2Fpodcast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabe-101%2Fpodcast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabe-101%2Fpodcast/lists"}