Delete scripts/cleanup_channels.py
Some checks failed
📺 Generate M3U Playlist / build (push) Has been cancelled
Some checks failed
📺 Generate M3U Playlist / build (push) Has been cancelled
This commit is contained in:
parent
d4906e4a2c
commit
2fc4ae69fe
1 changed files with 0 additions and 129 deletions
|
@ -1,129 +0,0 @@
|
|||
import re
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
# Simple cleanup utility for corrupted channels.txt
|
||||
CHANNELS_FILE = 'channels.txt'
|
||||
|
||||
def clean_channels_file():
|
||||
"""Clean up corrupted channels.txt file."""
|
||||
|
||||
if not os.path.exists(CHANNELS_FILE):
|
||||
print("❌ channels.txt not found")
|
||||
return
|
||||
|
||||
print("🔧 Starting cleanup of channels.txt...")
|
||||
|
||||
# Read the file
|
||||
with open(CHANNELS_FILE, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
print(f"📄 Read {len(content)} characters from channels.txt")
|
||||
|
||||
# Split into channel blocks
|
||||
channel_blocks = re.split(r'\n\s*\n+', content.strip())
|
||||
print(f"📋 Found {len(channel_blocks)} channel blocks")
|
||||
|
||||
cleaned_channels = []
|
||||
fixed_count = 0
|
||||
|
||||
for i, block in enumerate(channel_blocks):
|
||||
if not block.strip():
|
||||
continue
|
||||
|
||||
print(f"🔍 Processing block {i+1}...")
|
||||
|
||||
# Parse the block
|
||||
channel = {}
|
||||
lines = block.strip().split('\n')
|
||||
|
||||
for line in lines:
|
||||
if '=' in line:
|
||||
key, value = line.split('=', 1)
|
||||
channel[key.strip()] = value.strip()
|
||||
|
||||
if not channel:
|
||||
continue
|
||||
|
||||
stream_name = channel.get('Stream name', 'Unknown')
|
||||
print(f" Channel: {stream_name}")
|
||||
|
||||
# Clean Stream URL
|
||||
stream_url = channel.get('Stream URL', '')
|
||||
original_url = stream_url
|
||||
|
||||
if '#EXTINF' in stream_url:
|
||||
stream_url = stream_url.split('#EXTINF')[0].strip()
|
||||
fixed_count += 1
|
||||
print(f" ✅ Fixed Stream URL (removed #EXTINF)")
|
||||
|
||||
if 'group-title=' in stream_url:
|
||||
stream_url = stream_url.split('group-title=')[0].strip()
|
||||
fixed_count += 1
|
||||
print(f" ✅ Fixed Stream URL (removed group-title)")
|
||||
|
||||
# Remove any trailing junk
|
||||
stream_url = re.sub(r'\s+.*$', '', stream_url)
|
||||
|
||||
if stream_url != original_url:
|
||||
print(f" 🔧 URL: {original_url[:50]}... → {stream_url[:50]}...")
|
||||
|
||||
channel['Stream URL'] = stream_url
|
||||
|
||||
# Clean Logo URL
|
||||
logo_url = channel.get('Logo', '')
|
||||
original_logo = logo_url
|
||||
|
||||
if logo_url and 'group-title=' in logo_url:
|
||||
logo_url = logo_url.split('group-title=')[0].strip()
|
||||
fixed_count += 1
|
||||
print(f" ✅ Fixed Logo URL")
|
||||
|
||||
if logo_url and '#EXTINF' in logo_url:
|
||||
logo_url = logo_url.split('#EXTINF')[0].strip()
|
||||
fixed_count += 1
|
||||
print(f" ✅ Fixed Logo URL")
|
||||
|
||||
channel['Logo'] = logo_url
|
||||
|
||||
cleaned_channels.append(channel)
|
||||
|
||||
print(f"\n📊 Summary:")
|
||||
print(f" Total channels: {len(cleaned_channels)}")
|
||||
print(f" Fixes applied: {fixed_count}")
|
||||
|
||||
if fixed_count > 0:
|
||||
# Create backup
|
||||
backup_name = f"{CHANNELS_FILE}.backup.{datetime.now().strftime('%Y%m%d_%H%M%S')}"
|
||||
print(f"💾 Creating backup: {backup_name}")
|
||||
|
||||
try:
|
||||
import shutil
|
||||
shutil.copy2(CHANNELS_FILE, backup_name)
|
||||
print(f"✅ Backup created successfully")
|
||||
except Exception as e:
|
||||
print(f"⚠️ Could not create backup: {e}")
|
||||
|
||||
# Write cleaned file
|
||||
print(f"📝 Writing cleaned channels.txt...")
|
||||
|
||||
with open(CHANNELS_FILE, 'w', encoding='utf-8') as f:
|
||||
for i, channel in enumerate(cleaned_channels):
|
||||
if i > 0:
|
||||
f.write("\n\n")
|
||||
|
||||
# Write channel block
|
||||
f.write(f"Group = {channel.get('Group', 'Uncategorized')}\n")
|
||||
f.write(f"Stream name = {channel.get('Stream name', 'Unknown Channel')}\n")
|
||||
f.write(f"Logo = {channel.get('Logo', '')}\n")
|
||||
f.write(f"EPG id = {channel.get('EPG id', '')}\n")
|
||||
f.write(f"Stream URL = {channel.get('Stream URL', '')}")
|
||||
|
||||
print(f"✅ Successfully cleaned and rewrote channels.txt!")
|
||||
print(f"🎉 Fixed {fixed_count} corrupted entries")
|
||||
|
||||
else:
|
||||
print("✅ No corrupted entries found - file is already clean!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
clean_channels_file()
|
Loading…
Add table
Add a link
Reference in a new issue