2018-03-12 22:47:43 +03:00
|
|
|
""" Module for IPTV and streams support """
|
|
|
|
|
from enum import Enum
|
|
|
|
|
|
2018-02-12 13:34:00 +03:00
|
|
|
from app.properties import Profile
|
2018-02-12 14:27:21 +03:00
|
|
|
from app.ui import IPTV_ICON
|
2018-01-01 23:42:40 +03:00
|
|
|
from .ecommons import BqServiceType, Service
|
2017-12-08 18:32:28 +03:00
|
|
|
|
2018-02-12 13:34:00 +03:00
|
|
|
# url, description, urlkey, account, usrname, psw, s_type, iconsrc, iconsrc_b, group
|
|
|
|
|
NEUTRINO_FAV_ID_FORMAT = "{}::{}::{}::{}::{}::{}::{}::{}::{}::{}"
|
2018-03-12 22:47:43 +03:00
|
|
|
ENIGMA2_FAV_ID_FORMAT = " {}:0:{}:{}:{}:{}:{}:0:0:0:{}:{}\n#DESCRIPTION: {}\n"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class StreamType(Enum):
|
|
|
|
|
DVB_TS = "1"
|
|
|
|
|
NONE_TS = "4097"
|
2017-12-08 18:32:28 +03:00
|
|
|
|
2018-02-12 13:34:00 +03:00
|
|
|
|
|
|
|
|
def parse_m3u(path, profile):
|
2017-12-08 18:32:28 +03:00
|
|
|
with open(path) as file:
|
2018-01-31 00:13:42 +03:00
|
|
|
aggr = [None] * 10
|
2017-12-08 18:32:28 +03:00
|
|
|
channels = []
|
|
|
|
|
count = 0
|
|
|
|
|
name = None
|
2018-02-12 13:34:00 +03:00
|
|
|
fav_id = None
|
2017-12-08 18:32:28 +03:00
|
|
|
for line in file.readlines():
|
|
|
|
|
if line.startswith("#EXTINF"):
|
|
|
|
|
name = line[1 + line.index(","):].strip()
|
|
|
|
|
count += 1
|
|
|
|
|
elif count == 1:
|
|
|
|
|
count = 0
|
2018-02-12 13:34:00 +03:00
|
|
|
if profile is Profile.ENIGMA_2:
|
2018-03-12 22:47:43 +03:00
|
|
|
fav_id = ENIGMA2_FAV_ID_FORMAT.format(StreamType.DVB_TS.value, 1, 0, 0, 0, 0,
|
|
|
|
|
line.strip().replace(":", "%3a"), name, name, None)
|
2018-02-12 13:34:00 +03:00
|
|
|
elif profile is Profile.NEUTRINO_MP:
|
|
|
|
|
fav_id = NEUTRINO_FAV_ID_FORMAT.format(line.strip(), "", 0, None, None, None, None, "", "", 1)
|
2018-02-12 14:27:21 +03:00
|
|
|
srv = Service(None, None, IPTV_ICON, name, *aggr[0:3], BqServiceType.IPTV.name, *aggr, fav_id, None)
|
2018-01-31 00:13:42 +03:00
|
|
|
channels.append(srv)
|
2017-12-08 18:32:28 +03:00
|
|
|
|
|
|
|
|
return channels
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
pass
|