Merge pull request #12 from PiratesIRC/claude/add-github-version-checker-011CV1F3iesvv3HC5qVfsYLn
Claude/add GitHub version checker 011 cv1 f3iesvv3 hc5q vfs y ln
This commit is contained in:
46
.gitignore
vendored
Normal file
46
.gitignore
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
*.so
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
|
||||
# Virtual environments
|
||||
venv/
|
||||
ENV/
|
||||
env/
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Testing
|
||||
.pytest_cache/
|
||||
.coverage
|
||||
htmlcov/
|
||||
|
||||
# Data files (cache)
|
||||
/data/
|
||||
*.log
|
||||
257
Stream-Mapparr/AU_channels.json
Normal file
257
Stream-Mapparr/AU_channels.json
Normal file
@@ -0,0 +1,257 @@
|
||||
{
|
||||
"country_code": "AU",
|
||||
"country_name": "Australia",
|
||||
"version": "2025-11-10",
|
||||
"channels": [
|
||||
{
|
||||
"channel_name": "ABC TV",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ABC",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ABC TV Plus",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ABC Family",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ABC Kids",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ABC Entertains",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ABC Me",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ABC News",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "SBS",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "SBS One",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "SBS Viceland",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "SBS World Movies",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "SBS Food",
|
||||
"category": "Lifestyle",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "NITV",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "SBS WorldWatch",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Seven",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "7",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "7 Sydney",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "7 Melbourne",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "7two",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "7mate",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "7flix",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "7Bravo",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Nine",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "9",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "9 Sydney",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "9 Melbourne",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "9Gem",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "9Go!",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "9Life",
|
||||
"category": "Lifestyle",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "9Rush",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "10",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Network 10",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "10 Peach",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "10 Bold",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "10 Shake",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Fox Sports",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Fox Sports News",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Fox Cricket",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Fox League",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Fox Footy",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ESPN",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "beIN Sports",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky News Australia",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Racing.com",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Lifestyle",
|
||||
"category": "Lifestyle",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Arena",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Discovery",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "History",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC Earth",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
}
|
||||
]
|
||||
}
|
||||
242
Stream-Mapparr/BR_channels.json
Normal file
242
Stream-Mapparr/BR_channels.json
Normal file
@@ -0,0 +1,242 @@
|
||||
{
|
||||
"country_code": "BR",
|
||||
"country_name": "Brazil",
|
||||
"version": "2025-11-10",
|
||||
"channels": [
|
||||
{
|
||||
"channel_name": "Globo",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TV Globo",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Record",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "RecordTV",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "SBT",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Band",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Rede Bandeirantes",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "RedeTV!",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TV Cultura",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TV Brasil",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "GloboNews",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "CNN Brasil",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Record News",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BandNews TV",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Jovem Pan News",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "SporTV",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "SporTV 2",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "SporTV 3",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ESPN",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ESPN 2",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ESPN 3",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ESPN 4",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BandSports",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Premiere",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Combate",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Multishow",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "GNT",
|
||||
"category": "Lifestyle",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Viva",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Canal Brasil",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Futura",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Telecine Premium",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Telecine Action",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Telecine Pipoca",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Telecine Fun",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Telecine Cult",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Gloob",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Gloobinho",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Cartoon Network",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Discovery Kids",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Nickelodeon",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Nick Jr.",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Disney Channel",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Discovery Channel",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "National Geographic",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "History",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Arte 1",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Terra Viva",
|
||||
"category": "Lifestyle",
|
||||
"type": "National"
|
||||
}
|
||||
]
|
||||
}
|
||||
252
Stream-Mapparr/DE_channels.json
Normal file
252
Stream-Mapparr/DE_channels.json
Normal file
@@ -0,0 +1,252 @@
|
||||
{
|
||||
"country_code": "DE",
|
||||
"country_name": "Germany",
|
||||
"version": "2025-11-10",
|
||||
"channels": [
|
||||
{
|
||||
"channel_name": "Das Erste",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ARD",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ZDF",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Arte",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "3sat",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "KiKA",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Phoenix",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Tagesschau24",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "One",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ZDFneo",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ZDFinfo",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BR Fernsehen",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "hr-fernsehen",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "MDR Fernsehen",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "NDR Fernsehen",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "Radio Bremen TV",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "rbb Fernsehen",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "SR Fernsehen",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "SWR Fernsehen",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "WDR Fernsehen",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "RTL",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "RTL Zwei",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "RTLZWEI",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Vox",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Super RTL",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "n-tv",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Nitro",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "RTLup",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "VOXup",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ProSieben",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sat.1",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Kabel Eins",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sixx",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ProSieben Maxx",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sat.1 Gold",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Kabel Eins Doku",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Welt",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "N24",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sport1",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Eurosport 1",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Bundesliga",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Sport DE",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Disney Channel",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Comedy Central",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "DMAX",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TLC",
|
||||
"category": "Lifestyle",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Tele 5",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Servus TV",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Deluxe Music",
|
||||
"category": "Music",
|
||||
"type": "National"
|
||||
}
|
||||
]
|
||||
}
|
||||
187
Stream-Mapparr/ES_channels.json
Normal file
187
Stream-Mapparr/ES_channels.json
Normal file
@@ -0,0 +1,187 @@
|
||||
{
|
||||
"country_code": "ES",
|
||||
"country_name": "Spain",
|
||||
"version": "2025-11-10",
|
||||
"channels": [
|
||||
{
|
||||
"channel_name": "La 1",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TVE La 1",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "La 2",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TVE La 2",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "24h",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TVE 24h",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Teledeporte",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TDP",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Clan",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Antena 3",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "laSexta",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Neox",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Nova",
|
||||
"category": "Lifestyle",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Mega",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Atreseries",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Telecinco",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Cuatro",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "FDF",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Boing",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Divinity",
|
||||
"category": "Lifestyle",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Energy",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Be Mad",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "DMAX",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Paramount Network",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Trece",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Real Madrid TV",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TV3",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "Canal Sur",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "ETB 1",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "ETB 2",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "TVG",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "Telemadrid",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "Movistar LaLiga",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Movistar Liga de Campeones",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "DAZN LaLiga",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "DAZN 1",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
}
|
||||
]
|
||||
}
|
||||
202
Stream-Mapparr/FR_channels.json
Normal file
202
Stream-Mapparr/FR_channels.json
Normal file
@@ -0,0 +1,202 @@
|
||||
{
|
||||
"country_code": "FR",
|
||||
"country_name": "France",
|
||||
"version": "2025-11-10",
|
||||
"channels": [
|
||||
{
|
||||
"channel_name": "TF1",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "France 2",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "France 3",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "France 3 Paris",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "France 3 Lyon",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "Canal+",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "France 5",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "M6",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Arte",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "C8",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "W9",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TMC",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TFX",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "NRJ 12",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "LCP",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "France 4",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BFMTV",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "CNews",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "CStar",
|
||||
"category": "Music",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Gulli",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TF1 Séries Films",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "L'Équipe",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "6ter",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "RMC Story",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "RMC Découverte",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Chérie 25",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "LCI",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Franceinfo",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "France 24",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Euronews",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Canal+ Sport",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Canal+ Cinéma",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "beIN Sports 1",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "beIN Sports 2",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "RMC Sport 1",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "RMC Sport 2",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Eurosport 1",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Eurosport 2",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TV5 Monde",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
}
|
||||
]
|
||||
}
|
||||
132
Stream-Mapparr/MX_channels.json
Normal file
132
Stream-Mapparr/MX_channels.json
Normal file
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"country_code": "MX",
|
||||
"country_name": "Mexico",
|
||||
"version": "2025-11-10",
|
||||
"channels": [
|
||||
{
|
||||
"channel_name": "Las Estrellas",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Canal 5",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Nueve",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Nu9ve",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "N+ Foro",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Foro TV",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TUDN",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Azteca Uno",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Azteca 7",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ADN 40",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "adn Noticias",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "a+",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "A Más",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "Imagen Televisión",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Excélsior TV",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Canal Once",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Canal 22",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Canal Catorce",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TV UNAM",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Canal del Congreso",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Canal 6",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "Multimedios",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "Distrito Comedia",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Tlnovelas",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "De Película",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
}
|
||||
]
|
||||
}
|
||||
347
Stream-Mapparr/UK_channels.json
Normal file
347
Stream-Mapparr/UK_channels.json
Normal file
@@ -0,0 +1,347 @@
|
||||
{
|
||||
"country_code": "UK",
|
||||
"country_name": "United Kingdom",
|
||||
"version": "2025-11-10",
|
||||
"channels": [
|
||||
{
|
||||
"channel_name": "BBC One",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC1",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC One London",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC One Scotland",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC One Wales",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC One NI",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC Two",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC2",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC Three",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC3",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC Four",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC4",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "CBBC",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "CBeebies",
|
||||
"category": "Kids",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC News",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC Parliament",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "BBC Alba",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "S4C",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "ITV",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ITV1",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ITV1 London",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "ITV1 Granada",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "ITV1 Wales",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "STV",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "UTV",
|
||||
"category": "Entertainment",
|
||||
"type": "Regional"
|
||||
},
|
||||
{
|
||||
"channel_name": "ITV2",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ITV3",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ITV4",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "ITVBe",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Channel 4",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "E4",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "More4",
|
||||
"category": "Lifestyle",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Film4",
|
||||
"category": "Movies",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "4seven",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Channel 5",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "5STAR",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "5USA",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "5Action",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "5Select",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Showcase",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Max",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Atlantic",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Witness",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Comedy",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Documentaries",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky History",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Nature",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Arts",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky News",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Sports Main Event",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Sports Premier League",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Sports Football",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Sports Cricket",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Sports F1",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Sky Sports Golf",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TNT Sports 1",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TNT Sports 2",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "TNT Sports 3",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Eurosport 1",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Eurosport 2",
|
||||
"category": "Sports",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Dave",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Gold",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "W",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Alibi",
|
||||
"category": "Entertainment",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Yesterday",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Eden",
|
||||
"category": "Documentary",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "GB News",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
},
|
||||
{
|
||||
"channel_name": "Talk",
|
||||
"category": "News",
|
||||
"type": "National"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
@@ -9,7 +9,9 @@ import csv
|
||||
import os
|
||||
import re
|
||||
import requests
|
||||
from datetime import datetime
|
||||
import urllib.request
|
||||
import urllib.error
|
||||
from datetime import datetime, timedelta
|
||||
from django.utils import timezone
|
||||
|
||||
# Django model imports
|
||||
@@ -37,8 +39,20 @@ class Plugin:
|
||||
@property
|
||||
def fields(self):
|
||||
"""Dynamically generate settings fields including channel database selection."""
|
||||
# Check for version updates (with caching)
|
||||
version_info = {'message': f"Current version: {self.version}", 'status': 'unknown'}
|
||||
try:
|
||||
version_info = self._check_version_update()
|
||||
except Exception as e:
|
||||
LOGGER.debug(f"[Stream-Mapparr] Error checking version update: {e}")
|
||||
|
||||
# Static fields that are always present
|
||||
static_fields = [
|
||||
{
|
||||
"id": "version_status",
|
||||
"type": "info",
|
||||
"label": version_info['message'],
|
||||
},
|
||||
{
|
||||
"id": "overwrite_streams",
|
||||
"label": "🔄 Overwrite Existing Streams",
|
||||
@@ -240,6 +254,7 @@ class Plugin:
|
||||
|
||||
def __init__(self):
|
||||
self.processed_data_file = "/data/stream_mapparr_processed.json"
|
||||
self.version_check_cache_file = "/data/stream_mapparr_version_check.json"
|
||||
self.loaded_channels = []
|
||||
self.loaded_streams = []
|
||||
self.channel_stream_matches = []
|
||||
@@ -247,6 +262,158 @@ class Plugin:
|
||||
|
||||
LOGGER.info(f"[Stream-Mapparr] {self.name} Plugin v{self.version} initialized")
|
||||
|
||||
def _get_latest_version(self, owner, repo):
|
||||
"""
|
||||
Fetches the latest release tag name from GitHub using only Python's standard library.
|
||||
|
||||
Args:
|
||||
owner (str): GitHub repository owner
|
||||
repo (str): GitHub repository name
|
||||
|
||||
Returns:
|
||||
str: Latest version tag or error message
|
||||
"""
|
||||
url = f"https://api.github.com/repos/{owner}/{repo}/releases/latest"
|
||||
|
||||
# Add a user-agent to avoid potential 403 Forbidden errors
|
||||
headers = {
|
||||
'User-Agent': 'Dispatcharr-Plugin-Version-Checker'
|
||||
}
|
||||
|
||||
try:
|
||||
# Create a request object with headers
|
||||
req = urllib.request.Request(url, headers=headers)
|
||||
|
||||
# Make the request and open the URL with a timeout
|
||||
with urllib.request.urlopen(req, timeout=5) as response:
|
||||
# Read the response and decode it as UTF-8
|
||||
data = response.read().decode('utf-8')
|
||||
|
||||
# Parse the JSON string
|
||||
json_data = json.loads(data)
|
||||
|
||||
# Get the tag name
|
||||
latest_version = json_data.get("tag_name")
|
||||
|
||||
if latest_version:
|
||||
return latest_version
|
||||
else:
|
||||
return None
|
||||
|
||||
except urllib.error.HTTPError as http_err:
|
||||
if http_err.code == 404:
|
||||
LOGGER.debug(f"[Stream-Mapparr] GitHub repo not found or has no releases: {http_err}")
|
||||
return None
|
||||
else:
|
||||
LOGGER.debug(f"[Stream-Mapparr] HTTP error checking version: {http_err.code}")
|
||||
return None
|
||||
except Exception as e:
|
||||
# Catch other errors like timeouts
|
||||
LOGGER.debug(f"[Stream-Mapparr] Error checking version: {str(e)}")
|
||||
return None
|
||||
|
||||
def _check_version_update(self):
|
||||
"""
|
||||
Check if a new version is available on GitHub.
|
||||
Uses caching to limit checks to once per day or when the plugin version changes.
|
||||
|
||||
Returns:
|
||||
dict: Contains 'message' and 'status' keys for display
|
||||
"""
|
||||
current_version = self.version
|
||||
github_owner = "PiratesIRC"
|
||||
github_repo = "Stream-Mapparr"
|
||||
|
||||
# Default response
|
||||
result = {
|
||||
'message': f"Current version: {current_version}",
|
||||
'status': 'unknown'
|
||||
}
|
||||
|
||||
try:
|
||||
# Load cache if it exists
|
||||
cache_data = {}
|
||||
should_check = True
|
||||
|
||||
if os.path.exists(self.version_check_cache_file):
|
||||
try:
|
||||
with open(self.version_check_cache_file, 'r', encoding='utf-8') as f:
|
||||
cache_data = json.load(f)
|
||||
|
||||
# Check if we need to recheck:
|
||||
# 1. Plugin version changed (upgrade/downgrade)
|
||||
# 2. More than 24 hours since last check
|
||||
cached_plugin_version = cache_data.get('plugin_version')
|
||||
last_check_str = cache_data.get('last_check')
|
||||
|
||||
if cached_plugin_version == current_version and last_check_str:
|
||||
# Parse the last check time
|
||||
last_check = datetime.fromisoformat(last_check_str)
|
||||
time_diff = datetime.now() - last_check
|
||||
|
||||
# If less than 24 hours, use cached data
|
||||
if time_diff < timedelta(hours=24):
|
||||
should_check = False
|
||||
latest_version = cache_data.get('latest_version')
|
||||
|
||||
# Compare versions
|
||||
if latest_version and latest_version != current_version:
|
||||
result = {
|
||||
'message': f"🎉 Update available! Current: {current_version} → Latest: {latest_version}",
|
||||
'status': 'update_available'
|
||||
}
|
||||
else:
|
||||
result = {
|
||||
'message': f"✅ You are up to date (v{current_version})",
|
||||
'status': 'up_to_date'
|
||||
}
|
||||
except Exception as e:
|
||||
LOGGER.debug(f"[Stream-Mapparr] Error reading version cache: {e}")
|
||||
should_check = True
|
||||
|
||||
# Perform the check if needed
|
||||
if should_check:
|
||||
latest_version = self._get_latest_version(github_owner, github_repo)
|
||||
|
||||
# Update cache
|
||||
cache_data = {
|
||||
'plugin_version': current_version,
|
||||
'latest_version': latest_version,
|
||||
'last_check': datetime.now().isoformat()
|
||||
}
|
||||
|
||||
try:
|
||||
with open(self.version_check_cache_file, 'w', encoding='utf-8') as f:
|
||||
json.dump(cache_data, f, indent=2)
|
||||
except Exception as e:
|
||||
LOGGER.debug(f"[Stream-Mapparr] Error writing version cache: {e}")
|
||||
|
||||
# Compare versions
|
||||
if latest_version and latest_version != current_version:
|
||||
result = {
|
||||
'message': f"🎉 Update available! Current: {current_version} → Latest: {latest_version}",
|
||||
'status': 'update_available'
|
||||
}
|
||||
elif latest_version:
|
||||
result = {
|
||||
'message': f"✅ You are up to date (v{current_version})",
|
||||
'status': 'up_to_date'
|
||||
}
|
||||
else:
|
||||
result = {
|
||||
'message': f"Current version: {current_version} (unable to check for updates)",
|
||||
'status': 'error'
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
LOGGER.debug(f"[Stream-Mapparr] Error in version check: {e}")
|
||||
result = {
|
||||
'message': f"Current version: {current_version} (update check failed)",
|
||||
'status': 'error'
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
def _get_channel_databases(self):
|
||||
"""
|
||||
Scan for channel database files and return metadata for each.
|
||||
|
||||
Reference in New Issue
Block a user