Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
927 changes: 927 additions & 0 deletions plugins/lineuparr/DO_Altice_lineup.json

Large diffs are not rendered by default.

1,075 changes: 1,075 additions & 0 deletions plugins/lineuparr/DO_Claro_lineup.json

Large diffs are not rendered by default.

1,267 changes: 1,267 additions & 0 deletions plugins/lineuparr/DO_Combined_lineup.json

Large diffs are not rendered by default.

837 changes: 837 additions & 0 deletions plugins/lineuparr/PE_Claro_lineup.json

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions plugins/lineuparr/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ Over 200 built-in channel aliases, plus your own in JSON. Every setting and acti
| `TZ_Azam-TV_lineup.json` | Azam TV | TZ | ~146 |
| `TZ_DStv-Premium_lineup.json` | DStv Premium | TZ | ~192 |
| `TZ_Combined_lineup.json` | TZ Combined (Azam TV + DStv Premium) | TZ | ~310 |
| `DO_Altice_lineup.json` | Altice | DO | ~224 |
| `DO_Claro_lineup.json` | Claro | DO | ~261 |
| `DO_Combined_lineup.json` | DO Combined (Altice + Claro) | DO | ~309 |
| `PE_Claro_lineup.json` | Claro Peru | PE | ~201 |

The beIN MENA lineup is regional rather than single country, so its country filtering is partial. Its filename country code is QA, which rejects streams tagged for a country outside the region: an Australian, Belgian or French beIN feed will not attach to one of its channels. Streams tagged for another Middle East or North Africa country, and streams tagged AR for Arabic, are treated as untagged and are kept, which is deliberate because those are the tags the region's own feeds carry.

Expand Down
257 changes: 257 additions & 0 deletions plugins/lineuparr/aliases.py
Original file line number Diff line number Diff line change
Expand Up @@ -504,4 +504,261 @@
"USA Network": ["Discovery Channel"],
"Oxygen True Crime": ["Investigation Discovery"],
},
"DO": {
"A&E Mundo": ["A&E Mundo Latinoamérica", "A&E Mundo Latinoamerica"],
"Acento TV": ["Acento TV HD"],
"Amé 47": ["Amé", "Ame", "Ame 47"],
"Az Corazón": [
"Azteca Corazón",
"Azteca Corazon",
"Azteca Corazón HD",
"Azteca Corazon HD",
],
"Az Mundo": ["Azteca Mundo"],
"Baby Tv": ["Baby TV", "BabyTV"],
"C-Music HD": ["C-Music", "C Music", "C Music HD"],
"Cadena del Milagro": ["Cadena Del Milagro"],
"Canal de las Estrellas": ["Las Estrellas"],
"Canal de las Estrellas HD": ["Las Estrellas HD"],
"Caribbean TV HD": ["Caribbean TV"],
"CDN Sports Max": ["CDN Deportes", "CDN Sports", "CDN Deportes Max"],
"CDN Sports Max HD": [
"CDN Deportes HD",
"CDN Sports HD",
"CDN Deportes Max HD",
],
"Cinecanal HD": ["CineCanal HD"],
"CNN Español": [
"CNN en Español",
"CNN Espanol",
"CNN en Espanol",
"CNN Spanish",
],
"CNN Headline News": ["Headline News", "HLN", "CNN HLN", "HLN Headline News"],
"CNN Internacional": ["CNN International", "CNNi"],
"CNN Live USA": ["CNN Live"],
"Color Vision HD": ["Colorvision HD", "Color Visión HD"],
"De Pelicula HD": ["De Película HD"],
"DIscovery Channel HD": ["Discovery Channel HD"],
"E! Entertainment": ["E!", "E Entertainment", "E Entertainment Television"],
"Enlace Cristiano": ["Enlace TBN"],
"Entelevisión": ["Entelevisión HD", "Entelevision", "Entelevision HD"],
"Escogido HD": ["Escogido TV", "Escogido TV HD"],
"ESPN 2": ["ESPN2"],
"ESPN 3": ["ESPN3"],
"ESPN 3 HD": ["ESPN3 HD"],
"Europa Europa HD": ["Europa HD", "Europa Europa"],
"FilmZone HD": ["Film Zone HD"],
"Fox LA HD": [
"Fox HD",
"Canal Fox HD",
"Fox Latinoamérica HD",
"Fox Latinoamerica HD",
],
"Fox Latin": ["Canal Fox", "Fox Latinoamérica", "Fox Latinoamerica"],
"Fox Sport 3 HD": ["Fox Sports 3 HD"],
"FXM": ["FX Movies", "FX Movie Channel", "Fox Movie Channel", "FXMovie"],
"Gigantes HD": ["Gigantes TV", "Gigantes TV HD"],
"Go HD": ["GO TV", "GO TV HD"],
"Gourmet HD": ["El Gourmet HD", "The Gourmet HD"],
"I.Sat": ["Isat", "I Sat"],
"Licey HD": ["Licey TV", "Licey TV HD"],
"Nat Geo LA HD": ["National Geographic HD", "NatGeo HD", "Nat Geo HD"],
"NBA TV HD": ["NBA TV", "NBATV"],
"Nickelodeon HD": ["Nick HD"],
"RAI Italia": ["RAI"],
"Ritmo Son": ["Ritmoson"],
"Romana TV": ["Romana TV (La Romana)"],
"Señales TV": [
"Señales TV (Sto. Dgo.)",
"Senales TV",
"Senales TV (Sto. Dgo.)",
"Señales TV Santo Domingo",
],
"Sony Entertainment Televisión": ["Sony", "Sony Entertainment Television"],
"Sony HD": [
"Sony Entertainment Televisión HD",
"Sony Entertainment Television HD",
],
"Sy-Fy Channel": ["SyFy", "Sci-Fi", "SciFi"],
"Telemundo Internacional": ["Telemundo"],
"Teleradioamérica HD": ["Teleradio América HD", "Teleradio America HD"],
"Televisa Deportes Network (TDN)": ["TDN", "Televisa Deportes Network"],
"Televisa Deportes Network (TDN) HD": [
"TDN HD",
"Televisa Deportes Network HD",
],
"The Golf Channel": ["Golf Channel", "Golf HD", "Golf Channel HD"],
"The Gourmet": ["El Gourmet", "Gourmet"],
"TL Novelas": ["TLNovelas", "TLNovelas HD"],
"Toros HD": ["Toros TV", "Toros TV HD"],
"TruTV": ["Tru TV", "truTV"],
"TVE Internacional": ["RTVE"],
"TVO Romana": [
"TVO",
"TVO (Televisión Oriental 49)",
"TVO (Television Oriental 49)",
"Televisión Oriental 49",
"Television Oriental 49",
],
"Universal Channel": ["Universal TV"],
"Universal HD": ["Universal TV HD", "Universal Channel HD"],
"VePlus TV": ["Venevisión Plus", "Venevision Plus", "Ve Plus TV"],
"VePlus TV HD": ["Venevisión Plus HD", "Venevision Plus HD", "Ve Plus TV HD"],
"Warner Channel HD": ["Warner HD"],
"Xtremo Premium": ["Extremo Premium"],
"Telemicro": ["Canal 5", "Telemicro 5"],
"Telemicro HD": ["Telemicro 5 HD", "Canal 5 HD"],
"CERTV": ["Channel 4", "Canal 4"],
"Claro Sports": ["Claro Sport"],
"Claro Sports HD": ["Claro Sport HD"],
"Color Visión": ["Colorvision", "Color Vision"],
"GDM Estudio": [
"GDM Television",
"GDM Televisión",
"GDM Television HD",
"GDM Televisión HD",
],
"Mía TV": ["Miavision", "Mia Vision", "Mía Visión"],
"Canal 10": ["Onda TV Canal 10", "Onda Canal 10"],
"RNN": ["RNN Canal 27"],
"Supercanal": [
"Super Canal 33",
"Super Canal 33 HD",
"Supercanal 33",
"Supercanal 33 HD",
],
"SuperTV55": ["Super TV 55", "Super TV 55 HD"],
"Telecanal": ["Telecanal 12"],
"Telecentro": ["Telecentro 13"],
"Teleradio América": ["Teleradio", "Teleradio America"],
"Telesistema": ["Telesistema 11"],
"La Voz de María": ["Voz de Maria", "Voz de María"],
"Maimón TV": ["MAIMON TV", "MAIMON TV 3", "MAIMON TV CANAL 3", "Maimon TV"],
"GH Television": ["GH TELEVISION", "GH TELEVISION CANAL 10", "GH TV"],
"Microvisión": [
"MICROVISION",
"MICROVISION CANAL 10",
"Microvision",
"Micro Vision",
],
"ORBIT TV": ["ORBIT TV", "ORBIT TV CANAL 10", "Orbit TV"],
"Yuna Visión": ["YUNA TV", "YUNA VISION", "YUNA VISION CANAL 10", "Yunavision"],
"Fuego TV": ["FUEGO TV", "FUEGO TV CANAL 40", "Fuego 40"],
"La Ruta 66 TV": ["LA RUTA TV", "LA RUTA 66 TV", "Ruta 66 TV"],
"El 75": ["EL 75", "CANAL 75", "EL75"],
"Zol FM TV": [
"ZOL 106 HD",
"ZOL 106",
"ZOL 106.5",
"ZOL 106.5 FM",
"ZOL FM TV",
],
"Digital809 TV": ["DIGITAL809 TV", "DIGITAL 809 TV", "Digital809"],
"Televisión Dominicana": [
"DOMINICANA HD",
"TELEVISION DOMINICANA",
"TELEVISIÓN DOMINICANA",
"TV DOMINICANA",
],
},
"PE": {
"Adrenalina Sports Network": ["Adrenalina Sports", "ASN Sports"],
"Adrenalina Sports Network HD": ["Adrenalina Sports HD", "ASN Sports HD"],
"ALACOCINA TV": ["A la Cocina TV", "Alacocina TV"],
"ALACOCINA TV HD": ["A la Cocina TV HD", "Alacocina TV HD"],
"América Trujillo": [
"America Trujillo",
"América TV Trujillo",
"America TV Trujillo",
],
"América TV": ["America TV", "América Televisión", "America Television"],
"América TV HD": [
"America TV HD",
"América Televisión HD",
"America Television HD",
],
"Antena 3 Internacional": ["Antena 3"],
"ARIRANG": ["Arirang"],
"ATV": ["Andina de Televisión", "Andina de Television", "ATV Perú", "ATV Peru"],
"ATV HD": [
"Andina de Televisión HD",
"Andina de Television HD",
"ATV Perú HD",
"ATV Peru HD",
],
"ATV Sur": ["ATV+ Sur", "ATV Plus Sur"],
"Azteca Mundo": ["Az Mundo"],
"Canal del Congreso": ["Congreso TV", "Canal Congreso"],
"Caracol Internacional": ["Caracol", "Nuestra Tele"],
"Cartoonito": ["Boomerang"],
"Cinecanal": ["CineCanal"],
"Cinelatino": ["Cine Latino", "CineLatino"],
"Claro Sports HD": ["Claro Sports Perú HD", "Claro Sports Peru HD"],
"CNN en Español": ["CNN Español", "CNN Espanol", "CNN Spanish"],
"CNN International": ["CNN Internacional", "CNNi"],
"El Gourmet": ["The Gourmet", "Gourmet"],
"ESNE TV": ["ESNE", "El Sembrador", "El Sembrador Nueva Evangelización"],
"Exitosa": ["Exitosa TV"],
"Exitosa HD": ["Exitosa TV HD"],
"France 24 Español HD": [
"France 24 Español",
"France24 Español",
"France 24 Spanish",
],
"Global": ["Global TV", "América Next", "America Next"],
"Global HD": ["Global TV HD", "América Next HD", "America Next HD"],
"HBO Xtreme": ["HBO Extreme"],
"HBO Xtreme HD": ["HBO Extreme HD"],
"IPE": ["Canal IPE", "IPe"],
"IPE HD": ["Canal IPE HD", "IPe HD"],
"L1 HD": ["Liga 1", "Liga1", "L1", "Liga 1 HD", "Liga1 HD"],
"L1 MAX HD": [
"Liga 1 Max",
"Liga1 Max",
"L1 Max",
"Liga 1 Max HD",
"Liga1 Max HD",
],
"L1 MAX HD (Superior Pro)": [
"L1 Max Superior Pro",
"Liga 1 Max Superior Pro",
"Liga1 Max Superior Pro",
],
"La Tele": ["LaTele"],
"Las Estrellas": ["Canal de las Estrellas", "Canal Las Estrellas"],
"Latina": ["Latina Televisión", "Latina Television"],
"Latina HD": ["Latina Televisión HD", "Latina Television HD"],
"Nativa": ["Nativa TV"],
"Nativa HD": ["Nativa TV HD"],
"Nick Music": ["NickMusic"],
"Panamericana": [
"Panamericana TV",
"Panamericana Televisión",
"Panamericana Television",
],
"Panamericana HD": [
"Panamericana TV HD",
"Panamericana Televisión HD",
"Panamericana Television HD",
],
"PBO": ["PBO Radio", "PBO TV"],
"PBO HD": ["PBO TV HD"],
"RPP": ["RPP TV", "RPP Noticias"],
"Sol TV+": ["Sol TV", "Sol TV Plus"],
"Telehit Música Plus": ["Telehit Musica Plus", "Telehit Plus"],
"TLNovelas": ["TL Novelas", "tlnovelas"],
"TV Cosmos": ["Cosmos TV"],
"TV Perú": ["TV Peru", "TVPerú"],
"TV Perú 7.3": ["TV Peru 7.3", "TVPerú 7.3"],
"TV Perú 7.3 HD": ["TV Peru 7.3 HD", "TVPerú 7.3 HD"],
"TV Perú HD": ["TV Peru HD", "TVPerú HD"],
"TV5Monde": ["TV5 Monde"],
"TyC Sports": ["TyC", "TyC Sports Internacional"],
"Universal Premiere": ["Universal Premier"],
"Universal Premiere 2": ["Universal Premier 2"],
"Viva TV": ["Viva TV Perú", "Viva TV Peru"],
"Willax": ["Willax TV"],
"Willax HD": ["Willax TV HD"],
},
}
12 changes: 11 additions & 1 deletion plugins/lineuparr/fuzzy_matcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"""

import re
import time
import logging
import unicodedata

Expand Down Expand Up @@ -334,6 +335,13 @@ def country_codes_in_text(text):
return codes


# Names between yields in precompute_normalizations. Dispatcharr runs plugins
# under gevent with early monkey-patching, where time.sleep(0) is gevent.sleep(0)
# and hands the worker back; on this installation 23,240 EPG names held it for 1.5 s with no yield
# (measured 2026-10-17). Elsewhere time.sleep(0) does nothing.
PRECOMPUTE_YIELD_EVERY = 500


class FuzzyMatcher(FuzzyMatcherCore):
"""Handles fuzzy matching for Lineuparr with alias support and channel number boosting."""

Expand Down Expand Up @@ -368,7 +376,9 @@ def precompute_normalizations(self, names, user_ignored_tags=None):
self._processed_cache.clear()
self._callsign_cache.clear()

for name in names:
for index, name in enumerate(names):
if index and index % PRECOMPUTE_YIELD_EVERY == 0:
time.sleep(0)
if self._is_group_header(name):
continue
norm = self.normalize_name(name, user_ignored_tags)
Expand Down
2 changes: 1 addition & 1 deletion plugins/lineuparr/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "Lineuparr",
"version": "1.26.2881058",
"version": "1.26.2901915",
"description": "Mirror real-world provider channel lineups by creating channel groups, channels, and fuzzy-matching IPTV streams to them.",
"author": "PiratesIRC",
"license": "MIT",
Expand Down
2 changes: 1 addition & 1 deletion plugins/lineuparr/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ def _clean_json_text(s):


class PluginConfig:
PLUGIN_VERSION = "1.26.2881058"
PLUGIN_VERSION = "1.26.2901915"

DEFAULT_FUZZY_MATCH_THRESHOLD = 80
DEFAULT_PRIORITIZE_QUALITY = True
Expand Down
Loading