Skip to content
This repository was archived by the owner on Mar 22, 2025. It is now read-only.

Commit 27a0968

Browse files
authored
docs: Spruce up readme (#48)
1 parent 77fb435 commit 27a0968

File tree

8 files changed

+818
-66
lines changed

8 files changed

+818
-66
lines changed
File renamed without changes.

.assets/podcast-archiver-help.svg

Lines changed: 221 additions & 0 deletions
Loading

.github/workflows/linters.yaml

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ name: Linters
22

33
on:
44
pull_request:
5-
push:
6-
branches: [main]
75

86
jobs:
97
commitizen:
@@ -22,8 +20,34 @@ jobs:
2220

2321
- run: cz check --rev-range origin/main..HEAD
2422
shell: bash
25-
if: github.event_name == 'pull_request' || github.ref != 'refs/heads/main'
2623

27-
- run: cz check --rev-range HEAD~..
28-
shell: bash
29-
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
24+
pre-commit-extras:
25+
runs-on: ubuntu-latest
26+
steps:
27+
- name: Check out
28+
uses: actions/checkout@v3
29+
30+
- name: Install commitizen
31+
run: pipx install poetry
32+
33+
- name: Set up python
34+
uses: actions/setup-python@v4
35+
with:
36+
python-version: "3.10"
37+
cache: 'poetry'
38+
39+
- run: poetry install --with=dev
40+
41+
- uses: pre-commit/[email protected]
42+
with:
43+
extra_args: >
44+
rich-codex
45+
--all-files
46+
47+
- uses: actions/upload-artifact@v4
48+
with:
49+
name: assets
50+
path: |
51+
.assets/*
52+
retention-days: 3
53+
if: always()

.pre-commit-config.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ ci:
22
autofix_prs: false
33
autoupdate_schedule: quarterly
44
autoupdate_commit_msg: 'chore: [pre-commit.ci] pre-commit autoupdate'
5+
skip: # see linters.yaml -> pre-commit-extras job
6+
- "rich-codex"
57

68
repos:
79
- repo: https://github.com/astral-sh/ruff-pre-commit
@@ -25,6 +27,7 @@ repos:
2527
rev: "v4.4.0"
2628
hooks:
2729
- id: trailing-whitespace
30+
exclude_types: [svg]
2831
- id: end-of-file-fixer
2932
- id: check-yaml
3033
- id: debug-statements
@@ -39,3 +42,20 @@ repos:
3942
rev: '1.7.1'
4043
hooks:
4144
- id: poetry-check
45+
46+
- repo: local
47+
hooks:
48+
- id: rich-codex
49+
name: rich-codex
50+
language: system
51+
entry: >
52+
env
53+
FORCE_COLOR=1
54+
TERMINAL_WIDTH=140
55+
poetry run rich-codex
56+
--skip-git-checks
57+
--no-confirm
58+
--terminal-theme MONOKAI
59+
--created-files .assets/created.txt
60+
pass_filenames: false
61+
types: [markdown]

README.md

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<!-- markdownlint-disable MD033 MD013 -->
44
<div align="center">
55

6-
![Podcast Archiver Logo](assets/icon.png)
6+
![Podcast Archiver Logo](.assets/icon.png)
77

88
[![version](https://img.shields.io/pypi/v/podcast-archiver.svg)](https://pypi.org/project/podcast-archiver/)
99
[![python](https://img.shields.io/pypi/pyversions/podcast-archiver.svg)](https://pypi.org/project/podcast-archiver/)
@@ -19,45 +19,29 @@
1919

2020
</div>
2121

22-
Archive all episodes from your favorite podcasts.
22+
A fast and simple command line client to archive all episodes from your favorite podcasts.
2323

24-
The archiver takes the feed URLs of your favorite podcasts and downloads all available episodes for you. Even those files "hidden" in a paged feed will be tapped, so you'll have an entire backup of the series. The archiver also supports updating an existing archive, so that it lends itself to be set up as a cronjob.
25-
26-
## Outline
27-
28-
In my experience, very few full-fledged podcast clients are able to access a paged feed (following IETF RFC5005), so only the last few episodes of a podcast will be available to download. When you discover a podcast that has been around for quite a while, you'll have a hard time to follow the "gentle listener's duty" and listen to the whole archive. The script in this repository is supposed to help you acquiring every last episode of your new listening pleasure.
29-
30-
Before downloading any episode the function first fetches all available pages of the feed and prepares a list. That way, you will never miss any episode.
24+
Podcast Archiver takes the feed URLs of your favorite podcasts and downloads all available episodes for you—even those "hidden" in [paged feeds](https://podlove.org/paged-feeds/). You'll end up with a complete archive of your shows. The archiver also supports updating an existing archive, so that it lends itself to be set up as a cronjob.
3125

3226
## Setup
3327

34-
### Python package
35-
36-
`podcast-archiver` is Python 3.9+ compatible.
28+
Install via [pipx](https://pipx.pypa.io/stable/):
3729

3830
```bash
39-
# Latest tagged/published version on PyPI:
40-
pip install podcast-archiver
41-
42-
# Latest development version from main branch:
43-
pip install git+https://github.com/janw/podcast-archiver.git
31+
pipx install podcast-archiver
4432
```
4533

46-
### Docker image
47-
48-
Alternatively `podcast-archiver` is available as a docker image as well:
34+
Or use it via Docker:
4935

5036
```bash
51-
# Latest tagged/published version, same as on PyPI:
52-
docker run --rm ghcr.io/janw/podcast-archiver:latest
53-
54-
# Latest development version from main branch:
55-
docker run --rm ghcr.io/janw/podcast-archiver:edge
37+
docker run --tty --rm ghcr.io/janw/podcast-archiver --help
5638
```
5739

5840
## Usage
5941

60-
Run `podcast-archiver --help` for details on how to use it.
42+
Run `podcast-archiver --help` for details on how to use it:
43+
44+
![`poetry run podcast-archiver --help`](.assets/podcast-archiver-help.svg)
6145

6246
### Full-fledged example
6347

podcast_archiver/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ def generate_default_config(ctx: click.Context, param: click.Parameter, value: b
205205
type=ConfigPath(),
206206
expose_value=False,
207207
default=pathlib.Path(click.get_app_dir(PROG_NAME)) / "config.yaml",
208-
show_default=True,
208+
show_default=False,
209209
is_eager=True,
210210
show_envvar=True,
211211
help="Path to a config file. Command line arguments will take precedence.",

0 commit comments

Comments
 (0)