freeflix-cli 2.3.1__tar.gz → 2.4.1__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.
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/CHANGELOG.md +67 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/PKG-INFO +8 -6
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/README.md +7 -5
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/pyproject.toml +1 -1
- freeflix_cli-2.4.1/src/freeflix_cli/data/channel_logos.json +1 -0
- freeflix_cli-2.4.1/src/freeflix_cli/data/clubs.json +1 -0
- freeflix_cli-2.4.1/src/freeflix_cli/handlers/match.py +399 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/i18n.py +12 -1
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/install_health.py +1 -1
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/player_manager.py +127 -6
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/yacine_match.py +155 -5
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/yacine_live_proxy.py +37 -1
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_yacine_match.py +223 -4
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/uv.lock +1 -1
- freeflix_cli-2.3.1/src/freeflix_cli/handlers/match.py +0 -232
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/.github/workflows/binaries.yml +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/.github/workflows/ci.yml +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/.github/workflows/macos.yml +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/.github/workflows/release.yml +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/.gitignore +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/CONTRIBUTING.md +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/LICENSE +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/SECURITY.md +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/assets/logo.png +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/config/freeflix_position.lua +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/config/input.conf +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/config/mpv.conf +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/data/selectors.jsonc +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/data/source_portal.jsonc +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/docs/ARCHITECTURE.md +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/docs/AUDIT-FREEFLIX-2.0-2026-11-04.md +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/docs/CORRECTIONS-2.1.0.md +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/docs/README.md +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/docs/RELEASE.md +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/docs/SCORECARD-2.1.0.md +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/docs/TROUBLESHOOTING.md +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/docs/USAGE.md +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/scripts/build-binary.sh +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/scripts/install-mac.sh +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/scripts/install.ps1 +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/scripts/install.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/scripts/install.sh +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/scripts/wrappers/mpv +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/__init__.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/__main__.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/anilist.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/cli.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/cli_utils.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/cloudflare.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/config_loader.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/defaults.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/doctor.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/__init__.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/anilist.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/anime_sama.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/coflix.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/french_manga.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/french_stream.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/goldenanime.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/goldenms.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/hianime.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/nyaa.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/papystreaming.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/playback.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/handlers/yts.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/health.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/history_ui.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/httpcache.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/icons.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/languages.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/logsetup.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/main.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/motion.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/mpv_ipc.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/neon.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/net_config.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/notifications.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/platform_android.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/preview_picker.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/progress.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/providers_registry.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/proxy.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/recent.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/__init__.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/anime_sama.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/anime_sama_planning.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/coflix.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/config.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/deobfuscate.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/eztv.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/french_manga.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/french_stream.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/goldenanime.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/goldenms.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/nyaa.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/objects.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/papystreaming.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/player.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/resilient.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/subtitles.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/utils.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/scraping/yts.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/setup_assistant.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/splash.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/subtitles.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/terminal_image.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/themes.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/tracker.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/ui.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/src/freeflix_cli/update_checker.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/conftest.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_android_setup.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_anilist_errors.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_anilist_token_input.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_anime_sama_planning.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_audit_fixes.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_batch_download.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_coflix_parse.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_core_units.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_cover_cache.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_decoy_stream.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_download_fixes.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_download_integration.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_download_robustness.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_episode_parsing.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_fsvid_decode.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_health.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_httpcache.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_i18n_complete.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_keyboard.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_managed_binaries.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_mouse.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_mpv_ipc.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_navigation.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_nerd_font.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_nyaa.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_pack_a_polish.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_performance.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_platform_android.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_player_dash.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_polish.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_premium_players.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_providers_repair.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_proxy_endpoint.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_proxy_integration.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_proxy_resilient.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_proxy_ssrf.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_recent_new_episodes.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_release_config.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_resilient.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_scraper_resilience.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_search_parity.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_sendvid.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_stream_analysis.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_stream_integrity.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_system_deps_cache.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_terminal_image.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_update_prompt.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_v1105_improvements.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tests/test_v2_aesthetic.py +0 -0
- {freeflix_cli-2.3.1 → freeflix_cli-2.4.1}/tools/audit_providers.py +0 -0
|
@@ -1,5 +1,72 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.4.1
|
|
4
|
+
|
|
5
|
+
- **Match : une seule ligne par affiche**. Le catalogue répétait un même
|
|
6
|
+
match sur plusieurs créneaux (un « Twente - Ajax » en direct alors qu'un
|
|
7
|
+
autre du même jour était déjà terminé). Une entrée live/à venir/terminée
|
|
8
|
+
par match, la plus utile gagne.
|
|
9
|
+
- **Bascule automatique de source** : un match en direct expose désormais
|
|
10
|
+
HD, SD, Low et des flux **Multi**. Si la qualité choisie est refusée par
|
|
11
|
+
le CDN, FreeFlix essaie les autres sources au lieu de s'arrêter.
|
|
12
|
+
- **Contrôle avant lecture fiable** : le préflight passe par **ffmpeg en
|
|
13
|
+
direct** (comme la lecture) et lit sa sortie en continu. Le proxy local
|
|
14
|
+
déclenchait des 404 anti-hotlink et un live qui joue « sans fin » était
|
|
15
|
+
pris pour une panne — les deux sont corrigés. Les erreurs sont
|
|
16
|
+
distinguées : `403` (serveur qui refuse) vs `404/invalid data` (flux sans
|
|
17
|
+
données).
|
|
18
|
+
- **Multi en tête** : les flux « Multi » passent avant HD/SD/Low (source la
|
|
19
|
+
plus fiable en direct) ; tri stable, ordre du catalogue conservé à
|
|
20
|
+
qualité égale.
|
|
21
|
+
- Proxy HLS : rafraîchissement automatique de la playlist quand un segment
|
|
22
|
+
devient introuvable.
|
|
23
|
+
- 618 tests au vert, ruff OK.
|
|
24
|
+
|
|
25
|
+
## 2.4.0
|
|
26
|
+
|
|
27
|
+
- **Match regroupé par statut** : sections `En direct (n)`, `À venir (n)`,
|
|
28
|
+
`Terminés (n)` avec une **grille à colonnes fixes** (chaîne · heure ·
|
|
29
|
+
équipes · compétition). Les largeurs sont calculées en cellules réelles
|
|
30
|
+
sur tout l'écran, donc les heures et les équipes sont parfaitement
|
|
31
|
+
alignées d'une section à l'autre.
|
|
32
|
+
- **Badges de chaîne génériques** : `beIN N` → `BN` (toutes les chaînes),
|
|
33
|
+
`Dubai Sports N` → `DSN`, et toute autre chaîne reçoit une abréviation
|
|
34
|
+
courte (≤ 6 caractères).
|
|
35
|
+
- **Noms d'équipes corrigés** : dictionnaire de clubs embarqué
|
|
36
|
+
(`data/clubs.json`, ~430 entrées) utilisé avant la traduction machine,
|
|
37
|
+
plus une liste de rejets pour les traductions littérales. Fini
|
|
38
|
+
« ليل → nuit », « مان يونايتد → Homme Uni », « انجيه → Enregistrez-le ».
|
|
39
|
+
- **`LIVE` traduit** en `EN DIRECT` (FR).
|
|
40
|
+
- **Logos de chaînes** : index iptv-org embarqué
|
|
41
|
+
(`data/channel_logos.json`, ~30 k entrées) pour afficher le logo d'une
|
|
42
|
+
chaîne à partir de son nom.
|
|
43
|
+
- Cache de traductions versionné : les valeurs erronées des anciennes
|
|
44
|
+
versions sont automatiquement régénérées.
|
|
45
|
+
- **Contrôle avant lecture d'un match** : le manifeste est testé (DNS + HLS)
|
|
46
|
+
avant de lancer le lecteur. Une chaîne retirée ou bloquée affiche
|
|
47
|
+
« Impossible de lire ce match : serveur injoignable » au lieu d'ouvrir un
|
|
48
|
+
lecteur qui se referme aussitôt. Les chaînes Dubai Sports sont concernées
|
|
49
|
+
aujourd'hui (CDN `mgmlcdn.com`/`mangomolo.com` ne résout plus).
|
|
50
|
+
- 614 tests au vert, ruff OK.
|
|
51
|
+
|
|
52
|
+
## 2.3.3
|
|
53
|
+
|
|
54
|
+
- **Match : badges de chaîne généralisés**. beIN 1..N → `B1`..`BN`
|
|
55
|
+
(plus seulement 1–4), Dubai Sports N → `DSN`, et toute autre chaîne reçoit
|
|
56
|
+
une abréviation courte (`Canal+ Sport 2` → `CS2`, `Sky Sports F1` → `SSF`,
|
|
57
|
+
`ESPN` → `E`). Fin des libellés complets dans la liste.
|
|
58
|
+
- Testé sur le catalogue courant (18 matchs, 8 chaînes différentes).
|
|
59
|
+
|
|
60
|
+
## 2.3.2
|
|
61
|
+
|
|
62
|
+
- **Match buffer 20 s, démarrage rapide** : mpv utilise
|
|
63
|
+
`cache-secs=20` + `demuxer-readahead-secs=20` + `cache-pause=no`
|
|
64
|
+
(première image en ~1 s sur le test synthétique) ;
|
|
65
|
+
- VLC revient à la lecture **ffmpeg → TS** (celle qui ne s'arrêtait pas),
|
|
66
|
+
sans cache réseau 20 s : démarrage immédiat et flux continu ;
|
|
67
|
+
- la lecture reste au bord du live tout en gardant 20 s de marge pour
|
|
68
|
+
les connexions instables.
|
|
69
|
+
|
|
3
70
|
## 2.3.1
|
|
4
71
|
|
|
5
72
|
- **Qualités Match prêtes pour le futur** : 4K/2160p (≥ 15,0 Mbps,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: freeflix-cli
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.1
|
|
4
4
|
Summary: Watch movies, series, and anime from your terminal — multi-language, multi-source, no browser required. A maintained fork of autoflix-cli.
|
|
5
5
|
Project-URL: Homepage, https://github.com/freedy237/freeflix-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/freedy237/freeflix-cli.git
|
|
@@ -121,7 +121,7 @@ Description-Content-Type: text/markdown
|
|
|
121
121
|
| 🆕 | **Nouveautés** : new episodes of the shows you follow, cleared once watched |
|
|
122
122
|
| 🖱 | **Full mouse control** : hover, click, wheel, right-click back, clickable pagination |
|
|
123
123
|
| 🎨 | **Cinema Noir** (2.0) design system, 12 themes, reduced-motion support |
|
|
124
|
-
| ⚽ | **Match** : live football from YacineTV,
|
|
124
|
+
| ⚽ | **Match** : live football from YacineTV grouped by status (live / upcoming / finished), aligned columns, short channel badges, HD/SD/Low/4K + Auto with bitrate and GB/h, mpv/VLC |
|
|
125
125
|
| 🎬 | **Browse Films, Séries & Anime** : the provider list, grouped as before |
|
|
126
126
|
| 🎮 | **4 player backends** : mpv, VLC, browser, download-only |
|
|
127
127
|
| 🇫🇷 | **French UI** : the whole CLI is in French when language is set to FR |
|
|
@@ -246,10 +246,12 @@ freeflix
|
|
|
246
246
|
That's it. The menu walks you through everything.
|
|
247
247
|
|
|
248
248
|
- **Films, Séries & Anime** opens the provider list (unchanged grouping).
|
|
249
|
-
- **Match**
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
mpv or VLC.
|
|
249
|
+
- **Match** groups live, upcoming and finished football under section
|
|
250
|
+
headers with aligned columns (channel · kick-off in Cameroon time · teams ·
|
|
251
|
+
competition). Quality rows add resolution, minimum bitrate and estimated
|
|
252
|
+
GB/hour; pick **Auto** or a quality, then mpv or VLC. Team names are
|
|
253
|
+
localized from a bundled club dictionary, and every stream is checked
|
|
254
|
+
before the player opens (a dead channel shows a clear message).
|
|
253
255
|
- Player settings are isolated: FreeFlix never edits your global mpv/VLC
|
|
254
256
|
configuration.
|
|
255
257
|
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
| 🆕 | **Nouveautés** : new episodes of the shows you follow, cleared once watched |
|
|
90
90
|
| 🖱 | **Full mouse control** : hover, click, wheel, right-click back, clickable pagination |
|
|
91
91
|
| 🎨 | **Cinema Noir** (2.0) design system, 12 themes, reduced-motion support |
|
|
92
|
-
| ⚽ | **Match** : live football from YacineTV,
|
|
92
|
+
| ⚽ | **Match** : live football from YacineTV grouped by status (live / upcoming / finished), aligned columns, short channel badges, HD/SD/Low/4K + Auto with bitrate and GB/h, mpv/VLC |
|
|
93
93
|
| 🎬 | **Browse Films, Séries & Anime** : the provider list, grouped as before |
|
|
94
94
|
| 🎮 | **4 player backends** : mpv, VLC, browser, download-only |
|
|
95
95
|
| 🇫🇷 | **French UI** : the whole CLI is in French when language is set to FR |
|
|
@@ -214,10 +214,12 @@ freeflix
|
|
|
214
214
|
That's it. The menu walks you through everything.
|
|
215
215
|
|
|
216
216
|
- **Films, Séries & Anime** opens the provider list (unchanged grouping).
|
|
217
|
-
- **Match**
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
mpv or VLC.
|
|
217
|
+
- **Match** groups live, upcoming and finished football under section
|
|
218
|
+
headers with aligned columns (channel · kick-off in Cameroon time · teams ·
|
|
219
|
+
competition). Quality rows add resolution, minimum bitrate and estimated
|
|
220
|
+
GB/hour; pick **Auto** or a quality, then mpv or VLC. Team names are
|
|
221
|
+
localized from a bundled club dictionary, and every stream is checked
|
|
222
|
+
before the player opens (a dead channel shows a clear message).
|
|
221
223
|
- Player settings are isolated: FreeFlix never edits your global mpv/VLC
|
|
222
224
|
configuration.
|
|
223
225
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "freeflix-cli"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.4.1"
|
|
8
8
|
description = "Watch movies, series, and anime from your terminal — multi-language, multi-source, no browser required. A maintained fork of autoflix-cli."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9.2"
|