cro-dl 1.1.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. cro_dl-1.1.7/PKG-INFO +154 -0
  2. cro_dl-1.1.7/README.md +138 -0
  3. cro_dl-1.1.7/assets/images/broadcast.png +0 -0
  4. cro_dl-1.1.7/assets/images/episode.png +0 -0
  5. cro_dl-1.1.7/assets/images/series.png +0 -0
  6. cro_dl-1.1.7/cro_dl.egg-info/PKG-INFO +154 -0
  7. cro_dl-1.1.7/cro_dl.egg-info/SOURCES.txt +41 -0
  8. cro_dl-1.1.7/cro_dl.egg-info/dependency_links.txt +1 -0
  9. cro_dl-1.1.7/cro_dl.egg-info/entry_points.txt +2 -0
  10. cro_dl-1.1.7/cro_dl.egg-info/requires.txt +8 -0
  11. cro_dl-1.1.7/cro_dl.egg-info/top_level.txt +1 -0
  12. cro_dl-1.1.7/crodl/__init__.py +1 -0
  13. cro_dl-1.1.7/crodl/exceptions/__init__.py +9 -0
  14. cro_dl-1.1.7/crodl/exceptions/exc.py +28 -0
  15. cro_dl-1.1.7/crodl/main.py +86 -0
  16. cro_dl-1.1.7/crodl/program/__init__.py +7 -0
  17. cro_dl-1.1.7/crodl/program/audiowork.py +228 -0
  18. cro_dl-1.1.7/crodl/program/content.py +15 -0
  19. cro_dl-1.1.7/crodl/program/series.py +181 -0
  20. cro_dl-1.1.7/crodl/program/show.py +184 -0
  21. cro_dl-1.1.7/crodl/run.py +11 -0
  22. cro_dl-1.1.7/crodl/settings.py +24 -0
  23. cro_dl-1.1.7/crodl/streams/__init__.py +6 -0
  24. cro_dl-1.1.7/crodl/streams/audioparts.py +71 -0
  25. cro_dl-1.1.7/crodl/streams/dash.py +235 -0
  26. cro_dl-1.1.7/crodl/streams/download.py +35 -0
  27. cro_dl-1.1.7/crodl/streams/hls.py +119 -0
  28. cro_dl-1.1.7/crodl/streams/mp3.py +48 -0
  29. cro_dl-1.1.7/crodl/streams/utils.py +250 -0
  30. cro_dl-1.1.7/crodl/tools/__init__.py +0 -0
  31. cro_dl-1.1.7/crodl/tools/logger.py +20 -0
  32. cro_dl-1.1.7/crodl/tools/scrap.py +177 -0
  33. cro_dl-1.1.7/crodl/tools/timer.py +25 -0
  34. cro_dl-1.1.7/pyproject.toml +57 -0
  35. cro_dl-1.1.7/setup.cfg +4 -0
  36. cro_dl-1.1.7/tests/test_audioparts.py +67 -0
  37. cro_dl-1.1.7/tests/test_audiowork.py +203 -0
  38. cro_dl-1.1.7/tests/test_crodl.py +26 -0
  39. cro_dl-1.1.7/tests/test_dash.py +273 -0
  40. cro_dl-1.1.7/tests/test_download.py +123 -0
  41. cro_dl-1.1.7/tests/test_mp3.py +46 -0
  42. cro_dl-1.1.7/tests/test_scrap.py +292 -0
  43. cro_dl-1.1.7/tests/test_utils.py +183 -0
cro_dl-1.1.7/PKG-INFO ADDED
@@ -0,0 +1,154 @@
1
+ Metadata-Version: 2.2
2
+ Name: cro-dl
3
+ Version: 1.1.7
4
+ Summary: Enjoy the ČRo offline
5
+ Author-email: Oldrich Klimanek <klimanek@scinet.cz>
6
+ Requires-Python: <4.0,>=3.10
7
+ Description-Content-Type: text/markdown
8
+ Requires-Dist: requests<3.0.0,>=2.31.0
9
+ Requires-Dist: aiohttp<4.0.0,>=3.9.4
10
+ Requires-Dist: icecream<3.0.0,>=2.1.3
11
+ Requires-Dist: beautifulsoup4<5.0.0,>=4.12.3
12
+ Requires-Dist: rich<14.0.0,>=13.8.1
13
+ Requires-Dist: lxml<6.0.0,>=5.3.0
14
+ Requires-Dist: yaspin<4.0.0,>=3.0.2
15
+ Requires-Dist: asyncclick<9.0.0.0,>=8.1.7.2
16
+
17
+ ### 🇬🇧 English Summary
18
+ # 🐍 CRo-DL (Czech Radio Downloader)
19
+ Listen to MůjRozhlas.cz programs offline.
20
+
21
+ ## Overview
22
+ CRo-DL is a Python-based 🐍 tool that allows Czech Radio license payers to download and store radio programs locally for offline listening. It supports individual broadcasts, full series, and entire program schedules. Series are saved with episode numbers and user-friendly titles.
23
+
24
+ ⚠️ Respect copyright laws—downloaded content is for personal use only and should not be shared.
25
+
26
+ ## Dependencies
27
+ * Python 3.10+ is required.
28
+ * Czech Radio mainly uses MP3 and HLS/DASH streams (AAC/M4A).
29
+ * FFmpeg is required for handling DASH streams (optional).
30
+
31
+ ## Installation
32
+ CRo-DL can be installed via:
33
+
34
+ ### 📦 PyPI
35
+
36
+ ```
37
+ pip install cro-dl
38
+ ```
39
+
40
+ ### 🚀 uv (alternative method)
41
+ Download the source code (zip) and sync dependencies:
42
+
43
+ ```
44
+ uv sync
45
+ uv run cro-dl <url>
46
+ ```
47
+
48
+ ### 🔧 Git clone (development mode)
49
+ ```
50
+ git clone git@github.com:klimanek/cro-dl.git
51
+ uv sync
52
+ uv run cro-dl <url>
53
+ ```
54
+ ## Usage
55
+ 1️⃣ Open mujrozhlas.cz, find a broadcast, series, or episode.
56
+
57
+ 2️⃣ Copy the URL from the address bar.
58
+
59
+ 3️⃣ Run in the terminal:
60
+
61
+ ```
62
+ cro-dl <url>
63
+ ```
64
+
65
+ If multiple formats are available, MP3 is preferred. To specify a format (e.g., HLS):
66
+
67
+ ```cro-dl --stream-format "hls" <url>```
68
+
69
+ <hr />
70
+
71
+
72
+ ### 🇨🇿 Česká verze
73
+ # CRo-DL (Český Rozhlas Downloader)
74
+ Poslouchejte pořady z MůjRozhlas.cz i offline.
75
+
76
+ ## Popis
77
+ CRo-DL je nástroj umožňující každému koncesionáři ČRo stáhnout si pořady Českého rozhlasu lokálně na své zařízení s motivací je poslouchat mimo dosah vln. Dbejte autorských práv a díla stažená pro vlastní potřebu nešiřte dál.
78
+
79
+ Podporovány jsou jak jednotlivé rozhlasové příspěvky, tak i celé seriály a kompletní programy -- seriály se stahují s číslem dílu a pod svým názvem. Každý titul je uložen do vlastní složky.
80
+
81
+ ![Stažení seriálu](./assets/images/series.png)
82
+
83
+ Není-li ještě nějaký díl seriálu dostupný, CRo-DL vás upozorní a uvede datum i čas uvedení.
84
+
85
+ ## Závislosti
86
+ Software je napsaný v jazyce Python 🐍, proto byste v systému měli mít Python ve verzi alespoň 3.10.
87
+
88
+ Můjrozhlas.cz v zásadě používá formát mp3 pro svá díla (ČRo) a streamy HLS a DASH pro díla třetích stran. Preferovány jsou formáty mp3 a HLS pro stream. Pokud byste však chtěli z různých důvodů použít DASH, pro vytvoření a uložení finálního souboru je nutné mít v systému nainstalovaný [ffmpeg](https://www.ffmpeg.org/).
89
+
90
+ Externí balíčky v Pythonu jsou uvedeny ve specifikaci (viz `pyproject.toml`). Při instalaci se stáhnou a nainstalují automaticky.
91
+
92
+ ## Instalace
93
+ CRo-DL lze instalovat několika způsoby:
94
+
95
+ 1. PyPi / pip
96
+ 2. Zip + uv
97
+ 3. Git clone + uv
98
+
99
+
100
+ ### 📦 PyPi
101
+ Nejčastěji z PyPi pomocí nástroje `pip`:
102
+
103
+ ```
104
+ pip install cro-dl
105
+ ```
106
+
107
+ ### 🚀 uv
108
+ Alternativou je lokální použití CRo-DL pomocí nástroje [uv](https://docs.astral.sh/uv/) poté, co si stáhnete zde zip soubor s codebase.
109
+
110
+ `uv sync`
111
+
112
+ Nebo rovnou můžete stáhnout audio soubor z webu s <url>
113
+
114
+ ```
115
+ uv run cro-dl <url>
116
+ ```
117
+
118
+ a všechny závislosti se nainstalují automaticky.
119
+
120
+
121
+ Pro vývoj pak nejlepší bude klonovat zdejší repozitář:
122
+
123
+ ```
124
+ git clone git@github.com:klimanek/cro-dl.git
125
+ ```
126
+
127
+ ## Použití
128
+ Otevřete stránku mujrozhlas.cz, najděte si pořad / epizodu / seriál a z adresního řádku zkopírujte aktuální URL. Otevřte terminál a zadejte
129
+
130
+ ```
131
+ cro-dl <url>
132
+ ```
133
+
134
+ ## Příklad
135
+ [„Tuk dá každý raději než kostní dřeň.“ Endokrinolog vyvíjí novou léčbu diabetu kmenovými buňkami](https://www.mujrozhlas.cz/leonardo-plus/tuk-da-kazdy-radeji-nez-kostni-dren-endokrinolog-vyviji-novou-lecbu-diabetu-kmenovymi). Zkopírujte URL z adresního řádku a abyste si pořad stáhli, do terminálu zadejte
136
+
137
+ ```
138
+ cro-dl https://www.mujrozhlas.cz/leonardo-plus/tuk-da-kazdy-radeji-nez-kostni-dren-endokrinolog-vyviji-novou-lecbu-diabetu-kmenovymi
139
+ ```
140
+
141
+
142
+ Výsledkem bude:
143
+
144
+ ![Stažení příspěvku](./assets/images/broadcast.png)
145
+
146
+ V tomto případě jsou dostupné tři formáty: mp3, stream HLS a stream DASH. Většinou však bývá dostupný pouze stream, anebo soubor ve formátu mp3. Ten je preferován (viz soubor `settings.py`). Není-li dostupný, použije se HLS, DASH jako poslední.
147
+
148
+ Chcete-li si pořad stáhnout ve vámi preferovaném formátu, použijte možnost `--stream-format` (`-sf`):
149
+
150
+ ```
151
+
152
+ cro-dl --stream-format "hls" https://www.mujrozhlas.cz/leonardo-plus/tuk-da-kazdy-radeji-nez-kostni-dren-endokrinolog-vyviji-novou-lecbu-diabetu-kmenovymi
153
+
154
+ ```
cro_dl-1.1.7/README.md ADDED
@@ -0,0 +1,138 @@
1
+ ### 🇬🇧 English Summary
2
+ # 🐍 CRo-DL (Czech Radio Downloader)
3
+ Listen to MůjRozhlas.cz programs offline.
4
+
5
+ ## Overview
6
+ CRo-DL is a Python-based 🐍 tool that allows Czech Radio license payers to download and store radio programs locally for offline listening. It supports individual broadcasts, full series, and entire program schedules. Series are saved with episode numbers and user-friendly titles.
7
+
8
+ ⚠️ Respect copyright laws—downloaded content is for personal use only and should not be shared.
9
+
10
+ ## Dependencies
11
+ * Python 3.10+ is required.
12
+ * Czech Radio mainly uses MP3 and HLS/DASH streams (AAC/M4A).
13
+ * FFmpeg is required for handling DASH streams (optional).
14
+
15
+ ## Installation
16
+ CRo-DL can be installed via:
17
+
18
+ ### 📦 PyPI
19
+
20
+ ```
21
+ pip install cro-dl
22
+ ```
23
+
24
+ ### 🚀 uv (alternative method)
25
+ Download the source code (zip) and sync dependencies:
26
+
27
+ ```
28
+ uv sync
29
+ uv run cro-dl <url>
30
+ ```
31
+
32
+ ### 🔧 Git clone (development mode)
33
+ ```
34
+ git clone git@github.com:klimanek/cro-dl.git
35
+ uv sync
36
+ uv run cro-dl <url>
37
+ ```
38
+ ## Usage
39
+ 1️⃣ Open mujrozhlas.cz, find a broadcast, series, or episode.
40
+
41
+ 2️⃣ Copy the URL from the address bar.
42
+
43
+ 3️⃣ Run in the terminal:
44
+
45
+ ```
46
+ cro-dl <url>
47
+ ```
48
+
49
+ If multiple formats are available, MP3 is preferred. To specify a format (e.g., HLS):
50
+
51
+ ```cro-dl --stream-format "hls" <url>```
52
+
53
+ <hr />
54
+
55
+
56
+ ### 🇨🇿 Česká verze
57
+ # CRo-DL (Český Rozhlas Downloader)
58
+ Poslouchejte pořady z MůjRozhlas.cz i offline.
59
+
60
+ ## Popis
61
+ CRo-DL je nástroj umožňující každému koncesionáři ČRo stáhnout si pořady Českého rozhlasu lokálně na své zařízení s motivací je poslouchat mimo dosah vln. Dbejte autorských práv a díla stažená pro vlastní potřebu nešiřte dál.
62
+
63
+ Podporovány jsou jak jednotlivé rozhlasové příspěvky, tak i celé seriály a kompletní programy -- seriály se stahují s číslem dílu a pod svým názvem. Každý titul je uložen do vlastní složky.
64
+
65
+ ![Stažení seriálu](./assets/images/series.png)
66
+
67
+ Není-li ještě nějaký díl seriálu dostupný, CRo-DL vás upozorní a uvede datum i čas uvedení.
68
+
69
+ ## Závislosti
70
+ Software je napsaný v jazyce Python 🐍, proto byste v systému měli mít Python ve verzi alespoň 3.10.
71
+
72
+ Můjrozhlas.cz v zásadě používá formát mp3 pro svá díla (ČRo) a streamy HLS a DASH pro díla třetích stran. Preferovány jsou formáty mp3 a HLS pro stream. Pokud byste však chtěli z různých důvodů použít DASH, pro vytvoření a uložení finálního souboru je nutné mít v systému nainstalovaný [ffmpeg](https://www.ffmpeg.org/).
73
+
74
+ Externí balíčky v Pythonu jsou uvedeny ve specifikaci (viz `pyproject.toml`). Při instalaci se stáhnou a nainstalují automaticky.
75
+
76
+ ## Instalace
77
+ CRo-DL lze instalovat několika způsoby:
78
+
79
+ 1. PyPi / pip
80
+ 2. Zip + uv
81
+ 3. Git clone + uv
82
+
83
+
84
+ ### 📦 PyPi
85
+ Nejčastěji z PyPi pomocí nástroje `pip`:
86
+
87
+ ```
88
+ pip install cro-dl
89
+ ```
90
+
91
+ ### 🚀 uv
92
+ Alternativou je lokální použití CRo-DL pomocí nástroje [uv](https://docs.astral.sh/uv/) poté, co si stáhnete zde zip soubor s codebase.
93
+
94
+ `uv sync`
95
+
96
+ Nebo rovnou můžete stáhnout audio soubor z webu s <url>
97
+
98
+ ```
99
+ uv run cro-dl <url>
100
+ ```
101
+
102
+ a všechny závislosti se nainstalují automaticky.
103
+
104
+
105
+ Pro vývoj pak nejlepší bude klonovat zdejší repozitář:
106
+
107
+ ```
108
+ git clone git@github.com:klimanek/cro-dl.git
109
+ ```
110
+
111
+ ## Použití
112
+ Otevřete stránku mujrozhlas.cz, najděte si pořad / epizodu / seriál a z adresního řádku zkopírujte aktuální URL. Otevřte terminál a zadejte
113
+
114
+ ```
115
+ cro-dl <url>
116
+ ```
117
+
118
+ ## Příklad
119
+ [„Tuk dá každý raději než kostní dřeň.“ Endokrinolog vyvíjí novou léčbu diabetu kmenovými buňkami](https://www.mujrozhlas.cz/leonardo-plus/tuk-da-kazdy-radeji-nez-kostni-dren-endokrinolog-vyviji-novou-lecbu-diabetu-kmenovymi). Zkopírujte URL z adresního řádku a abyste si pořad stáhli, do terminálu zadejte
120
+
121
+ ```
122
+ cro-dl https://www.mujrozhlas.cz/leonardo-plus/tuk-da-kazdy-radeji-nez-kostni-dren-endokrinolog-vyviji-novou-lecbu-diabetu-kmenovymi
123
+ ```
124
+
125
+
126
+ Výsledkem bude:
127
+
128
+ ![Stažení příspěvku](./assets/images/broadcast.png)
129
+
130
+ V tomto případě jsou dostupné tři formáty: mp3, stream HLS a stream DASH. Většinou však bývá dostupný pouze stream, anebo soubor ve formátu mp3. Ten je preferován (viz soubor `settings.py`). Není-li dostupný, použije se HLS, DASH jako poslední.
131
+
132
+ Chcete-li si pořad stáhnout ve vámi preferovaném formátu, použijte možnost `--stream-format` (`-sf`):
133
+
134
+ ```
135
+
136
+ cro-dl --stream-format "hls" https://www.mujrozhlas.cz/leonardo-plus/tuk-da-kazdy-radeji-nez-kostni-dren-endokrinolog-vyviji-novou-lecbu-diabetu-kmenovymi
137
+
138
+ ```
Binary file
Binary file
Binary file
@@ -0,0 +1,154 @@
1
+ Metadata-Version: 2.2
2
+ Name: cro-dl
3
+ Version: 1.1.7
4
+ Summary: Enjoy the ČRo offline
5
+ Author-email: Oldrich Klimanek <klimanek@scinet.cz>
6
+ Requires-Python: <4.0,>=3.10
7
+ Description-Content-Type: text/markdown
8
+ Requires-Dist: requests<3.0.0,>=2.31.0
9
+ Requires-Dist: aiohttp<4.0.0,>=3.9.4
10
+ Requires-Dist: icecream<3.0.0,>=2.1.3
11
+ Requires-Dist: beautifulsoup4<5.0.0,>=4.12.3
12
+ Requires-Dist: rich<14.0.0,>=13.8.1
13
+ Requires-Dist: lxml<6.0.0,>=5.3.0
14
+ Requires-Dist: yaspin<4.0.0,>=3.0.2
15
+ Requires-Dist: asyncclick<9.0.0.0,>=8.1.7.2
16
+
17
+ ### 🇬🇧 English Summary
18
+ # 🐍 CRo-DL (Czech Radio Downloader)
19
+ Listen to MůjRozhlas.cz programs offline.
20
+
21
+ ## Overview
22
+ CRo-DL is a Python-based 🐍 tool that allows Czech Radio license payers to download and store radio programs locally for offline listening. It supports individual broadcasts, full series, and entire program schedules. Series are saved with episode numbers and user-friendly titles.
23
+
24
+ ⚠️ Respect copyright laws—downloaded content is for personal use only and should not be shared.
25
+
26
+ ## Dependencies
27
+ * Python 3.10+ is required.
28
+ * Czech Radio mainly uses MP3 and HLS/DASH streams (AAC/M4A).
29
+ * FFmpeg is required for handling DASH streams (optional).
30
+
31
+ ## Installation
32
+ CRo-DL can be installed via:
33
+
34
+ ### 📦 PyPI
35
+
36
+ ```
37
+ pip install cro-dl
38
+ ```
39
+
40
+ ### 🚀 uv (alternative method)
41
+ Download the source code (zip) and sync dependencies:
42
+
43
+ ```
44
+ uv sync
45
+ uv run cro-dl <url>
46
+ ```
47
+
48
+ ### 🔧 Git clone (development mode)
49
+ ```
50
+ git clone git@github.com:klimanek/cro-dl.git
51
+ uv sync
52
+ uv run cro-dl <url>
53
+ ```
54
+ ## Usage
55
+ 1️⃣ Open mujrozhlas.cz, find a broadcast, series, or episode.
56
+
57
+ 2️⃣ Copy the URL from the address bar.
58
+
59
+ 3️⃣ Run in the terminal:
60
+
61
+ ```
62
+ cro-dl <url>
63
+ ```
64
+
65
+ If multiple formats are available, MP3 is preferred. To specify a format (e.g., HLS):
66
+
67
+ ```cro-dl --stream-format "hls" <url>```
68
+
69
+ <hr />
70
+
71
+
72
+ ### 🇨🇿 Česká verze
73
+ # CRo-DL (Český Rozhlas Downloader)
74
+ Poslouchejte pořady z MůjRozhlas.cz i offline.
75
+
76
+ ## Popis
77
+ CRo-DL je nástroj umožňující každému koncesionáři ČRo stáhnout si pořady Českého rozhlasu lokálně na své zařízení s motivací je poslouchat mimo dosah vln. Dbejte autorských práv a díla stažená pro vlastní potřebu nešiřte dál.
78
+
79
+ Podporovány jsou jak jednotlivé rozhlasové příspěvky, tak i celé seriály a kompletní programy -- seriály se stahují s číslem dílu a pod svým názvem. Každý titul je uložen do vlastní složky.
80
+
81
+ ![Stažení seriálu](./assets/images/series.png)
82
+
83
+ Není-li ještě nějaký díl seriálu dostupný, CRo-DL vás upozorní a uvede datum i čas uvedení.
84
+
85
+ ## Závislosti
86
+ Software je napsaný v jazyce Python 🐍, proto byste v systému měli mít Python ve verzi alespoň 3.10.
87
+
88
+ Můjrozhlas.cz v zásadě používá formát mp3 pro svá díla (ČRo) a streamy HLS a DASH pro díla třetích stran. Preferovány jsou formáty mp3 a HLS pro stream. Pokud byste však chtěli z různých důvodů použít DASH, pro vytvoření a uložení finálního souboru je nutné mít v systému nainstalovaný [ffmpeg](https://www.ffmpeg.org/).
89
+
90
+ Externí balíčky v Pythonu jsou uvedeny ve specifikaci (viz `pyproject.toml`). Při instalaci se stáhnou a nainstalují automaticky.
91
+
92
+ ## Instalace
93
+ CRo-DL lze instalovat několika způsoby:
94
+
95
+ 1. PyPi / pip
96
+ 2. Zip + uv
97
+ 3. Git clone + uv
98
+
99
+
100
+ ### 📦 PyPi
101
+ Nejčastěji z PyPi pomocí nástroje `pip`:
102
+
103
+ ```
104
+ pip install cro-dl
105
+ ```
106
+
107
+ ### 🚀 uv
108
+ Alternativou je lokální použití CRo-DL pomocí nástroje [uv](https://docs.astral.sh/uv/) poté, co si stáhnete zde zip soubor s codebase.
109
+
110
+ `uv sync`
111
+
112
+ Nebo rovnou můžete stáhnout audio soubor z webu s <url>
113
+
114
+ ```
115
+ uv run cro-dl <url>
116
+ ```
117
+
118
+ a všechny závislosti se nainstalují automaticky.
119
+
120
+
121
+ Pro vývoj pak nejlepší bude klonovat zdejší repozitář:
122
+
123
+ ```
124
+ git clone git@github.com:klimanek/cro-dl.git
125
+ ```
126
+
127
+ ## Použití
128
+ Otevřete stránku mujrozhlas.cz, najděte si pořad / epizodu / seriál a z adresního řádku zkopírujte aktuální URL. Otevřte terminál a zadejte
129
+
130
+ ```
131
+ cro-dl <url>
132
+ ```
133
+
134
+ ## Příklad
135
+ [„Tuk dá každý raději než kostní dřeň.“ Endokrinolog vyvíjí novou léčbu diabetu kmenovými buňkami](https://www.mujrozhlas.cz/leonardo-plus/tuk-da-kazdy-radeji-nez-kostni-dren-endokrinolog-vyviji-novou-lecbu-diabetu-kmenovymi). Zkopírujte URL z adresního řádku a abyste si pořad stáhli, do terminálu zadejte
136
+
137
+ ```
138
+ cro-dl https://www.mujrozhlas.cz/leonardo-plus/tuk-da-kazdy-radeji-nez-kostni-dren-endokrinolog-vyviji-novou-lecbu-diabetu-kmenovymi
139
+ ```
140
+
141
+
142
+ Výsledkem bude:
143
+
144
+ ![Stažení příspěvku](./assets/images/broadcast.png)
145
+
146
+ V tomto případě jsou dostupné tři formáty: mp3, stream HLS a stream DASH. Většinou však bývá dostupný pouze stream, anebo soubor ve formátu mp3. Ten je preferován (viz soubor `settings.py`). Není-li dostupný, použije se HLS, DASH jako poslední.
147
+
148
+ Chcete-li si pořad stáhnout ve vámi preferovaném formátu, použijte možnost `--stream-format` (`-sf`):
149
+
150
+ ```
151
+
152
+ cro-dl --stream-format "hls" https://www.mujrozhlas.cz/leonardo-plus/tuk-da-kazdy-radeji-nez-kostni-dren-endokrinolog-vyviji-novou-lecbu-diabetu-kmenovymi
153
+
154
+ ```
@@ -0,0 +1,41 @@
1
+ README.md
2
+ pyproject.toml
3
+ cro_dl.egg-info/PKG-INFO
4
+ cro_dl.egg-info/SOURCES.txt
5
+ cro_dl.egg-info/dependency_links.txt
6
+ cro_dl.egg-info/entry_points.txt
7
+ cro_dl.egg-info/requires.txt
8
+ cro_dl.egg-info/top_level.txt
9
+ crodl/__init__.py
10
+ crodl/main.py
11
+ crodl/run.py
12
+ crodl/settings.py
13
+ crodl/../assets/images/broadcast.png
14
+ crodl/../assets/images/episode.png
15
+ crodl/../assets/images/series.png
16
+ crodl/exceptions/__init__.py
17
+ crodl/exceptions/exc.py
18
+ crodl/program/__init__.py
19
+ crodl/program/audiowork.py
20
+ crodl/program/content.py
21
+ crodl/program/series.py
22
+ crodl/program/show.py
23
+ crodl/streams/__init__.py
24
+ crodl/streams/audioparts.py
25
+ crodl/streams/dash.py
26
+ crodl/streams/download.py
27
+ crodl/streams/hls.py
28
+ crodl/streams/mp3.py
29
+ crodl/streams/utils.py
30
+ crodl/tools/__init__.py
31
+ crodl/tools/logger.py
32
+ crodl/tools/scrap.py
33
+ crodl/tools/timer.py
34
+ tests/test_audioparts.py
35
+ tests/test_audiowork.py
36
+ tests/test_crodl.py
37
+ tests/test_dash.py
38
+ tests/test_download.py
39
+ tests/test_mp3.py
40
+ tests/test_scrap.py
41
+ tests/test_utils.py
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ cro-dl = crodl.run:run
@@ -0,0 +1,8 @@
1
+ requests<3.0.0,>=2.31.0
2
+ aiohttp<4.0.0,>=3.9.4
3
+ icecream<3.0.0,>=2.1.3
4
+ beautifulsoup4<5.0.0,>=4.12.3
5
+ rich<14.0.0,>=13.8.1
6
+ lxml<6.0.0,>=5.3.0
7
+ yaspin<4.0.0,>=3.0.2
8
+ asyncclick<9.0.0.0,>=8.1.7.2
@@ -0,0 +1 @@
1
+ crodl
@@ -0,0 +1 @@
1
+ __version__ = "1.1.7"
@@ -0,0 +1,9 @@
1
+ from .exc import (
2
+ DownloadError as DownloadError,
3
+ DataEntryDoesNotExist as DataEntryDoesNotExist,
4
+ PlayerWrapperDoesNotExist as PlayerWrapperDoesNotExist,
5
+ AudioUUIDDoesNotExist as AudioUUIDDoesNotExist,
6
+ ShowUUIDDoesNotExist as ShowUUIDDoesNotExist,
7
+ PageDoesNotExist as PageDoesNotExist,
8
+ DataNotFound as DataNotFound,
9
+ )
@@ -0,0 +1,28 @@
1
+ class DownloadError(Exception):
2
+ pass
3
+
4
+
5
+ class DataEntryDoesNotExist(Exception):
6
+ pass
7
+
8
+
9
+ class PlayerWrapperDoesNotExist(Exception):
10
+ pass
11
+
12
+
13
+ class AudioUUIDDoesNotExist(Exception):
14
+ pass
15
+
16
+
17
+ class ShowUUIDDoesNotExist(Exception):
18
+ pass
19
+
20
+
21
+ class PageDoesNotExist(Exception):
22
+ def __init__(self, message) -> None:
23
+ self.message = message
24
+ super().__init__(message)
25
+
26
+
27
+ class DataNotFound(KeyError):
28
+ pass
@@ -0,0 +1,86 @@
1
+ import sys
2
+ from urllib.parse import urlparse
3
+
4
+ import asyncclick as click
5
+ from rich import print
6
+
7
+ from crodl.program.audiowork import AudioWork
8
+ from crodl.program.series import Series
9
+ from crodl.program.show import Show
10
+ from crodl.tools.scrap import cro_session, is_series, is_show
11
+ from crodl.tools.logger import crologger
12
+ from crodl.settings import SUPPORTED_DOMAINS, AudioFormat
13
+
14
+
15
+ def is_domain_supported(url: str) -> bool:
16
+ domain = urlparse(url).netloc
17
+
18
+ if not domain:
19
+ err = "The URL is invalid!"
20
+ crologger.error(err)
21
+ print(err)
22
+ raise ValueError(err)
23
+
24
+ return domain in SUPPORTED_DOMAINS
25
+
26
+
27
+ FORMAT_OPTIONS = {
28
+ "mp3": AudioFormat.MP3,
29
+ "hls": AudioFormat.HLS,
30
+ "dash": AudioFormat.DASH,
31
+ }
32
+
33
+
34
+ @click.command()
35
+ @click.argument("recording_url")
36
+ # @click.option("-d", "--download", is_flag=True, help="Spustí stahování")
37
+ @click.option(
38
+ "--stream-format",
39
+ "-sf",
40
+ type=click.Choice(list(FORMAT_OPTIONS.keys())),
41
+ default="mp3",
42
+ help="Formát audio streamu. (mp3, hls, dash)",
43
+ )
44
+ async def main(recording_url: str, stream_format: str, download: bool = True) -> None:
45
+ if not is_domain_supported(recording_url):
46
+ raise NotImplementedError(
47
+ f"Unsuported domain: {urlparse(recording_url).netloc}"
48
+ )
49
+
50
+ show, series = False, False
51
+
52
+ if is_show(recording_url, cro_session):
53
+ show = True
54
+ audiowork = Show(url=recording_url)
55
+ print(f"[bold yellow]{audiowork.title}[/bold yellow]")
56
+ print(f"Celkový počet dílů: {audiowork.episodes.count}")
57
+
58
+ if audiowork.are_all_parts_downloaded():
59
+ print("[bold yellow]Seriál byl již celý stažen.[/bold yellow]")
60
+ sys.exit(0)
61
+
62
+ elif is_series(recording_url, cro_session):
63
+ series = True
64
+ audiowork = Series(url=recording_url)
65
+ print(f"[bold yellow]{audiowork.title}[/bold yellow]")
66
+ print(f"Celkový počet dílů: {audiowork.parts}")
67
+
68
+ if audiowork.are_all_parts_downloaded():
69
+ print("[bold yellow]Seriál byl již celý stažen.[/bold yellow]")
70
+ sys.exit(0)
71
+ else:
72
+ audiowork = AudioWork(url=recording_url)
73
+ audiowork.info()
74
+
75
+ if show or series:
76
+ ans = input("Pokračovat ve stahování? [a/n] ")
77
+ if ans in ("a", "A", "y", "Y"):
78
+ await audiowork.download(audio_format=FORMAT_OPTIONS[stream_format])
79
+ else:
80
+ print("[bold magenta]OK, končím. :wave:[/bold magenta]")
81
+ sys.exit(0)
82
+ else:
83
+ if audiowork.already_exists():
84
+ print("[bold magenta]Soubor již existuje.[/bold magenta] :wave:")
85
+ sys.exit(0)
86
+ await audiowork.download(audio_format=FORMAT_OPTIONS[stream_format])
@@ -0,0 +1,7 @@
1
+ """Import all program modules."""
2
+
3
+ from crodl.program.audiowork import AudioWork
4
+ from crodl.program.series import Series
5
+ from crodl.program.show import Show
6
+
7
+ __all__ = ["AudioWork", "Series", "Show"]