{"id":13419496,"url":"https://github.com/xgi/castero","last_synced_at":"2025-03-15T05:31:29.584Z","repository":{"id":31635763,"uuid":"128488707","full_name":"xgi/castero","owner":"xgi","description":"TUI podcast client for the terminal","archived":false,"fork":false,"pushed_at":"2023-02-21T03:33:29.000Z","size":1273,"stargazers_count":610,"open_issues_count":30,"forks_count":37,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-10-01T10:51:43.586Z","etag":null,"topics":["command-line","curses","hacktoberfest","podcast","podcast-client","terminal","tui"],"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/xgi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-04-07T02:15:07.000Z","updated_at":"2024-09-22T13:31:39.000Z","dependencies_parsed_at":"2024-01-11T00:02:43.189Z","dependency_job_id":"d83332b1-8bab-4827-a934-9ffee4833f3f","html_url":"https://github.com/xgi/castero","commit_stats":{"total_commits":530,"total_committers":16,"mean_commits":33.125,"dds":"0.10566037735849054","last_synced_commit":"d229ebe1748c839f80cee86e6dd383fa4f4df370"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xgi%2Fcastero","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xgi%2Fcastero/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xgi%2Fcastero/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xgi%2Fcastero/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xgi","download_url":"https://codeload.github.com/xgi/castero/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221541895,"owners_count":16840117,"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":["command-line","curses","hacktoberfest","podcast","podcast-client","terminal","tui"],"created_at":"2024-07-30T22:01:16.829Z","updated_at":"2024-10-26T14:32:02.546Z","avatar_url":"https://github.com/xgi.png","language":"Python","funding_links":[],"categories":["Python","Radio and podcasts","\u003ca name=\"music\"\u003e\u003c/a\u003eSound and music","Table of Contents","\u003ca name=\"tooling\"\u003e\u003c/a\u003etooling"],"sub_categories":["Misc"],"readme":"# castero\n\n[![GitHub release](https://img.shields.io/github/release/xgi/castero.svg?style=flat-square)](https://github.com/xgi/castero/releases) [![PyPI](https://img.shields.io/pypi/v/castero.svg?style=flat-square)](https://pypi.org/project/castero) [![GitHub Build](https://img.shields.io/github/actions/workflow/status/xgi/castero/ci.yml?branch=master\u0026style=flat-square)](https://circleci.com/gh/xgi/castero/tree/master) [![Maintainability](https://api.codeclimate.com/v1/badges/babcaad5cb2cca266c92/maintainability)](https://codeclimate.com/github/xgi/castero/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/babcaad5cb2cca266c92/test_coverage)](https://codeclimate.com/github/xgi/castero/test_coverage)\n\ncastero is a TUI podcast client for the terminal.\n\n![example client screenshot](https://raw.githubusercontent.com/xgi/castero/master/res/client_example.png)\n\n## Installation\n\nInstall from [PyPi](https://pypi.org/project/castero) with pip:\n\n```bash\n$ pip3 install castero\n```\n\nUpgrading:\n\n```bash\n$ pip3 install castero --upgrade\n```\n\n### Manual Installation\n\n```bash\n$ git clone https://github.com/xgi/castero\n$ cd castero\n$ sudo python setup.py install\n```\n\n## Dependencies\n\nRunning castero requires the following external dependencies:\n\n* Python \u003e= 3.5 (check the output of ``python --version``)\n* sqlite3\n* At least one of the following media players:\n  * vlc \u003e= 2.2.3\n  * (mpv and libmpv) \u003e= 0.14.0\n  \n## Usage\n\nAfter installing castero, it can be run with simply:\n\n```bash\n$ castero\n```\n\nThe help menu provides a list of controls and can be accessed by pressing\n\u003ckbd\u003eh\u003c/kbd\u003e. Alternatively, see the list below:\n\n```text\nCommands\n    h           - show this help screen\n    q           - exit the client\n    a           - add a feed\n    d           - delete the selected feed\n    r           - reload/refresh feeds\n    s           - save episode for offline playback\n    UP/DOWN     - navigate up/down in menus\n    RIGHT/LEFT  - navigate right/left in menus\n    PPAGE/NPAGE - scroll up/down in menus\n    ENTER       - play selected feed/episode\n    SPACE       - add selected feed/episode to queue\n    c           - clear the queue\n    n           - go to the next episode in the queue\n    i           - invert the order of the menu\n    /           - filter the contents of the menu\n    m           - mark episode as played/unplayed\n    p or k      - pause/play the current episode\n    f or l      - seek forward\n    b or j      - seek backward\n    =/-         - increase/decrease volume\n    ]/[         - increase/decrease playback speed\n    u           - show episode URL\n    1-5         - change between client layouts\n```\n\n### Importing/exporting feeds from another client\n\ncastero supports importing and exporting an [OPML file](https://en.wikipedia.org/wiki/OPML)\nof your subscriptions in order to easily transfer them between other podcast\nclients. Please refer to your other client's documentation for details on\nhow/if it supports this format.\n\nImporting and exporting from castero are available with command line flags.\nRun `castero --help` for details.\n\n## Configuration\n\nThe configuration file is located at `{HOME}/.config/castero/castero.conf`\nafter the client has been run at least once.\n\nPlease see the [default castero.conf](https://github.com/xgi/castero/blob/master/castero/templates/castero.conf)\nfor a list of available settings.\n\nUser data, including downloaded episodes and a database with your feed\ninformation, is located at `{HOME}/.local/share/castero/`. These files are not\nintended to be manually modified. Removing the database will simply cause\ncastero to replace it with an empty one the next time you run the client.\n\n## Testing\n\nThis project uses [pytest](https://pytest.org) for testing. To run tests, run\nthe following command in the project's root directory:\n\n```bash\n$ python -m pytest tests\n```\n\nYou can also run tests for an individual unit, i.e.:\n\n```bash\n$ python -m pytest tests/test_feed.py\n```\n\n## License\n\n[MIT License](https://github.com/xgi/castero/blob/master/LICENSE.txt)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxgi%2Fcastero","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxgi%2Fcastero","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxgi%2Fcastero/lists"}