TDTChannels/script/my_script.py

230 lines
11 KiB
Python
Raw Normal View History

2018-09-22 19:28:28 +02:00
# coding=utf-8
import json
2019-01-07 23:45:27 +01:00
import re
2018-09-22 19:28:28 +02:00
import requests
2018-09-23 11:52:56 +02:00
from ambit import Ambito
2018-09-22 19:28:28 +02:00
from channel import Channel
from country import Country
2019-01-07 23:45:27 +01:00
def stringbetween(text, start, end):
result = re.search('(?<=' + start + ')(.*)(?=' + end + ')', text, re.DOTALL)
return result.group(1)
2018-09-22 19:28:28 +02:00
2019-01-07 23:45:27 +01:00
def stringbetweenparantheses(text):
return text.split("(")[1].split(")")[0]
2018-09-22 19:28:28 +02:00
def get_channels_from_part(text):
2018-09-22 22:03:56 +02:00
line_where_first_channel_starts = 15
attributes_per_item = 6
2018-09-22 19:28:28 +02:00
channel_list = []
2018-09-22 22:03:56 +02:00
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()
2018-09-23 11:47:54 +02:00
2018-09-22 22:03:56 +02:00
item_options = list_to_iterate[i + 1].strip()
2018-09-23 11:47:54 +02:00
2018-09-22 22:03:56 +02:00
item_web = list_to_iterate[i + 2].strip()
2018-09-23 11:47:54 +02:00
if len(item_web) > 0 and item_web[0] != "-":
2019-01-07 23:45:27 +01:00
item_web = stringbetweenparantheses(item_web)
2018-09-23 13:19:52 +02:00
if len(item_web) == 1:
item_web = ""
2018-09-23 11:47:54 +02:00
2018-09-22 22:03:56 +02:00
item_resolution = list_to_iterate[i + 3].strip()
2018-09-23 13:19:52 +02:00
if len(item_resolution) == 1:
item_resolution = ""
2018-09-23 11:47:54 +02:00
2018-09-22 22:03:56 +02:00
item_logo = list_to_iterate[i + 4].strip()
2018-09-23 11:48:47 +02:00
if len(item_logo) > 0 and item_logo[0] != "-":
2019-01-07 23:45:27 +01:00
item_logo = stringbetweenparantheses(item_logo)
2018-09-23 13:19:52 +02:00
if len(item_logo) == 1:
item_logo = ""
2018-09-23 11:47:54 +02:00
2018-09-22 22:03:56 +02:00
item_epg = list_to_iterate[i + 5].strip()
2018-09-23 13:19:52 +02:00
if len(item_epg) == 1:
item_epg = ""
2018-09-22 22:03:56 +02:00
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] != "-":
2018-09-22 19:28:28 +02:00
for option in item_options:
format = (option[1:5]).replace("]", "")
2019-01-07 23:45:27 +01:00
url = stringbetweenparantheses(option)
2018-09-22 19:28:28 +02:00
channel.add_option(format, url)
channel_list.append(channel)
return channel_list
2019-01-08 07:38:59 +01:00
# TODO Change this
2019-01-07 23:45:27 +01:00
page = requests.get('https://raw.githubusercontent.com/LaQuay/TDTChannels/add-local-m3u8/TELEVISION.md',
2018-09-22 19:28:28 +02:00
headers={'Cache-Control': 'no-cache'})
content = str(page.text)
spain = Country("Spain")
2018-11-04 21:59:53 +01:00
international = Country("International")
2018-09-22 19:28:28 +02:00
2019-01-07 23:45:27 +01:00
content_nacional = stringbetween(content, "### Nacionales", "### Locales")
content_local = stringbetween(content, "### Locales", "## Internacionales")
canales_nacionales = stringbetween(content_nacional, "", "### Informativos")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Generalistas", get_channels_from_part(canales_nacionales)))
2019-01-07 23:45:27 +01:00
canales_informativos = stringbetween(content_nacional, "### Informativos", "### Deportivos")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Informativos", get_channels_from_part(canales_informativos)))
2019-01-07 23:45:27 +01:00
canales_deportivos = stringbetween(content_nacional, "### Deportivos", "### Infantiles")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Deportivos", get_channels_from_part(canales_deportivos)))
2019-01-07 23:45:27 +01:00
canales_infantiles = stringbetween(content_nacional, "### Infantiles", "### Musicales")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Infantiles", get_channels_from_part(canales_infantiles)))
2019-01-07 23:45:27 +01:00
canales_musicales = stringbetween(content_nacional, "### Musicales", "### Autonómicos")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Musicales", get_channels_from_part(canales_musicales)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_andalucia = stringbetween(content_nacional, "#### Andalucía", "#### Aragón")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Andalucía", get_channels_from_part(canales_autonomicos_andalucia)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_aragon = stringbetween(content_nacional, "#### Aragón", "#### Asturias")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Aragón", get_channels_from_part(canales_autonomicos_aragon)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_asturias = stringbetween(content_nacional, "#### Asturias", "#### Canarias")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Asturias", get_channels_from_part(canales_autonomicos_asturias)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_canarias = stringbetween(content_nacional, "#### Canarias", "#### Cantabria")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Canarias", get_channels_from_part(canales_autonomicos_canarias)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_cantabria = stringbetween(content_nacional, "#### Cantabria", "#### Castilla La-Mancha")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Cantabria", get_channels_from_part(canales_autonomicos_cantabria)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_castilla_mancha = stringbetween(content_nacional, "#### Castilla La-Mancha", "#### Castilla y León")
spain.add_ambit(Ambito("Castilla La-Mancha", get_channels_from_part(canales_autonomicos_castilla_mancha)))
2018-09-22 19:28:28 +02:00
2019-01-07 23:45:27 +01:00
canales_autonomicos_castilla_leon = stringbetween(content_nacional, "#### Castilla y León", "#### Cataluña")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Castilla y León", get_channels_from_part(canales_autonomicos_castilla_leon)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_catalunya = stringbetween(content_nacional, "#### Cataluña", "#### Ceuta")
spain.add_ambit(Ambito("Cataluña", get_channels_from_part(canales_autonomicos_catalunya)))
2018-09-22 19:28:28 +02:00
2019-01-07 23:45:27 +01:00
canales_autonomicos_ceuta = stringbetween(content_nacional, "#### Ceuta", "#### Extremadura")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Ceuta", get_channels_from_part(canales_autonomicos_ceuta)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_extremadura = stringbetween(content_nacional, "#### Extremadura", "#### Galicia")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Extremadura", get_channels_from_part(canales_autonomicos_extremadura)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_galicia = stringbetween(content_nacional, "#### Galicia", "#### Islas Baleares")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Galicia", get_channels_from_part(canales_autonomicos_galicia)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_islas_baleares = stringbetween(content_nacional, "#### Islas Baleares", "#### La Rioja")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Islas Baleares", get_channels_from_part(canales_autonomicos_islas_baleares)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_la_rioja = stringbetween(content_nacional, "#### La Rioja", "#### Madrid")
spain.add_ambit(Ambito("La Rioja", get_channels_from_part(canales_autonomicos_la_rioja)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_madrid = stringbetween(content_nacional, "#### Madrid", "#### Melilla")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Madrid", get_channels_from_part(canales_autonomicos_madrid)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_melilla = stringbetween(content_nacional, "#### Melilla", "#### Murcia")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Melilla", get_channels_from_part(canales_autonomicos_melilla)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_murcia = stringbetween(content_nacional, "#### Murcia", "#### Navarra")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Murcia", get_channels_from_part(canales_autonomicos_murcia)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_navarra = stringbetween(content_nacional, "#### Navarra", "#### País Vasco")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Navarra", get_channels_from_part(canales_autonomicos_navarra)))
2019-01-07 23:45:27 +01:00
canales_autonomicos_pais_vasco = stringbetween(content_nacional, "#### País Vasco", "#### Valencia")
spain.add_ambit(Ambito("País Vasco", get_channels_from_part(canales_autonomicos_pais_vasco)))
2018-09-22 19:28:28 +02:00
2019-01-08 07:38:59 +01:00
canales_autonomicos_valencia = stringbetween(content_nacional, "#### Valencia", "")
2018-09-22 19:28:28 +02:00
spain.add_ambit(Ambito("Valencia", get_channels_from_part(canales_autonomicos_valencia)))
2019-01-07 23:45:27 +01:00
canales_locales_andalucia = stringbetween(content_local, "#### Andalucía", "#### Aragón")
spain.get_ambit("Andalucía").add_channels(get_channels_from_part(canales_locales_andalucia))
2019-01-07 23:45:27 +01:00
canales_locales_aragon = stringbetween(content_local, "#### Aragón", "#### Asturias")
spain.get_ambit("Aragón").add_channels(get_channels_from_part(canales_locales_aragon))
2019-01-07 23:45:27 +01:00
canales_locales_asturias = stringbetween(content_local, "#### Asturias", "#### Canarias")
spain.get_ambit("Asturias").add_channels(get_channels_from_part(canales_locales_asturias))
2019-01-07 23:45:27 +01:00
canales_locales_canarias = stringbetween(content_local, "#### Canarias", "#### Cantabria")
spain.get_ambit("Canarias").add_channels(get_channels_from_part(canales_locales_canarias))
2019-01-07 23:45:27 +01:00
canales_locales_cantabria = stringbetween(content_local, "#### Cantabria", "#### Castilla La-Mancha")
spain.get_ambit("Cantabria").add_channels(get_channels_from_part(canales_locales_cantabria))
2019-01-07 23:45:27 +01:00
canales_locales_castilla_mancha = stringbetween(content_local, "#### Castilla La-Mancha", "#### Castilla y León")
spain.get_ambit("Castilla La-Mancha").add_channels(get_channels_from_part(canales_locales_castilla_mancha))
2019-01-07 23:45:27 +01:00
canales_locales_castilla_leon = stringbetween(content_local, "#### Castilla y León", "#### Cataluña")
spain.get_ambit("Castilla y León").add_channels(get_channels_from_part(canales_locales_castilla_leon))
2019-01-07 23:45:27 +01:00
canales_locales_catalunya = stringbetween(content_local, "#### Cataluña", "#### Ceuta")
spain.get_ambit("Cataluña").add_channels(get_channels_from_part(canales_locales_catalunya))
2019-01-07 23:45:27 +01:00
canales_locales_ceuta = stringbetween(content_local, "#### Ceuta", "#### Extremadura")
spain.get_ambit("Ceuta").add_channels(get_channels_from_part(canales_locales_ceuta))
2019-01-07 23:45:27 +01:00
canales_locales_extremadura = stringbetween(content_local, "#### Extremadura", "#### Galicia")
spain.get_ambit("Extremadura").add_channels(get_channels_from_part(canales_locales_extremadura))
2019-01-07 23:45:27 +01:00
canales_locales_galicia = stringbetween(content_local, "#### Galicia", "#### Islas Baleares")
spain.get_ambit("Galicia").add_channels(get_channels_from_part(canales_locales_galicia))
2019-01-07 23:45:27 +01:00
canales_locales_islas_baleares = stringbetween(content_local, "### Islas Baleares", "#### La Rioja")
spain.get_ambit("Islas Baleares").add_channels(get_channels_from_part(canales_locales_islas_baleares))
2019-01-07 23:45:27 +01:00
canales_locales_la_rioja = stringbetween(content_local, "#### La Rioja", "#### Madrid")
spain.get_ambit("La Rioja").add_channels(get_channels_from_part(canales_locales_la_rioja))
2019-01-07 23:45:27 +01:00
canales_locales_madrid = stringbetween(content_local, "#### Madrid", "#### Melilla")
spain.get_ambit("Madrid").add_channels(get_channels_from_part(canales_locales_madrid))
2019-01-07 23:45:27 +01:00
canales_locales_melilla = stringbetween(content_local, "#### Melilla", "#### Murcia")
spain.get_ambit("Melilla").add_channels(get_channels_from_part(canales_locales_melilla))
2019-01-07 23:45:27 +01:00
canales_locales_murcia = stringbetween(content_local, "#### Murcia", "#### Navarra")
spain.get_ambit("Murcia").add_channels(get_channels_from_part(canales_locales_murcia))
2019-01-07 23:45:27 +01:00
canales_locales_navarra = stringbetween(content_local, "#### Navarra", "#### País Vasco")
spain.get_ambit("Navarra").add_channels(get_channels_from_part(canales_locales_navarra))
2019-01-07 23:45:27 +01:00
canales_locales_pais_vasco = stringbetween(content_local, "#### País Vasco", "#### Valencia")
spain.get_ambit("País Vasco").add_channels(get_channels_from_part(canales_locales_pais_vasco))
2019-01-08 07:38:59 +01:00
canales_locales_valencia = stringbetween(content_local, "#### Valencia", "")
2019-01-07 23:45:27 +01:00
spain.get_ambit("Valencia").add_channels(get_channels_from_part(canales_locales_valencia))
2018-11-04 21:59:53 +01:00
canales_internacionales = stringbetween(content, "## Internacionales", "### Andorra")
international.add_ambit(Ambito("Internacional", get_channels_from_part(canales_internacionales)))
2018-09-22 19:28:28 +02:00
# Save data to JSON file
2018-09-23 13:44:01 +02:00
json_file = open('./public/output/channels.json', "w+")
2018-12-24 10:32:19 +01:00
# TODO Add license
2018-11-04 21:59:53 +01:00
json_file.write("[")
2018-09-22 19:28:28 +02:00
json_file.write(json.dumps(spain.to_json()))
2018-11-04 21:59:53 +01:00
json_file.write(", ")
json_file.write(json.dumps(international.to_json()))
json_file.write("]")
2018-09-22 19:28:28 +02:00
json_file.close()
# Save data to M3U8 file
2018-09-23 13:44:01 +02:00
text_file = open('./public/output/channels.m3u8', "w+")
2018-09-22 19:28:28 +02:00
text_file.write("#EXTM3U" + "\n")
text_file.write("# @LaQuay https://github.com/LaQuay/TDTChannels" + "\n")
text_file.write(spain.to_m3u8())
2018-11-04 21:59:53 +01:00
text_file.write(international.to_m3u8())
2018-09-22 19:28:28 +02:00
text_file.close()
print("JSON + M3U8 Updated")