{"id":26876859,"url":"https://github.com/rools32/termipod","last_synced_at":"2025-06-13T05:32:20.289Z","repository":{"id":57474284,"uuid":"118262658","full_name":"rools32/termipod","owner":"rools32","description":"Podcasts in your terminal","archived":false,"fork":false,"pushed_at":"2020-06-24T22:51:55.000Z","size":7094,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-07T15:08:55.830Z","etag":null,"topics":["curses","downloader","feedparser","mpv","player","podcast","rss","youtube","youtube-dl"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rools32.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-20T17:00:37.000Z","updated_at":"2024-03-22T13:04:52.000Z","dependencies_parsed_at":"2022-09-12T21:01:12.070Z","dependency_job_id":null,"html_url":"https://github.com/rools32/termipod","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/rools32/termipod","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rools32%2Ftermipod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rools32%2Ftermipod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rools32%2Ftermipod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rools32%2Ftermipod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rools32","download_url":"https://codeload.github.com/rools32/termipod/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rools32%2Ftermipod/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259589140,"owners_count":22880916,"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":["curses","downloader","feedparser","mpv","player","podcast","rss","youtube","youtube-dl"],"created_at":"2025-03-31T11:17:13.844Z","updated_at":"2025-06-13T05:32:20.270Z","avatar_url":"https://github.com/rools32.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"termipod - Podcasts and Youtube in your terminal\n================================================\n\ntermipod is a *curses* application written in Python3 to manage your podcasts and your youtube\nchannels in your terminal.\n\n\u003cimg src=\"resources/screenshots/termipod.png\" alt=\"Main window\"\u003e\n\nWith it, you can:\n\n* Handle channel/user/playlist youtube pages\n* Handle RSS feeds with media\n* Mark media as read/unread/skipped\n* Download media\n* Automatically download new media matching a pattern\n* Play media with *mpv*, mark automatically as read if entirely played\n* Create sub-channel based on regex (called mask)\n* Add only media (with disabled channel)\n* Display thumbnails (in urxvt terminal with pixbuf support)\n* Create m3u playlists\n* Search in your channel/media list\n* Run local http server to stream m3u playlists and media (requires Python twisted module)\n* Tag media and channels, filter media\n* Export channels to file\n* Customizable key bindings\n* Fuse FS as a CLI with basic commands\n\nYoutube channels are handled by *youtube_dl* for the first import to get all videos, but then,\nfor efficiency purpose, by *feedparser* reading the RSS feed provided by Google.\n\n## User Interface\n\nThere are some screenshots from different situations.\n\n### Media and channel lists\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/medialist.png\" alt=\"Media list\" width=\"400\"\u003e\n    \u003cbr\u003e\n    List of media with main information\n\u003c/div\u003e\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/channellist.png\" alt=\"Channel list\" width=\"400\"\u003e\n    \u003cbr\u003e\n    List of channels with main information\n\u003c/div\u003e\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/medialist-keys.png\" alt=\"Media list keys\" width=\"400\"\u003e\n    \u003cbr\u003e\n    List of channels with key binding list\n\u003c/div\u003e\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/channellist-info.png\" alt=\"Channel info\" width=\"400\"\u003e\n    \u003cbr\u003e\n    List of channels with detailed information\n\u003c/div\u003e\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/media-info.png\" alt=\"Media info\" width=\"400\"\u003e\n    \u003cbr\u003e\n    List of media with detailed information\n\u003c/div\u003e\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/media-description.png\" alt=\"Media description\" width=\"400\"\u003e\n    \u003cbr\u003e\n    List of media with description\n\u003c/div\u003e\n\u003cbr\u003e\n\n### Thumbnails\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/thumbnail-small.png\" alt=\"Small media thumbnail\" width=\"400\"\u003e\n    \u003cbr\u003e\n    Small thumbnail in media list\n\u003c/div\u003e\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/thumbnail-fullscreen-media.png\" alt=\"Media thumbnail in fullscreen\" width=\"400\"\u003e\n    \u003cbr\u003e\n    Fullscreen thumbnail in media list\n\u003c/div\u003e\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/thumbnail-fullscreen-channel.png\" alt=\"Channel thumbnail in fullscreen\" width=\"400\"\u003e\n    \u003cbr\u003e\n    Fullscreen thumbnail in channel list\n\u003c/div\u003e\n\u003cbr\u003e\n\n### mpv interface\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/mpv-small.png\" alt=\"mpv small\" width=\"400\"\u003e\n    \u003cbr\u003e\n    mpv window launched by termipod\n\u003c/div\u003e\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/mpv-fullscreen.png\" alt=\"mpv fullscreen\" width=\"400\"\u003e\n    \u003cbr\u003e\n    mpv window with help listing keys added by termipod\n\u003c/div\u003e\n\u003cbr\u003e\n\n### Tags and categories\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/tag-filter.png\" alt=\"Tag filter\" width=\"400\"\u003e\n    \u003cbr\u003e\n    Media list with only \"watch later\" media\n\u003c/div\u003e\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/category-filter.png\" alt=\"Category filter\" width=\"400\"\u003e\n    \u003cbr\u003e\n    Channel list restricted to *favorites* and *science*\n\u003c/div\u003e\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/category-set.png\" alt=\"Set category\" width=\"400\"\u003e\n    \u003cbr\u003e\n    Set channel categories\n\u003c/div\u003e\n\u003cbr\u003e\n\n### Streaming server\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rools32/termipod/master/resources/screenshots/streaming-server.png\" alt=\"Streamig view\" width=\"400\"\u003e\n    \u003cbr\u003e\n    View and play your downloaded media or built playlists from a web browser\n\u003c/div\u003e\n\u003cbr\u003e\n\n## Requirements\n\n* appdirs\n* feedparser\n* mpv\n* youtube_dl\n* twisted (optional, for http server)\n* pyfuse3 and trio (optional, for fuse FS)\n\n## Installation\n\nYou can install it with pip:\n\n    pip install termipod\n\nTo install last version from master, simply clone it and run in the repository directory:\n\n    pip install .\n\nAnd with optional modules:\n\n    pip install .[httpserver, fuse]\n\n\n## Execution\n\n    # To open UI\n    termipod\n\n    # To show help\n    termipod --help\n\n    # To add a new channel from command line and automatically download new videos\n    termipod --add http://radiofrance-podcast.net/podcast09/rss_14257.xml --add-opts \"auto=.*\"\n\n## License\n\ntermipod is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 3 of the License, or\n(at your option) any later version.\n\ntermipod is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see\n[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frools32%2Ftermipod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frools32%2Ftermipod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frools32%2Ftermipod/lists"}