From 9033645f8d01914ad668467af4793d6df256b99a Mon Sep 17 00:00:00 2001 From: IPTV Playlist Bot Date: Sat, 28 Jun 2025 00:24:51 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=BA=20Updated=20playlist=20-=202025-06?= =?UTF-8?q?-28=2000:24?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backups/channels_20250627_221302.txt | 0 backups/channels_20250628_002450.txt | 11 ++++++++ reports/playlist_report_20250628_002450.md | 19 +++++++++++++ scripts/__init__.py | 25 +----------------- .../channel_processor.cpython-311.pyc | Bin 27889 -> 27889 bytes .../config_manager.cpython-311.pyc | Bin 14390 -> 14390 bytes .../__pycache__/file_manager.cpython-311.pyc | Bin 9155 -> 9155 bytes .../health_checker.cpython-311.pyc | Bin 6333 -> 14905 bytes .../playlist_builder.cpython-311.pyc | Bin 6189 -> 6189 bytes .../report_generator.cpython-311.pyc | Bin 10080 -> 10080 bytes 10 files changed, 31 insertions(+), 24 deletions(-) delete mode 100644 backups/channels_20250627_221302.txt create mode 100644 backups/channels_20250628_002450.txt create mode 100644 reports/playlist_report_20250628_002450.md diff --git a/backups/channels_20250627_221302.txt b/backups/channels_20250627_221302.txt deleted file mode 100644 index e69de29..0000000 diff --git a/backups/channels_20250628_002450.txt b/backups/channels_20250628_002450.txt new file mode 100644 index 0000000..00a07d4 --- /dev/null +++ b/backups/channels_20250628_002450.txt @@ -0,0 +1,11 @@ +Group = 🇬🇧 United Kingdom +Stream name = Sky Sports Mix FHD +Logo = https://i.ibb.co/7kYj5gc/sky-mix.png +EPG id = SkySp.Mix.HD.uk +Stream URL = https://a1xs.vip/2000008 + +Group = 🇬🇧 United Kingdom +Stream name = Sky Sports Mix FHD +Logo = https://i.ibb.co/7kYj5gc/sky-mix.png +EPG id = SkySp.Mix.HD.uk +Stream URL = https://a1xs.vip/2000008 \ No newline at end of file diff --git a/reports/playlist_report_20250628_002450.md b/reports/playlist_report_20250628_002450.md new file mode 100644 index 0000000..7ed60cf --- /dev/null +++ b/reports/playlist_report_20250628_002450.md @@ -0,0 +1,19 @@ +# IPTV Playlist Generation Report +**Generated:** 2025-06-28 00:24:50 + +## Summary Statistics +- **Total channels processed:** 2 +- **Valid channels:** 1 +- **Duplicates removed:** 1 +- **New channels imported:** 0 +- **Countries detected:** 1 + +## Channel Distribution by Country +- **🇬🇧 United Kingdom:** 1 channels + +## Configuration +- **Remove duplicates:** True +- **Auto country detection:** True +- **Quality detection:** True +- **Adult content filtering:** True +- **Health check enabled:** False diff --git a/scripts/__init__.py b/scripts/__init__.py index 56cbfe6..7994ee4 100644 --- a/scripts/__init__.py +++ b/scripts/__init__.py @@ -1,24 +1 @@ -""" -IPTV Playlist Generator Scripts Package -Modular components for playlist generation and management. -""" - -__version__ = "2.0.0" -__author__ = "IPTV Playlist Generator" - -# Import main classes for easier access -from .config_manager import ConfigManager -from .channel_processor import ChannelProcessor -from .file_manager import FileManager -from .playlist_builder import PlaylistBuilder -from .health_checker import HealthChecker -from .report_generator import ReportGenerator - -__all__ = [ - 'ConfigManager', - 'ChannelProcessor', - 'FileManager', - 'PlaylistBuilder', - 'HealthChecker', - 'ReportGenerator' -] \ No newline at end of file +# Scripts package diff --git a/scripts/__pycache__/channel_processor.cpython-311.pyc b/scripts/__pycache__/channel_processor.cpython-311.pyc index 0b4d636145285fdd32290f626c095f2ab88ba698..6f8b2902c10abc7b743f3c58a01b306f44d18b6d 100644 GIT binary patch delta 21 bcmex(lkwwCMy}<&yj%=GAYitU>v;|URzU{9 delta 21 bcmex(lkwwCMy}<&yj%=Guvcj#*Yg|zS?dQ` diff --git a/scripts/__pycache__/config_manager.cpython-311.pyc b/scripts/__pycache__/config_manager.cpython-311.pyc index 49accd0c1dcd3b2a1452a1784a719a527e86f914..246f45fc4ff90941ea20815ed0c94091db04f5c6 100644 GIT binary patch delta 19 Zcmdm1u&sb=IWI340}u$9ZRFCi0021F1cv|s delta 19 Zcmdm1u&sb=IWI340}$+0+Q_A20RTLJ1t0(b diff --git a/scripts/__pycache__/file_manager.cpython-311.pyc b/scripts/__pycache__/file_manager.cpython-311.pyc index 7c9a5b2f6708ce2603185264fbb31988d8c3cc43..509b5e816b1ff1e56ab7e13111089592757a9ae9 100644 GIT binary patch delta 19 ZcmX@?e%PIBIWI340}u$9ZRFai3;;Gg1jhgX delta 19 ZcmX@?e%PIBIWI340}$+0+Q_w282~xw1z-RG diff --git a/scripts/__pycache__/health_checker.cpython-311.pyc b/scripts/__pycache__/health_checker.cpython-311.pyc index 2dcff240a82d963bbe7ab31b6b453d9a723ed948..9af5b020f048ebe043da7ef215fac9f640eac91b 100644 GIT binary patch literal 14905 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