feat: Add audio playback system with Media3 and comprehensive audio content classification
- Add Media3 dependencies (ExoPlayer, HLS, MediaSession, UI) for audio streaming - Implement AudioPlayerService as MediaSessionService with foreground playback support - Create AudioHandler for playback control and AudioMedia domain model with AudioContentType enum - Add MiniPlayerBar and FullPlayerSheet UI components with play/pause, seek, and navigation controls - Implement AudioClassifier with strict priority
This commit is contained in:
@@ -47,13 +47,88 @@
|
||||
- Mode lecture focus sans distraction
|
||||
- Barre d'outils de formatage
|
||||
|
||||
### 🤖 Intelligence Artificielle (Google Gemini)
|
||||
### Intelligence Artificielle (Google Gemini)
|
||||
- **Analyse IA d'URL** : Extraction intelligente du titre, description et tags via Gemini
|
||||
- **Suggestions de tags IA** : Génération automatique de tags pertinents
|
||||
- **Classification de contenu** : Détection automatique du type (Article, Vidéo, Tutorial, Repository)
|
||||
- **Fallback multi-modèles** : Essai automatique de plusieurs modèles Gemini (2.5 Flash Lite → 1.5 Flash)
|
||||
- **Classification en lot** : Scan et classification de tous les bookmarks existants
|
||||
|
||||
### 🏷️ Scanner et Classer (Maintenance)
|
||||
La fonction **"Scanner et Classer"** disponible dans les paramètres permet d'analyser automatiquement tous vos bookmarks pour améliorer leur organisation :
|
||||
|
||||
#### Fonctionnement automatique
|
||||
1. **Analyse des URLs** : Le système examine chaque lien de votre collection
|
||||
2. **Détection du type de contenu** : Classification automatique selon 14 catégories :
|
||||
- **Article** : Articles de blog, actualités, publications
|
||||
- **Vidéo** : YouTube, Vimeo, Dailymotion, Twitch, Netflix
|
||||
- **🎵 Musique** : Spotify (tracks/albums/artists/playlists), Deezer, Tidal, Apple Music, YouTube Music, Bandcamp, SoundCloud, Mixcloud, Beatport
|
||||
- **📻 Radio** *(nouveau)* : TuneIn, Radio Garden, myTuner, iHeartRadio, OnlineRadioBox, radio.net, FluxRadios, Radio-Canada OHdio (direct/premiere), flux streaming (.m3u/.m3u8/.pls), serveurs Icecast/Shoutcast
|
||||
- **🎙️ Podcast** : Apple Podcasts, Overcast, Pocket Casts, Castbox, Stitcher, Acast, Anchor, Libsyn, Simplecast, Buzzsprout, Spotify (shows/épisodes), Radio-Canada OHdio (balados), flux RSS/XML audio
|
||||
- **Social** : Facebook, Twitter/X, Instagram, LinkedIn, Reddit, TikTok, Pinterest
|
||||
- **Repository** : GitHub, GitLab, BitBucket, StackOverflow
|
||||
- **Shopping** : Amazon, eBay, Etsy, AliExpress
|
||||
- **Document** : Google Docs, Notion, Trello, Jira, Confluence
|
||||
- **PDF** : Fichiers PDF directs
|
||||
- **Image** : Images directes, Imgur, Flickr
|
||||
- **Newsletter** : Lettres d'information (Substack, Revue, Mailchimp)
|
||||
- **News** : Sites d'actualités (BBC, CNN, Reuters, Le Monde, Le Figaro, The Guardian, New York Times, sites avec "news" dans le domaine)
|
||||
- **Unknown** : Contenu non identifié (sites personnels, blogs non catégorisés, outils spécialisés, contenu ne correspondant à aucune catégorie prédéfinie)
|
||||
|
||||
3. **Identification des sites** : Détection automatique du nom du site (YouTube, GitHub, Amazon, etc.)
|
||||
4. **Ajout de tags intelligents** : Ajout automatique de tags pertinents selon le type :
|
||||
- `video` pour les vidéos
|
||||
- `music` pour la musique
|
||||
- `radio` pour les radios
|
||||
- `podcast` pour les podcasts
|
||||
- `social` pour les réseaux sociaux
|
||||
- `news` pour les actualités
|
||||
- `repository`, `dev` pour le code
|
||||
- `shopping` pour les achats
|
||||
- `article`, `document`, `pdf`, `image`, `newsletter`
|
||||
|
||||
#### Classification audio intelligente (Radio / Podcast / Musique)
|
||||
|
||||
L'application utilise un classifieur audio dédié (`AudioClassifier`) qui analyse l'URL avec un **ordre de priorité strict** pour éviter les faux positifs :
|
||||
|
||||
1. **RADIO** (priorité la plus haute) — Détecté si :
|
||||
- L'URL pointe vers un flux streaming direct (`.m3u`, `.m3u8`, `.pls`)
|
||||
- L'hôte contient un serveur de streaming (Icecast, Shoutcast, StreamTheWorld)
|
||||
- Le sous-domaine est `stream.*` ou `live.*`
|
||||
- L'URL est sur un agrégateur radio (TuneIn, Radio Garden, iHeartRadio, etc.)
|
||||
- Radio-Canada OHdio : paths `/direct/`, `/premiere/`, `/audio-fil/` (hors balados)
|
||||
|
||||
2. **PODCAST** (priorité moyenne) — Détecté si :
|
||||
- L'URL est sur une plateforme dédiée (Apple Podcasts, Overcast, Pocket Casts, Anchor, etc.)
|
||||
- Spotify : paths `/show/` ou `/episode/` uniquement
|
||||
- Radio-Canada OHdio : paths contenant `/balados/`
|
||||
- Flux RSS/XML audio (`.xml`, `.rss`)
|
||||
|
||||
3. **MUSIQUE** (priorité standard) — Détecté si :
|
||||
- L'URL est sur un service de streaming musical (Deezer, Tidal, Apple Music, YouTube Music, Bandcamp, SoundCloud, Mixcloud, Beatport)
|
||||
- Spotify : paths `/track/`, `/album/`, `/artist/` ou `/playlist/`
|
||||
|
||||
> **Exemple Spotify** : `open.spotify.com/track/...` → Musique, `open.spotify.com/show/...` → Podcast, `open.spotify.com/episode/...` → Podcast
|
||||
|
||||
#### Avantages
|
||||
- **Organisation automatique** : Vos liens sont catégorisés sans effort manuel
|
||||
- **Filtrage amélioré** : Utilisez les tags auto-générés dans le menu latéral pour filtrer
|
||||
- **Statistiques précises** : Le tableau de bord affiche la répartition par type de contenu
|
||||
- **Recherche optimisée** : Les tags additionnels améliorent la recherche full-text
|
||||
|
||||
#### Utilisation
|
||||
1. Allez dans **Paramètres** → **Maintenance**
|
||||
2. Appuyez sur **"Scanner et Classer"**
|
||||
3. Patientez pendant l'analyse (le temps dépend du nombre de liens)
|
||||
4. Un message indique le nombre de liens mis à jour
|
||||
5. Les nouveaux tags sont immédiatement disponibles pour le filtrage
|
||||
|
||||
#### Notes importantes
|
||||
- Cette fonction ne modifie que les métadonnées (type, site, tags)
|
||||
- Le contenu de vos liens (titre, description, URL) reste inchangé
|
||||
- Les tags existants sont conservés, de nouveaux tags sont simplement ajoutés
|
||||
- L'opération est sans risque et peut être répétée si nécessaire
|
||||
|
||||
### 🌐 Extraction de Métadonnées
|
||||
- Extraction automatique des OpenGraph (titre, description, image) via JSoup
|
||||
- Détection du type de contenu (article, vidéo, image, audio, code, repository, social, etc.)
|
||||
|
||||
Reference in New Issue
Block a user