msansm1/rss-podcast-dlpublic Fork
⑂ 61dfb8d
Commits
⬇ Clone ▾
git clone https://git.rickub.com/msansm1/rss-podcast-dl.git
git clone ssh://git@rickub.com/msansm1/rss-podcast-dl.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP

Add README.md with project documentation

msansm1 committed 2026-07-03T22:46:24+02:00 Browse files
61dfb8d parent: 901512c
added README.md +153 -0
new file mode 100644
@@ -0,0 +1,153 @@
1+# RSS Podcast Downloader
2+
3+Un outil en Rust avec interface egui pour télécharger automatiquement des podcasts à partir de flux RSS.
4+
5+## Fonctionnalités
6+
7+- **Gestion des flux RSS** : Ajout, modification et suppression de flux podcast
8+- **Téléchargement automatique** : Synchronisation et téléchargement des nouveaux épisodes
9+- **Dossiers personnalisés** : Chaque flux peut avoir son propre dossier de téléchargement
10+- **Interface graphique** : Application native avec egui (OpenGL)
11+- **Persistance** : Sauvegarde des flux configurés dans un fichier JSON
12+
13+## Prérequis
14+
15+- [Rust](https://www.rust-lang.org/) 1.70 ou supérieur
16+- Git (optionnel, pour cloner le dépôt)
17+
18+## Installation
19+
20+### À partir des sources
21+
22+```bash
23+# Cloner le dépôt
24+git clone https://github.com/votre-utilisateur/rss-podcast-dl-egui.git
25+cd rss-podcast-dl-egui
26+
27+# Compiler en mode release
28+cargo build --release
29+
30+# Le binaire sera généré dans target/release/rss-podcast-dl-egui.exe
31+```
32+
33+## Utilisation
34+
35+### Lancement
36+
37+```bash
38+cargo run
39+```
40+
41+Ou exécuter directement le binaire compilé :
42+```bash
43+./target/release/rss-podcast-dl-egui
44+```
45+
46+### Interface
47+
48+L'application propose une interface simple avec :
49+
50+- **Écran d'accueil** :
51+ - Bouton "Ajouter un flux" pour ajouter un nouveau flux RSS
52+ - Bouton "Synchroniser les flux" pour télécharger les nouveaux épisodes
53+ - Liste des flux configurés avec options d'édition et suppression
54+
55+- **Ajout d'un flux** :
56+ - **Nom du podcast** : Nom pour identifier le flux
57+ - **URL du flux RSS** : URL du flux RSS du podcast
58+ - **Dossier de téléchargement** : Chemin absolu vers le dossier de destination
59+
60+- **Édition d'un flux** :
61+ - Modification du nom, URL et dossier de téléchargement
62+ - Activation/désactivation du flux
63+
64+## Configuration
65+
66+Les flux sont automatiquement sauvegardés dans un fichier `feeds.json` situé dans :
67+- **Windows** : `%APPDATA%\rss-podcast-dl-egui\feeds.json`
68+- **Linux/macOS** : `~/.config/rss-podcast-dl-egui/feeds.json`
69+
70+### Format du fichier de configuration
71+
72+```json
73+[
74+ {
75+ "url": "https://exemple.com/podcast.rss",
76+ "name": "Nom du Podcast",
77+ "download_path": "/chemin/vers/dossier",
78+ "enabled": true
79+ }
80+]
81+```
82+
83+## Structure du projet
84+
85+```
86+.
87+├── src/
88+│ ├── app.rs # Application principale egui
89+│ ├── config/
90+│ │ ├── app_state.rs # État global de l'application
91+│ │ ├── feed.rs # Structure Feed et méthodes
92+│ │ ├── episode.rs # Structure Episode
93+│ │ ├── mod.rs # Exports du module config
94+│ │ └── storage.rs # Sauvegarde/chargement des flux
95+│ ├── main.rs # Point d'entrée
96+│ ├── rss/
97+│ │ ├── downloader.rs # Téléchargement des épisodes
98+│ │ ├── episode_extractor.rs # Extraction des épisodes depuis le RSS
99+│ │ ├── mod.rs
100+│ │ ├── parser.rs # Parsing du flux RSS
101+│ │ └── sync.rs # Synchronisation des flux
102+│ └── ui/
103+│ ├── add_feed_dialog.rs # Dialogue d'ajout de flux
104+│ ├── feed_edit_dialog.rs # Dialogue d'édition de flux
105+│ ├── feed_list.rs # Liste des flux
106+│ ├── home.rs # Écran d'accueil
107+│ └── mod.rs
108+├── spec/
109+│ ├── init-plan.md # Plan initial du projet
110+│ └── init-tasks.md # Tâches détaillées
111+└── Cargo.toml
112+```
113+
114+## Technologies utilisées
115+
116+- **Langage** : Rust
117+- **Framework UI** : [egui](https://github.com/emilk/egui) - Immediate mode GUI
118+- **Parsing RSS** : [rss](https://crates.io/crates/rss) crate
119+- **Sérialisation** : [serde](https://crates.io/crates/serde) avec [serde_json](https://crates.io/crates/serde_json)
120+- **Logging** : [log](https://crates.io/crates/log) avec [env_logger](https://crates.io/crates/env_logger)
121+- **Requêtes HTTP** : [reqwest](https://crates.io/crates/reqwest) (avec support blocking)
122+
123+## Dépendances
124+
125+Voir [Cargo.toml](Cargo.toml) pour la liste complète des dépendances.
126+
127+## Variables d'environnement
128+
129+- `RUST_LOG` : Niveau de logging (ex: `RUST_LOG=info`)
130+
131+## Roadmap
132+
133+- [x] Phase 1 : Structure de base et configuration
134+- [x] Phase 2 : Interface utilisateur principale
135+- [x] Phase 3 : Gestion des flux RSS
136+- [x] Phase 4 : Persistance des données
137+- [x] Phase 5 : Synchronisation et téléchargement
138+- [ ] Détection automatique des nouveaux épisodes
139+- [ ] Notifications de téléchargement
140+- [ ] Support des playlists
141+- [ ] Filtrage par date ou numéro d'épisode
142+
143+## Contribution
144+
145+Les contributions sont les bienvenues ! Ouvrez une issue ou soumettez une pull request.
146+
147+## Licence
148+
149+Ce projet est sous licence MIT. Voir [LICENSE](LICENSE) pour plus de détails.
150+
151+---
152+
153+Développé avec Rust et egui.
\ No newline at end of file
new file mode 100644
@@ -0,0 +1,153 @@
1+# RSS Podcast Downloader
2+
3+Un outil en Rust avec interface egui pour télécharger automatiquement des podcasts à partir de flux RSS.
4+
5+## Fonctionnalités
6+
7+- **Gestion des flux RSS** : Ajout, modification et suppression de flux podcast
8+- **Téléchargement automatique** : Synchronisation et téléchargement des nouveaux épisodes
9+- **Dossiers personnalisés** : Chaque flux peut avoir son propre dossier de téléchargement
10+- **Interface graphique** : Application native avec egui (OpenGL)
11+- **Persistance** : Sauvegarde des flux configurés dans un fichier JSON
12+
13+## Prérequis
14+
15+- [Rust](https://www.rust-lang.org/) 1.70 ou supérieur
16+- Git (optionnel, pour cloner le dépôt)
17+
18+## Installation
19+
20+### À partir des sources
21+
22+```bash
23+# Cloner le dépôt
24+git clone https://github.com/votre-utilisateur/rss-podcast-dl-egui.git
25+cd rss-podcast-dl-egui
26+
27+# Compiler en mode release
28+cargo build --release
29+
30+# Le binaire sera généré dans target/release/rss-podcast-dl-egui.exe
31+```
32+
33+## Utilisation
34+
35+### Lancement
36+
37+```bash
38+cargo run
39+```
40+
41+Ou exécuter directement le binaire compilé :
42+```bash
43+./target/release/rss-podcast-dl-egui
44+```
45+
46+### Interface
47+
48+L'application propose une interface simple avec :
49+
50+- **Écran d'accueil** :
51+ - Bouton "Ajouter un flux" pour ajouter un nouveau flux RSS
52+ - Bouton "Synchroniser les flux" pour télécharger les nouveaux épisodes
53+ - Liste des flux configurés avec options d'édition et suppression
54+
55+- **Ajout d'un flux** :
56+ - **Nom du podcast** : Nom pour identifier le flux
57+ - **URL du flux RSS** : URL du flux RSS du podcast
58+ - **Dossier de téléchargement** : Chemin absolu vers le dossier de destination
59+
60+- **Édition d'un flux** :
61+ - Modification du nom, URL et dossier de téléchargement
62+ - Activation/désactivation du flux
63+
64+## Configuration
65+
66+Les flux sont automatiquement sauvegardés dans un fichier `feeds.json` situé dans :
67+- **Windows** : `%APPDATA%\rss-podcast-dl-egui\feeds.json`
68+- **Linux/macOS** : `~/.config/rss-podcast-dl-egui/feeds.json`
69+
70+### Format du fichier de configuration
71+
72+```json
73+[
74+ {
75+ "url": "https://exemple.com/podcast.rss",
76+ "name": "Nom du Podcast",
77+ "download_path": "/chemin/vers/dossier",
78+ "enabled": true
79+ }
80+]
81+```
82+
83+## Structure du projet
84+
85+```
86+.
87+├── src/
88+│ ├── app.rs # Application principale egui
89+│ ├── config/
90+│ │ ├── app_state.rs # État global de l'application
91+│ │ ├── feed.rs # Structure Feed et méthodes
92+│ │ ├── episode.rs # Structure Episode
93+│ │ ├── mod.rs # Exports du module config
94+│ │ └── storage.rs # Sauvegarde/chargement des flux
95+│ ├── main.rs # Point d'entrée
96+│ ├── rss/
97+│ │ ├── downloader.rs # Téléchargement des épisodes
98+│ │ ├── episode_extractor.rs # Extraction des épisodes depuis le RSS
99+│ │ ├── mod.rs
100+│ │ ├── parser.rs # Parsing du flux RSS
101+│ │ └── sync.rs # Synchronisation des flux
102+│ └── ui/
103+│ ├── add_feed_dialog.rs # Dialogue d'ajout de flux
104+│ ├── feed_edit_dialog.rs # Dialogue d'édition de flux
105+│ ├── feed_list.rs # Liste des flux
106+│ ├── home.rs # Écran d'accueil
107+│ └── mod.rs
108+├── spec/
109+│ ├── init-plan.md # Plan initial du projet
110+│ └── init-tasks.md # Tâches détaillées
111+└── Cargo.toml
112+```
113+
114+## Technologies utilisées
115+
116+- **Langage** : Rust
117+- **Framework UI** : [egui](https://github.com/emilk/egui) - Immediate mode GUI
118+- **Parsing RSS** : [rss](https://crates.io/crates/rss) crate
119+- **Sérialisation** : [serde](https://crates.io/crates/serde) avec [serde_json](https://crates.io/crates/serde_json)
120+- **Logging** : [log](https://crates.io/crates/log) avec [env_logger](https://crates.io/crates/env_logger)
121+- **Requêtes HTTP** : [reqwest](https://crates.io/crates/reqwest) (avec support blocking)
122+
123+## Dépendances
124+
125+Voir [Cargo.toml](Cargo.toml) pour la liste complète des dépendances.
126+
127+## Variables d'environnement
128+
129+- `RUST_LOG` : Niveau de logging (ex: `RUST_LOG=info`)
130+
131+## Roadmap
132+
133+- [x] Phase 1 : Structure de base et configuration
134+- [x] Phase 2 : Interface utilisateur principale
135+- [x] Phase 3 : Gestion des flux RSS
136+- [x] Phase 4 : Persistance des données
137+- [x] Phase 5 : Synchronisation et téléchargement
138+- [ ] Détection automatique des nouveaux épisodes
139+- [ ] Notifications de téléchargement
140+- [ ] Support des playlists
141+- [ ] Filtrage par date ou numéro d'épisode
142+
143+## Contribution
144+
145+Les contributions sont les bienvenues ! Ouvrez une issue ou soumettez une pull request.
146+
147+## Licence
148+
149+Ce projet est sous licence MIT. Voir [LICENSE](LICENSE) pour plus de détails.
150+
151+---
152+
153+Développé avec Rust et egui.
\ No newline at end of file\ No newline at end of file