Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины.
   

Вернуться   Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины. > Помощь и поддержка > Помощь по плагинам

Ответ
 
Опции темы Опции просмотра
Старый 26.05.2021, 15:55   #1851
krsn
Member
 
Регистрация: 23.10.2019
Сообщений: 65
По умолчанию

Затишье в теме. Автор вроде переводит проект на python3, если не ошибаюсь.

Предложу для ознакомления Кроссплатформенный плеер для просмотра интернет-телевидения. Там тоже на 'ты' с python, а новые функции штампуются в режиме реального времени как 'горячие пирожки'.


commits

Последний раз редактировалось krsn; 26.05.2021 в 16:23.
krsn вне форума   Ответить с цитированием
   
Старый 26.05.2021, 16:39   #1852
TDW1980
Senior Member
 
Аватар для TDW1980
 
Регистрация: 21.06.2011
Сообщений: 4,746
По умолчанию

Этот проект если и буду переводить то в последнюю очередь.
Сервер может работать без kodi.
За ссылку спасибо, гляну что там творят.
__________________
Мой репозиторий: https://github.com/tdw1980/tdw/raw/master/repository.tdw1980-1.0.3.zip
Отблагодарить:
https://yoomoney.ru/bill/pay/AHwFUQEpwUU.230131
TDW1980 вне форума   Ответить с цитированием
Старый 06.08.2021, 10:50   #1853
TDW1980
Senior Member
 
Аватар для TDW1980
 
Регистрация: 21.06.2011
Сообщений: 4,746
По умолчанию

3.16.0 https://cloud.mail.ru/public/aN2m/wUYj7DTdb
-поправил парсеры серверов
-вынес серверы на отдельную вкладку настроек
__________________
Мой репозиторий: https://github.com/tdw1980/tdw/raw/master/repository.tdw1980-1.0.3.zip
Отблагодарить:
https://yoomoney.ru/bill/pay/AHwFUQEpwUU.230131
TDW1980 вне форума   Ответить с цитированием
Старый 17.08.2021, 12:31   #1854
Po2l
Junior Member
 
Регистрация: 17.08.2021
Сообщений: 2
По умолчанию

Предлагаю поправить, а лучше переписать , hls.py.
А именно функцию GET.
Вставить анализ заголовков. Просто если туда попадает ссылка на поток начинается беда.
зы
ида, normal тоже иногда некорректно срабатывает. Есть сервисы которые выдают ссылки типа .../08/08/...
И ссылки на части тоже разные бывают если не начинаются с http, могут начинаться с "/" их тоже нужно по другому обрабатывать

Последний раз редактировалось Po2l; 17.08.2021 в 12:50.
Po2l вне форума   Ответить с цитированием
Старый 17.08.2021, 15:50   #1855
TDW1980
Senior Member
 
Аватар для TDW1980
 
Регистрация: 21.06.2011
Сообщений: 4,746
По умолчанию

Я не против. Давайте ваш вариант. В крайнем случае всегда можно сделать выбор используемого модуля.
__________________
Мой репозиторий: https://github.com/tdw1980/tdw/raw/master/repository.tdw1980-1.0.3.zip
Отблагодарить:
https://yoomoney.ru/bill/pay/AHwFUQEpwUU.230131
TDW1980 вне форума   Ответить с цитированием
Старый 17.08.2021, 16:40   #1856
Po2l
Junior Member
 
Регистрация: 17.08.2021
Сообщений: 2
По умолчанию

как-то так
Код:
    def run(self):
        logger.info('Thread started: "%s"' % self.BaseUrl)
        import m3u8;
        if '.m3u' in self.BaseUrl:
            while self.Clients:
                if self.response is not None:
                    m3u = m3u8.parser(self.response.content)
                else:
                    try:
                        m3u = m3u8.load(self.hls, headers=self.headers)
                    except Exception as err:
                        logger.error('Can not load m3u [%s]' % err)
                        self.chunkpool.map(lambda x: x.send_error(500, repr(err), logger.ERROR), self.Clients)
                        break
                if m3u.is_variant:
                    b = 0
                    for u in m3u.playlists:
                        if u.stream_info.bandwidth > b:
                            b = u.stream_info.bandwidth
                            self.hls = u.absolute_uri
                    m3u = m3u8.load(self.hls, headers=self.headers)

                for segment in m3u.segments.by_key(m3u.keys[-1]):
                    if segment.absolute_uri in self.complit: continue
                    if not self.Clients: break
                    logger.debug(segment.absolute_uri)
                    key = iv = method = None
                    if m3u.keys[-1] is not None:
                        method = m3u.keys[-1].method
                        if method.lower() != 'none':
                            with self.session.get(m3u.keys[-1].uri) as resp:
                                key = resp.content
                            iv = bytes.fromhex(m3u.keys[-1].iv[2:])
                            logger.debug('KEY(%s):%s IV:%s METHOD:%s' % (len(key), key, iv, method))
                    self.StreamWriter(segment.absolute_uri,key=key, iv=iv, method=method, chunk_size=10240)
                    self.complit.append(segment.absolute_uri)
                    if len(self.complit) > 50: self.complit.pop(0)

        else:
            if self.response is None:
                self.response = self.session.get(self.BaseUrl, timeout=(5, 15), stream=True, headers=self.headers)
            if self.response is not None:
                try:
                    for chunk in self.response.iter_content(chunk_size=10240):
                        if not self.Clients: break
                        _ = self.chunkpool.map(lambda client: self.write_chunk(client, chunk), self.Clients)
                except ReadTimeoutError as err:
                    self.chunkpool.map(lambda x: x.send_error(500, repr(err), logger.ERROR), self.Clients)

        self.session.close()
        self.response = None


правда это на 3.8
но еще и расшифровывает...
Po2l вне форума   Ответить с цитированием
Старый 17.09.2021, 14:41   #1857
LeonodL
Junior Member
 
Регистрация: 19.03.2019
Сообщений: 12
По умолчанию

Неожиданно на малинке после обновления софта PTV3 3.6.0 стал зависать и тормозить все остальное. Анализ показал, что питон что-то делает без конца и постепенно съедает память и swap и так пока Linux не впадет в критическую ошибку. Углубившись в тему, выяснил, что тормозит в dload_epg_xml, пытаясь обновить EPG IPTVX. Дальнейший анализ показал, что тормозит где-то в модуле gzip, когда читается файл epg.xml.gz, скачанный по ссылке 'https://iptvx.one/epg/epg.xml.gz'

В винде 7zip все распаковывает.

Я питон плохо знаю, и дополнительная трассировка мне ничего не дала, далее я впал в ступор и просто поправил dload_epg_xm, заменив ссылку на http://programtv.ru/xmltv.xml.gz.
Надо ли и что исправить?

Исправленные функции с доп логированием

def dload_epg_xml(target=''):
try:
#target='http://programtv.ru/xmltv.xml.gz'
if target=='':
target='http://programtv.ru/xmltv.xml.gz'
#target='https://iptvx.one/epg/epg.xml.gz'
#'http://api.torrent-tv.ru/ttv.xmltv.xml.gz'
print "-==-=-=-=-=-=-=- download: "+target+" =-=-=-=-=-=-=-=-=-=-"
fp = os.path.join(UserDir, 'tmp.zip')
req = urllib2.Request(url = target, data = None)
req.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)')
resp = urllib2.urlopen(req)
fl = open(fp, "wb")
fl.write(resp.read())
fl.close()
time.sleep(1)
print "-==-=-=-=-=-=-=- unpak tmp.zip =-=-=-=-=-=-=-=-=-=-"
xml=''
xml=ungz(fp)
if xml == '':
print "-==-=-=-=-=-=-=- unpak error =-=-=-=-=-=-=-=-=-=-"
else:
print "-==-=-=-=-=-=-=- unpak ok =-=-=-=-=-=-=-=-=-=-"
#os.remove(fp)
return xml
except Exception, e:
print 'HTTP ERROR ' + str(e)
return ''


def ungz(filename):
import gzip
file_content=''
print "-==-=-=-=-=-=-=- Unpacking: "+ filename + " =-=-=-=-=-=-=-=-=-=-"
try:
with gzip.open(filename, 'rb') as f:
file_content = f.read()
f.close()
return file_content
except gzip.BadGzipFile:
print("BadGzipFile: "+ filename)
return ''
except:
print("Other errror: ", sys.exc_info()[0])
return ""

Лог до правки

----- Starting PTV3 0.16.0 -----
OPTION: http://192.168.1.129:8185
PLAYLIST: http://192.168.1.129:8185/playlist
----- PTV3_serv OK -----
----- EPG update -----
Update EPG ...
clear_EPG
Update EPG iptvx
-==-=-=-=-=-=-=- download: https://iptvx.one/epg/epg.xml.gz =-=-=-=-=-=-=-=-=-=-
-==-=-=-=-=-=-=- unpak tmp.zip =-=-=-=-=-=-=-=-=-=-
-==-=-=-=-=-=-=- Unpacking: /opt/ptv3/user/tmp.zip =-=-=-=-=-=-=-=-=-=-
ДАЛЕЕ ВИСИТ

Лог после правки (замена ссылки)

----- Starting PTV3 0.16.0 -----
OPTION: http://192.168.1.129:8185
PLAYLIST: http://192.168.1.129:8185/playlist
----- PTV3_serv OK -----
----- EPG update -----
Update EPG ...
clear_EPG
Update EPG iptvx
-==-=-=-=-=-=-=- download: http://programtv.ru/xmltv.xml.gz =-=-=-=-=-=-=-=-=-=-
-==-=-=-=-=-=-=- unpak tmp.zip =-=-=-=-=-=-=-=-=-=-
-==-=-=-=-=-=-=- Unpacking: /opt/ptv3/user/tmp.zip =-=-=-=-=-=-=-=-=-=-
-==-=-=-=-=-=-=- unpak ok =-=-=-=-=-=-=-=-=-=-
Update EPG Tviz
/channels/dict
2
3
6
11
12
15
19
28
18
32
save_channels-32-0
39
9
16
26
7
17
81
82
83
84
21
22
192.168.1.129 - - [17/Sep/2021 14:35:52] "GET /channels/dict HTTP/1.1" 200 -
LeonodL вне форума   Ответить с цитированием
Старый 17.09.2021, 16:58   #1858
TDW1980
Senior Member
 
Аватар для TDW1980
 
Регистрация: 21.06.2011
Сообщений: 4,746
По умолчанию

Там просто очень большой файл. Нужно много памяти для распаковки. Можно просто отключить этот источник программы.
__________________
Мой репозиторий: https://github.com/tdw1980/tdw/raw/master/repository.tdw1980-1.0.3.zip
Отблагодарить:
https://yoomoney.ru/bill/pay/AHwFUQEpwUU.230131
TDW1980 вне форума   Ответить с цитированием
Старый 17.09.2021, 21:11   #1859
LeonodL
Junior Member
 
Регистрация: 19.03.2019
Сообщений: 12
По умолчанию

Цитата:
Сообщение от TDW1980 Посмотреть сообщение
Там просто очень большой файл. Нужно много памяти для распаковки. Можно просто отключить этот источник программы.
Да, отключить можно, я потом этот параметр увидел.... Уже когда поправил...

Не такой уж и большой epg.xml - 219 Мб, epg.xml.gz - 21 Мб, памяти там 1 Гб, половина под видео, все равно как-то криво gzip.py работает. М.б. надо обновить gzip на посвежее?
LeonodL вне форума   Ответить с цитированием
Старый 16.10.2021, 17:44   #1860
TDW1980
Senior Member
 
Аватар для TDW1980
 
Регистрация: 21.06.2011
Сообщений: 4,746
По умолчанию

Пазл ТВ 4.0.0 https://cloud.mail.ru/public/f68h/EzuJSLvGR
- поддержка К-19
__________________
Мой репозиторий: https://github.com/tdw1980/tdw/raw/master/repository.tdw1980-1.0.3.zip
Отблагодарить:
https://yoomoney.ru/bill/pay/AHwFUQEpwUU.230131
TDW1980 вне форума   Ответить с цитированием
Ответ
 


Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПАЗЛ TDW1980 Помощь по плагинам 788 20.03.2020 08:56
Разработка: Пазл ТВ 2.0 TDW1980 Помощь по плагинам 720 21.07.2019 11:28
Источники для ПАЗЛ ТВ TDW1980 Помощь по плагинам 24 27.09.2017 22:19


Текущее время: 04:11. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.