mirror of
https://github.com/LaQuay/TDTChannels.git
synced 2024-11-22 17:03:24 +01:00
168 lines
7.2 KiB
Python
168 lines
7.2 KiB
Python
# coding=utf-8
|
|
|
|
import json
|
|
|
|
import requests
|
|
|
|
from ambit import Ambito
|
|
from channel import Channel
|
|
from country import Country
|
|
|
|
|
|
def substring(text, match):
|
|
return text.split(match)
|
|
|
|
|
|
def stringbetween(text, start, end):
|
|
text_from_start_to_all = substring(text, start)[1]
|
|
text_from_start_to_end = substring(text_from_start_to_all, end)[0]
|
|
return text_from_start_to_end
|
|
|
|
|
|
def get_channels_from_part(text):
|
|
line_where_first_channel_starts = 15
|
|
attributes_per_item = 6
|
|
channel_list = []
|
|
list_to_iterate = text.split("|")[line_where_first_channel_starts:]
|
|
while "\n" in list_to_iterate:
|
|
list_to_iterate.remove("\n")
|
|
while "\n\n" in list_to_iterate:
|
|
list_to_iterate.remove("\n\n")
|
|
for i in range(0, len(list_to_iterate), attributes_per_item):
|
|
item_name = list_to_iterate[i].strip()
|
|
|
|
item_options = list_to_iterate[i + 1].strip()
|
|
|
|
item_web = list_to_iterate[i + 2].strip()
|
|
if len(item_web) > 0 and item_web[0] != "-":
|
|
item_web = stringbetween(item_web, "(", ")")
|
|
if len(item_web) == 1:
|
|
item_web = ""
|
|
|
|
item_resolution = list_to_iterate[i + 3].strip()
|
|
if len(item_resolution) == 1:
|
|
item_resolution = ""
|
|
|
|
item_logo = list_to_iterate[i + 4].strip()
|
|
if len(item_logo) > 0 and item_logo[0] != "-":
|
|
item_logo = stringbetween(item_logo, "(", ")")
|
|
if len(item_logo) == 1:
|
|
item_logo = ""
|
|
|
|
item_epg = list_to_iterate[i + 5].strip()
|
|
if len(item_epg) == 1:
|
|
item_epg = ""
|
|
|
|
item_options = item_options.split(" - ")
|
|
|
|
channel = Channel(item_name, item_web, item_resolution, item_logo, item_epg)
|
|
if len(item_options) > 0 and item_options[0] != "-":
|
|
for option in item_options:
|
|
format = (option[1:5]).replace("]", "")
|
|
url = stringbetween(option, "(", ")")
|
|
channel.add_option(format, url)
|
|
channel_list.append(channel)
|
|
return channel_list
|
|
|
|
|
|
page = requests.get('https://raw.githubusercontent.com/LaQuay/TDTChannels/master/TELEVISION.md',
|
|
headers={'Cache-Control': 'no-cache'})
|
|
content = str(page.text)
|
|
|
|
spain = Country("Spain")
|
|
international = Country("International")
|
|
|
|
canales_nacionales = stringbetween(content, "### Nacionales", "### Informativos")
|
|
spain.add_ambit(Ambito("Generalistas", get_channels_from_part(canales_nacionales)))
|
|
|
|
canales_informativos = stringbetween(content, "### Informativos", "### Deportivos")
|
|
spain.add_ambit(Ambito("Informativos", get_channels_from_part(canales_informativos)))
|
|
|
|
canales_deportivos = stringbetween(content, "### Deportivos", "### Infantiles")
|
|
spain.add_ambit(Ambito("Deportivos", get_channels_from_part(canales_deportivos)))
|
|
|
|
canales_infantiles = stringbetween(content, "### Infantiles", "### Musicales")
|
|
spain.add_ambit(Ambito("Infantiles", get_channels_from_part(canales_infantiles)))
|
|
|
|
canales_musicales = stringbetween(content, "### Musicales", "### Autonómicos")
|
|
spain.add_ambit(Ambito("Musicales", get_channels_from_part(canales_musicales)))
|
|
|
|
canales_autonomicos_andalucia = stringbetween(content, "#### Andalucía", "#### Aragón")
|
|
spain.add_ambit(Ambito("Andalucía", get_channels_from_part(canales_autonomicos_andalucia)))
|
|
|
|
canales_autonomicos_aragon = stringbetween(content, "#### Aragón", "#### Asturias")
|
|
spain.add_ambit(Ambito("Aragón", get_channels_from_part(canales_autonomicos_aragon)))
|
|
|
|
canales_autonomicos_asturias = stringbetween(content, "#### Asturias", "#### Canarias")
|
|
spain.add_ambit(Ambito("Asturias", get_channels_from_part(canales_autonomicos_asturias)))
|
|
|
|
canales_autonomicos_canarias = stringbetween(content, "#### Canarias", "#### Cantabria")
|
|
spain.add_ambit(Ambito("Canarias", get_channels_from_part(canales_autonomicos_canarias)))
|
|
|
|
canales_autonomicos_cantabria = stringbetween(content, "#### Cantabria", "#### Castilla La-Mancha")
|
|
spain.add_ambit(Ambito("Cantabria", get_channels_from_part(canales_autonomicos_cantabria)))
|
|
|
|
canales_autonomicos_castilla_mancha = stringbetween(content, "#### Castilla La-Mancha", "#### Castilla y León")
|
|
spain.add_ambit(Ambito("Castilla la Mancha", get_channels_from_part(canales_autonomicos_castilla_mancha)))
|
|
|
|
canales_autonomicos_castilla_leon = stringbetween(content, "#### Castilla y León", "#### Catalunya")
|
|
spain.add_ambit(Ambito("Castilla y León", get_channels_from_part(canales_autonomicos_castilla_leon)))
|
|
|
|
canales_autonomicos_catalunya = stringbetween(content, "#### Catalunya", "#### Ceuta")
|
|
spain.add_ambit(Ambito("Catalunya", get_channels_from_part(canales_autonomicos_catalunya)))
|
|
|
|
canales_autonomicos_ceuta = stringbetween(content, "#### Ceuta", "#### Extremadura")
|
|
spain.add_ambit(Ambito("Ceuta", get_channels_from_part(canales_autonomicos_ceuta)))
|
|
|
|
canales_autonomicos_extremadura = stringbetween(content, "#### Extremadura", "#### Galicia")
|
|
spain.add_ambit(Ambito("Extremadura", get_channels_from_part(canales_autonomicos_extremadura)))
|
|
|
|
canales_autonomicos_galicia = stringbetween(content, "#### Galicia", "#### Islas Baleares")
|
|
spain.add_ambit(Ambito("Galicia", get_channels_from_part(canales_autonomicos_galicia)))
|
|
|
|
canales_autonomicos_islas_baleares = stringbetween(content, "### Islas Baleares", "#### Madrid")
|
|
spain.add_ambit(Ambito("Islas Baleares", get_channels_from_part(canales_autonomicos_islas_baleares)))
|
|
|
|
canales_autonomicos_madrid = stringbetween(content, "#### Madrid", "#### Melilla")
|
|
spain.add_ambit(Ambito("Madrid", get_channels_from_part(canales_autonomicos_madrid)))
|
|
|
|
canales_autonomicos_melilla = stringbetween(content, "#### Melilla", "#### Murcia")
|
|
spain.add_ambit(Ambito("Melilla", get_channels_from_part(canales_autonomicos_melilla)))
|
|
|
|
canales_autonomicos_murcia = stringbetween(content, "#### Murcia", "#### Navarra")
|
|
spain.add_ambit(Ambito("Murcia", get_channels_from_part(canales_autonomicos_murcia)))
|
|
|
|
canales_autonomicos_navarra = stringbetween(content, "#### Navarra", "#### Pais Vasco")
|
|
spain.add_ambit(Ambito("Navarra", get_channels_from_part(canales_autonomicos_navarra)))
|
|
|
|
canales_autonomicos_pais_vasco = stringbetween(content, "#### Pais Vasco", "#### La Rioja")
|
|
spain.add_ambit(Ambito("Pais Vasco", get_channels_from_part(canales_autonomicos_pais_vasco)))
|
|
|
|
canales_autonomicos_la_rioja = stringbetween(content, "#### La Rioja", "#### Valencia")
|
|
spain.add_ambit(Ambito("La Rioja", get_channels_from_part(canales_autonomicos_la_rioja)))
|
|
|
|
canales_autonomicos_valencia = stringbetween(content, "#### Valencia", "## Internacionales")
|
|
spain.add_ambit(Ambito("Valencia", get_channels_from_part(canales_autonomicos_valencia)))
|
|
|
|
canales_internacionales = stringbetween(content, "## Internacionales", "### Andorra")
|
|
international.add_ambit(Ambito("Internacional", get_channels_from_part(canales_internacionales)))
|
|
|
|
# Save data to JSON file
|
|
json_file = open('./public/output/channels.json', "w+")
|
|
# TODO Add license
|
|
json_file.write("[")
|
|
json_file.write(json.dumps(spain.to_json()))
|
|
json_file.write(", ")
|
|
json_file.write(json.dumps(international.to_json()))
|
|
json_file.write("]")
|
|
json_file.close()
|
|
|
|
# Save data to M3U8 file
|
|
text_file = open('./public/output/channels.m3u8', "w+")
|
|
text_file.write("#EXTM3U" + "\n")
|
|
text_file.write("# @LaQuay https://github.com/LaQuay/TDTChannels" + "\n")
|
|
text_file.write(spain.to_m3u8())
|
|
text_file.write(international.to_m3u8())
|
|
text_file.close()
|
|
|
|
print("JSON + M3U8 Updated")
|