2018-09-22 19:28:28 +02:00
|
|
|
|
class Channel:
|
2019-02-02 17:42:08 +01:00
|
|
|
|
def __init__(self, name, web, resolution, logo, epg_id, extra_info):
|
2018-09-22 19:28:28 +02:00
|
|
|
|
self.name = name
|
2018-09-22 22:03:56 +02:00
|
|
|
|
self.web = web
|
|
|
|
|
self.resolution = resolution
|
|
|
|
|
self.logo = logo
|
|
|
|
|
self.epg_id = epg_id
|
2018-09-22 19:28:28 +02:00
|
|
|
|
self.options = []
|
2019-02-02 17:42:08 +01:00
|
|
|
|
self.extra_info = extra_info
|
2018-09-22 19:28:28 +02:00
|
|
|
|
|
|
|
|
|
def add_option(self, format, url):
|
|
|
|
|
self.options.append(self.Web(format, url))
|
|
|
|
|
|
|
|
|
|
def get_name(self):
|
|
|
|
|
return self.name
|
|
|
|
|
|
2018-09-22 22:03:56 +02:00
|
|
|
|
def get_resolution(self):
|
|
|
|
|
return self.get_resolution
|
|
|
|
|
|
|
|
|
|
def get_logo(self):
|
|
|
|
|
return self.logo
|
|
|
|
|
|
|
|
|
|
def get_epg(self):
|
|
|
|
|
return self.epg_id
|
|
|
|
|
|
2018-09-22 19:28:28 +02:00
|
|
|
|
def get_options(self):
|
|
|
|
|
return self.options
|
|
|
|
|
|
2019-02-02 17:42:08 +01:00
|
|
|
|
def get_extra_info(self):
|
|
|
|
|
return self.extra_info
|
|
|
|
|
|
2018-09-22 19:28:28 +02:00
|
|
|
|
def __str__(self):
|
|
|
|
|
options_string = ""
|
|
|
|
|
for option in self.options:
|
2019-01-26 15:40:27 +01:00
|
|
|
|
options_string += f"[Format: {option.get_format()}, URL: {option.get_url()}]"
|
2018-09-22 22:03:56 +02:00
|
|
|
|
return self.name + " " + options_string
|
2018-09-22 19:28:28 +02:00
|
|
|
|
|
|
|
|
|
def __options_to_json__(self):
|
|
|
|
|
options_list = []
|
|
|
|
|
for option in self.options:
|
|
|
|
|
options_list.append(option.to_json())
|
|
|
|
|
return options_list
|
|
|
|
|
|
|
|
|
|
def to_json(self):
|
|
|
|
|
return {
|
|
|
|
|
"name": self.name,
|
2018-09-23 11:47:54 +02:00
|
|
|
|
"web": self.web,
|
2018-09-22 22:03:56 +02:00
|
|
|
|
"logo": self.logo,
|
2018-09-23 11:47:54 +02:00
|
|
|
|
"resolution": self.resolution,
|
2018-09-22 22:03:56 +02:00
|
|
|
|
"epg_id": self.epg_id,
|
2019-02-02 17:42:08 +01:00
|
|
|
|
"options": self.__options_to_json__(),
|
|
|
|
|
"extra_info": self.extra_info
|
2018-09-22 19:28:28 +02:00
|
|
|
|
}
|
|
|
|
|
|
2019-01-26 15:40:27 +01:00
|
|
|
|
def to_m3u8(self, ambit_name, option):
|
2018-09-23 13:19:52 +02:00
|
|
|
|
info = '#EXTINF:-1'
|
|
|
|
|
if self.epg_id != "":
|
2019-01-26 15:40:27 +01:00
|
|
|
|
info += f' tvg-id="{self.epg_id}"'
|
2018-09-23 13:19:52 +02:00
|
|
|
|
if self.logo != "":
|
2019-01-26 15:40:27 +01:00
|
|
|
|
info += f' tvg-logo="{self.logo}"'
|
|
|
|
|
if ambit_name != "":
|
|
|
|
|
info += f' group-title="{ambit_name}"'
|
2018-09-23 13:19:52 +02:00
|
|
|
|
|
2019-02-14 23:38:40 +01:00
|
|
|
|
info += f',{self.name}'
|
|
|
|
|
info += f'\n{option.get_url()}\n'
|
2018-09-23 13:19:52 +02:00
|
|
|
|
|
|
|
|
|
return info
|
2018-09-22 22:03:56 +02:00
|
|
|
|
|
2019-01-26 15:40:27 +01:00
|
|
|
|
def to_enigma2(self, option, counter):
|
|
|
|
|
info = f'#SERVICE 4097:0:1:{counter}:0:0:0:0:0:0'
|
|
|
|
|
info += f':{option.get_url(double_dot=False)}'
|
|
|
|
|
info += f':{self.name}\n'
|
|
|
|
|
info += f'#DESCRIPTION {self.name}\n'
|
|
|
|
|
|
|
|
|
|
return info
|
|
|
|
|
|
2018-09-22 19:28:28 +02:00
|
|
|
|
class Web:
|
|
|
|
|
def __init__(self, format, url):
|
|
|
|
|
self.format = format
|
|
|
|
|
self.url = url
|
|
|
|
|
|
|
|
|
|
def is_m3u8_valid(self):
|
|
|
|
|
return self.format == "m3u8"
|
|
|
|
|
|
|
|
|
|
def get_format(self):
|
|
|
|
|
return self.format
|
|
|
|
|
|
2019-01-26 15:40:27 +01:00
|
|
|
|
def get_url(self, double_dot=True):
|
|
|
|
|
if double_dot:
|
|
|
|
|
return self.url
|
|
|
|
|
else:
|
|
|
|
|
return self.url.replace(":", "%3a")
|
2018-09-22 19:28:28 +02:00
|
|
|
|
|
|
|
|
|
def __str__(self):
|
2018-09-22 22:03:56 +02:00
|
|
|
|
return self.format + ", " + self.url
|
2018-09-22 19:28:28 +02:00
|
|
|
|
|
|
|
|
|
def to_json(self):
|
|
|
|
|
return {
|
|
|
|
|
"format": self.format,
|
|
|
|
|
"url": self.url
|
2019-01-26 15:40:27 +01:00
|
|
|
|
}
|