added file chooser dialog for data path, little ui changes

This commit is contained in:
Dmitriy Yefremov
2017-10-07 17:33:40 +03:00
parent 561b0c4e7d
commit d7fbf0fce0
9 changed files with 1142 additions and 47 deletions

5
main/__init__.py Normal file
View File

@@ -0,0 +1,5 @@
from main.ui import start_app as start
if __name__ == "__main__":
start()

944
main/data/lamedb_example Normal file
View File

@@ -0,0 +1,944 @@
eDVB services /4/
transponders
01680000:0001:0070
s 12322060:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
01680000:0002:0070
s 11861740:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
01680000:0004:0070
s 12437120:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
01680000:0007:0070
s 12245000:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
01680000:0009:0070
s 12207000:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
01680000:000a:0070
s 12264500:27500000:2:3:360:2:0
/
01680000:000b:0070
s 12341000:27500000:2:3:360:2:0
/
01680000:000c:0070
s 12398780:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
01680000:000d:0070
s 11766000:27500000:1:3:360:2:0
/
01680000:000e:0070
s 11823000:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
01680000:0011:0070
s 11938460:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
01680000:0012:0070
s 11976820:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
01680000:0013:0070
s 11900100:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
01680000:0014:0070
s 12130260:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
01680000:0015:0070
s 12091900:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
01680000:0016:0070
s 12015180:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
0168affb:0008:0070
s 12283000:27500000:3:3:360:2:0:1:2:0:2:-1:1:0
/
0168affc:0008:0070
s 12284000:27500000:1:3:360:2:0
/
end
services
00c9:01680000:0002:0070:1:0
Fashion One (4K)
p:HTB+,c:0000ce,c:010132,c:0300ce,c:050001,C:0500
4e8b:01680000:0014:0070:25:0
1HD
p:HTB+,C:0500
00ca:01680000:0002:0070:1:0
HOME 4K (TECT)
p:HTB+,C:0500
03f7:01680000:000a:0070:1:0
ТВОЙ ДОМ
p:HTB+,C:0500
0480:01680000:000b:0070:2:0
Детское радио
p:HTB+
02e5:01680000:0007:0070:2:0
Юмор FM
p:HTB+
02e6:01680000:0007:0070:2:0
Радио Для Двоих
p:HTB+
02e7:01680000:0007:0070:2:0
Романтика
p:HTB+
02e8:01680000:0007:0070:2:0
Авторадио
p:HTB+
02e9:01680000:0007:0070:2:0
Радио Ваня
p:HTB+
02ea:01680000:0007:0070:2:0
ENERGY FM
p:HTB+
02eb:01680000:0007:0070:2:0
DFM
p:HTB+
02ec:01680000:0007:0070:2:0
Русское радио
p:HTB+
02ed:01680000:0007:0070:2:0
HIT FM
p:HTB+
02ee:01680000:0007:0070:2:0
Maximum
p:HTB+
02ef:01680000:0007:0070:2:0
Business FM
p:HTB+
02f2:01680000:0007:0070:2:0
Комсомольская правда
p:HTB+
02f3:01680000:0007:0070:2:0
Relax FM
p:HTB+
02f4:01680000:0007:0070:2:0
Эхо Москвы
p:HTB+
02f5:01680000:0007:0070:2:0
Радио МИР
p:HTB+
02f6:01680000:0007:0070:2:0
Love Radio
p:HTB+
02f7:01680000:0007:0070:2:0
Радио Шансон
p:HTB+
02f8:01680000:0007:0070:2:0
Детское радио
p:HTB+
1f53:01680000:000a:0070:12:0
VAHD3100S DOWNLOAD SVC
p:HTB+,f:40
1b58:01680000:000a:0070:12:0
OPENTEL 1740V OTA
p:HTB+
025d:01680000:0015:0070:12:0
Neotion Update Service
p:HTB+,f:40
1f5e:01680000:0015:0070:12:0
KMedia
p:HTB+
0265:01680000:0015:0070:12:0
Neotion CAM PRO
p:HTB+,f:40
1f68:01680000:000a:0070:12:0
Jiuzhou 1HD SSU
p:HTB+
1f7f:01680000:000a:0070:12:0
SMiT
p:HTB+,f:40
1f80:01680000:000a:0070:12:0
SMiT+
p:HTB+,f:40
0884:01680000:0015:0070:12:0
TEST2180
p:HTB+,f:40
028c:01680000:0015:0070:12:0
SPro16
p:HTB+,f:40
028d:0168affb:0008:0070:12:0
SPro16
p:HTB+,f:40
028d:0168affc:0008:0070:12:0
SPro16
p:HTB+,f:40
0296:01680000:000b:0070:12:0
SPro16
p:HTB+,f:40
0297:01680000:000d:0070:12:0
SPro16
p:HTB+,f:40
0709:01680000:0012:0070:22:0
Первый канал +2
p:HTB+,C:0500
070a:01680000:0012:0070:22:0
HTB +2
p:HTB+,C:0500
070b:01680000:0012:0070:22:0
ТВЦ +2
p:HTB+,C:0500
070c:01680000:0012:0070:22:0
ТНТ +2
p:HTB+,C:0500
070f:01680000:0012:0070:22:0
ТРО
p:HTB+,C:0500
0710:01680000:0012:0070:22:0
History
p:HTB+,C:0500
0711:01680000:0012:0070:22:0
MCM Top
p:HTB+,C:0500
0712:01680000:0012:0070:22:0
Астрахань 24
p:HTB+,C:0500
0713:01680000:0012:0070:22:0
Outdoor Channel
p:HTB+,C:0500
0714:01680000:0012:0070:22:0
RU.TV
p:HTB+,C:0500
0515:01680000:000d:0070:22:0
МАТЧ! АРЕНА
p:HTB+,C:0500,f:40
0715:01680000:0012:0070:22:0
Travel Channel
p:HTB+,C:0500
0516:01680000:000d:0070:22:0
МАТЧ! БОЕЦ
p:HTB+,C:0500,f:40
0716:01680000:0012:0070:22:0
RTД (русск.)
p:HTB+,C:0500
0517:01680000:000d:0070:22:0
МАТЧ! ИГРА
p:HTB+,C:0500,f:40
0518:01680000:000d:0070:22:0
МАТЧ! НАШ СПОРТ
p:HTB+,C:0500,f:40
0718:01680000:0012:0070:22:0
RTG TV
p:HTB+,C:0500
0519:01680000:000d:0070:22:0
МАТЧ! ФУТБОЛ 1
p:HTB+,C:0500,f:40
051a:01680000:000d:0070:22:0
МАТЧ! ФУТБОЛ 2
p:HTB+,C:0500,f:40
071a:01680000:0012:0070:22:0
BRIDGE TV DANCE
p:HTB+,C:0500
051b:01680000:000d:0070:22:0
МАТЧ! ФУТБОЛ 3
p:HTB+,C:0500,f:40
051c:01680000:000d:0070:22:0
ОТР
p:HTB+,C:0500,f:40
071c:01680000:0012:0070:22:0
THT4
p:HTB+,C:0500
051d:01680000:000d:0070:22:0
ИНФОКАНАЛ НТВ-ПЛЮС
p:HTB+,C:0500
071d:01680000:0012:0070:22:0
Ani
p:HTB+,C:0500
051e:01680000:000d:0070:22:0
Доктор
p:HTB+,C:0500
071e:01680000:0012:0070:22:0
История
p:HTB+,C:0500
051f:01680000:000d:0070:22:0
Звезда
p:HTB+,C:0500
071f:01680000:0012:0070:22:0
МИР 24
p:HTB+,C:0500
0520:01680000:000d:0070:22:0
Канал Disney
p:HTB+,c:0000d4,c:010138,c:0300d4,c:050001,C:0500
0720:01680000:0012:0070:22:0
Царьград
p:HTB+,C:0500
0321:0168affb:0008:0070:22:0
Animal Planet
p:HTB+,C:0500
0321:0168affc:0008:0070:22:0
Animal Planet
p:HTB+,C:0500
0521:01680000:000d:0070:22:0
МУЗ
p:HTB+,C:0500,f:40
0721:01680000:0012:0070:22:0
Санкт-Петербург
p:HTB+,C:0500
0322:0168affb:0008:0070:22:0
Cartoon Network
p:HTB+,C:0500,f:40
0322:0168affc:0008:0070:22:0
Cartoon Network
p:HTB+,C:0500
0522:01680000:000d:0070:22:0
НАШ ФУТБОЛ
p:HTB+,C:0500,f:40
0323:0168affb:0008:0070:22:0
Discovery Channel
p:HTB+,C:0500
0323:0168affc:0008:0070:22:0
Discovery Channel
p:HTB+,C:0500
0523:01680000:000d:0070:22:0
НТВ
p:HTB+,C:0500
0324:0168affb:0008:0070:22:0
НСТ
p:HTB+,C:0500
0324:0168affc:0008:0070:22:0
НСТ
p:HTB+,C:0500
0524:01680000:000d:0070:22:0
Телеканал 360
p:HTB+,C:0500
0325:0168affb:0008:0070:22:0
DTX
p:HTB+,C:0500
0325:0168affc:0008:0070:22:0
DTX
p:HTB+,C:0500
0525:01680000:000d:0070:22:0
РБК-ТВ
p:HTB+,C:0500
0326:0168affb:0008:0070:22:0
Fox Life
p:HTB+,C:0500,f:40
0326:0168affc:0008:0070:22:0
Fox Life
p:HTB+,C:0500
0526:01680000:000d:0070:22:0
Телеканал КХЛ
p:HTB+,C:0500
0327:0168affb:0008:0070:22:0
ID Xtra
p:HTB+,C:0500,f:40
0327:0168affc:0008:0070:22:0
ID Xtra
p:HTB+,C:0500
0527:01680000:000d:0070:22:0
ТНТ
p:HTB+,C:0500
0328:0168affb:0008:0070:22:0
O!
p:HTB+,C:0500,f:40
0328:0168affc:0008:0070:22:0
O!
p:HTB+,C:0500,f:40
0528:01680000:000d:0070:22:0
Ю-ТВ
p:HTB+,C:0500
0329:0168affb:0008:0070:22:0
MTV
p:HTB+,C:0500
0329:0168affc:0008:0070:22:0
MTV
p:HTB+,C:0500,f:40
032a:0168affb:0008:0070:22:0
MTV Dance
p:HTB+,C:0500
032a:0168affc:0008:0070:22:0
MTV Dance
p:HTB+,C:0500
052a:01680000:000d:0070:22:0
World Fashion
p:HTB+,C:0500,f:40
032b:0168affb:0008:0070:22:0
MTV Hits
p:HTB+,C:0500
032b:0168affc:0008:0070:22:0
MTV Hits
p:HTB+,C:0500
052b:01680000:000d:0070:22:0
Shop&Show
p:HTB+,C:0500,f:40
032c:0168affb:0008:0070:22:0
MTV Rocks
p:HTB+,C:0500
032c:0168affc:0008:0070:22:0
MTV Rocks
p:HTB+,C:0500
052c:01680000:000d:0070:22:0
THT MUSIC
p:HTB+,C:0500
032d:0168affb:0008:0070:22:0
National Geographic
p:HTB+,C:0500,f:40
032d:0168affc:0008:0070:22:0
National Geographic
p:HTB+,C:0500
032e:0168affb:0008:0070:22:0
Nick Jr.
p:HTB+,C:0500,f:40
032e:0168affc:0008:0070:22:0
Nick Jr.
p:HTB+,C:0500
032f:0168affb:0008:0070:22:0
TLC
p:HTB+,C:0500,f:40
032f:0168affc:0008:0070:22:0
TLC
p:HTB+,C:0500,f:40
0330:0168affb:0008:0070:22:0
VH1 Classic
p:HTB+,C:0500,f:40
0330:0168affc:0008:0070:22:0
VH1 Classic
p:HTB+,C:0500,f:40
0331:0168affb:0008:0070:22:0
VH1 European
p:HTB+,C:0500
0331:0168affc:0008:0070:22:0
VH1 European
p:HTB+,C:0500
0332:0168affb:0008:0070:22:0
БОБЁР
p:HTB+,C:0500
0332:0168affc:0008:0070:22:0
БОБЁР
p:HTB+,C:0500
0333:0168affb:0008:0070:22:0
Время: далекое и близкое
p:HTB+,C:0500
0333:0168affc:0008:0070:22:0
Время: далекое и близкое
p:HTB+,C:0500
0334:0168affb:0008:0070:22:0
Дом Кино
p:HTB+,C:0500
0334:0168affc:0008:0070:22:0
Дом Кино
p:HTB+,c:0000dc,c:010140,c:0300dc,c:050001,C:0500
0335:0168affb:0008:0070:22:0
Boomerang
p:HTB+,C:0500
0335:0168affc:0008:0070:22:0
Boomerang
p:HTB+,C:0500,f:40
0835:01680000:0015:0070:22:0
2X2
p:HTB+,C:0500
0336:0168affb:0008:0070:22:0
Карусель
p:HTB+,c:0000de,c:010142,c:02020a,c:0300de,c:050001,C:0500
0336:0168affc:0008:0070:22:0
Карусель
p:HTB+,C:0500
0836:01680000:0015:0070:22:0
A1
p:HTB+,C:0500
0337:0168affb:0008:0070:22:0
Музыка Первого
p:HTB+,C:0500,f:40
0337:0168affc:0008:0070:22:0
Музыка Первого
p:HTB+,C:0500,f:40
0837:01680000:0015:0070:22:0
AMEDIA HIT
p:HTB+,C:0500
0338:0168affb:0008:0070:22:0
ТЕЛЕКАФЕ
p:HTB+,C:0500,f:40
0338:0168affc:0008:0070:22:0
ТЕЛЕКАФЕ
p:HTB+,C:0500,f:40
0838:01680000:0015:0070:22:0
Amedia Premium
p:HTB+,C:0500
083a:01680000:0015:0070:22:0
CBS Reality
p:HTB+,C:0500
083b:01680000:0015:0070:22:0
ЕвроКино
p:HTB+,C:0500
083c:01680000:0015:0070:22:0
Теленовелла
p:HTB+,C:0500
083d:01680000:0015:0070:22:0
НАШЕ ТВ
p:HTB+,C:0500
083e:01680000:0015:0070:22:0
Bollywood
p:HTB+,C:0500
083f:01680000:0015:0070:22:0
Русский Иллюзион
p:HTB+,C:0500
0840:01680000:0015:0070:22:0
AMC
p:HTB+,C:0500
0841:01680000:0015:0070:22:0
ТВЦ
p:HTB+,c:0000d5,c:010139,c:020201,c:0300d5,c:050001,C:0500
0842:01680000:0015:0070:22:0
Москва 24
p:HTB+,C:0500,f:40
0843:01680000:0015:0070:22:0
Совершенно секретно
p:HTB+,C:0500
0844:01680000:0015:0070:22:0
TВ-21М
p:HTB+,C:0500
0845:01680000:0015:0070:22:0
A2
p:HTB+,c:0000d9,c:01013d,c:020205,c:0300d9,c:050001,C:0500
0846:01680000:0015:0070:22:0
BRIDGE TV
p:HTB+,C:0500
0847:01680000:0015:0070:22:0
BRIDGE TV Русский Хит
p:HTB+,C:0500
0848:01680000:0015:0070:22:0
Playboy TV
p:HTB+,C:0500,f:40
0849:01680000:0015:0070:22:0
TiJi
p:HTB+,C:0500,f:40
084a:01680000:0015:0070:22:0
Gulli Girl
p:HTB+,C:0500
054b:01680000:000d:0070:22:0
ПП Тест2
p:HTB+,C:0500,f:40
084b:01680000:0015:0070:22:0
BBC World News
p:HTB+,C:0500
084c:01680000:0015:0070:22:0
Первый МЕТЕО
p:HTB+,C:0500
044d:01680000:000b:0070:22:0
Первый канал
p:HTB+,C:0500
084d:01680000:0015:0070:22:0
КРИК-Тв
p:HTB+,C:0500,f:40
044e:01680000:000b:0070:22:0
Домашний
p:HTB+,C:0500
084e:01680000:0015:0070:22:0
Russian extreme TV
p:HTB+,C:0500
044f:01680000:000b:0070:22:0
Кубань 24 ОРБИТА
p:HTB+
084f:01680000:0015:0070:22:0
ПРОСВЕЩЕНИЕ
p:HTB+,C:0500
0450:01680000:000b:0070:22:0
ТВ Губерния
p:HTB+,C:0500
0451:01680000:000b:0070:22:0
СТС
p:HTB+,c:0000cd,c:010131,c:0300cd,c:050001,C:0500
0452:01680000:000b:0070:22:0
CTC Love
p:HTB+,C:0500
0453:01680000:000b:0070:22:0
ТДК
p:HTB+,C:0500
0454:01680000:000b:0070:22:0
ТНВ-Планета
p:HTB+,C:0500
0455:01680000:000b:0070:22:0
Че
p:HTB+,c:0000d1,c:010135,c:0300d1,c:050001,C:0500
0555:01680000:000d:0070:22:0
TEST VIRTUAL
p:HTB+,C:0500,f:40
0456:01680000:000b:0070:22:0
Discovery Science
p:HTB+,C:0500
0457:01680000:000b:0070:22:0
NHK WORLD TV
p:HTB+,f:40
0458:01680000:000b:0070:22:0
Детский
p:HTB+,c:0000d4,c:010138,c:0300d4,c:050001,C:0500
0459:01680000:000b:0070:22:0
Зоопарк
p:HTB+,C:0500
045a:01680000:000b:0070:22:0
КИНО ТВ
p:HTB+,C:0500
045b:01680000:000b:0070:22:0
Комедия
p:HTB+,C:0500
045c:01680000:000b:0070:22:0
Россия 1 +2
p:HTB+,C:0500
0065:01680000:0001:0070:22:0
365 дней ТВ
p:HTB+,C:0500
0066:01680000:0001:0070:22:0
Авто Плюс
p:HTB+,C:0500
0067:01680000:0001:0070:22:0
Европа Плюс ТВ
p:HTB+,C:0500
0068:01680000:0001:0070:22:0
ИНДИЙСКОЕ КИНО
p:HTB+,C:0500
0069:01680000:0001:0070:22:0
КИНОМИКС
p:HTB+,C:0500
006a:01680000:0001:0070:22:0
КИНОСВИДАНИЕ
p:HTB+,C:0500
006b:01680000:0001:0070:22:0
КИНОХИТ
p:HTB+,C:0500
006c:01680000:0001:0070:22:0
КИНОКОМЕДИЯ
p:HTB+,C:0500
006d:01680000:0001:0070:22:0
Кто есть кто
p:HTB+,C:0500
006e:01680000:0001:0070:22:0
Кухня ТВ
p:HTB+,C:0500
006f:01680000:0001:0070:22:0
Ля-минор ТВ
p:HTB+,C:0500
0071:01680000:0001:0070:22:0
КИНОСЕРИЯ
p:HTB+,C:0500
0073:01680000:0001:0070:22:0
РОДНОЕ КИНО
p:HTB+,C:0500
0075:01680000:0001:0070:22:0
Ностальгия
p:HTB+,C:0500
0078:01680000:0001:0070:22:0
Русская ночь
p:HTB+,C:0500
007a:01680000:0001:0070:22:0
Hustler TV
p:HTB+,C:0500
007b:01680000:0001:0070:22:0
ЖАРА
p:HTB+,C:0500
0191:01680000:0004:0070:22:0
Detektiv.tv
p:HTB+,C:0500
0192:01680000:0004:0070:22:0
PEH TB +2
p:HTB+,C:0500
0193:01680000:0004:0070:22:0
Карусель +3
p:HTB+,C:0500
0194:01680000:0004:0070:22:0
Fine Living
p:HTB+,C:0500
0195:01680000:0004:0070:22:0
Fashion TV Network
p:HTB+,C:0500
0196:01680000:0004:0070:22:0
НТВ Право
p:HTB+,C:0500
0198:01680000:0004:0070:22:0
НТВ Сериал
p:HTB+,C:0500
0199:01680000:0004:0070:22:0
ACB TV
p:HTB+,C:0500
019a:01680000:0004:0070:22:0
Звезда +2
p:HTB+,C:0500
019b:01680000:0004:0070:22:0
Архыз 24
p:HTB+,C:0500
019c:01680000:0004:0070:22:0
МИР +4
p:HTB+,C:0500
019d:01680000:0004:0070:22:0
Пятый канал +2
p:HTB+,C:0500
4a9d:01680000:0013:0070:22:0
Телеканал Да Винчи
p:HTB+,C:0500
019f:01680000:0004:0070:22:0
НТВ Стиль
p:HTB+,C:0500
01a0:01680000:0004:0070:22:0
Food Network
p:HTB+,C:0500
4aa1:01680000:0013:0070:22:0
Viasat Explore
p:HTB+,C:0500
01a2:01680000:0004:0070:22:0
ЖИВИ!
p:HTB+,C:0500
4aa2:01680000:0013:0070:22:0
Viasat History
p:HTB+,C:0500
01a3:01680000:0004:0070:22:0
Сарафан
p:HTB+,C:0500
4aa3:01680000:0013:0070:22:0
Viasat Nature
p:HTB+,C:0500
01a4:01680000:0004:0070:22:0
Страна
p:HTB+,C:0500
01a5:01680000:0004:0070:22:0
Русский бестселлер
p:HTB+,C:0500
4aa5:01680000:0013:0070:22:0
Extreme Sports
p:HTB+,C:0500
01a6:01680000:0004:0070:22:0
БОКС ТВ
p:HTB+,C:0500
01a7:01680000:0004:0070:22:0
Game Show
p:HTB+,C:0500
4aa7:01680000:0013:0070:22:0
Первый образовательный
p:HTB+,C:0500
01a8:01680000:0004:0070:22:0
Русский роман
p:HTB+,C:0500
4aa8:01680000:0013:0070:22:0
ДОМАШНИЕ ЖИВОТНЫЕ
p:HTB+,C:0500
01a9:01680000:0004:0070:22:0
В гостях у сказки
p:HTB+,C:0500
4aa9:01680000:0013:0070:22:0
ПСИХОЛОГИЯ21
p:HTB+,C:0500
01aa:01680000:0004:0070:22:0
p:HTB+,C:0500
01ab:01680000:0004:0070:22:0
Duck
p:HTB+,C:0500
4aab:01680000:0013:0070:22:0
FOX
p:HTB+,C:0500
4aac:01680000:0013:0070:22:0
Nat Geo Wild
p:HTB+,C:0500
4aad:01680000:0013:0070:22:0
АРМЕНИЯ ТВ
p:HTB+,C:0500
4ab0:01680000:0013:0070:22:0
Мама
p:HTB+,C:0500
4ab1:01680000:0013:0070:22:0
Paramount Channel
p:HTB+,C:0500
4ab6:01680000:0013:0070:22:0
Mezzo
p:HTB+,C:0500
4ab7:01680000:0013:0070:22:0
БСТ
p:HTB+,C:0500
4ab8:01680000:0013:0070:22:0
Первый Вегетарианский
p:HTB+,C:0500
02bd:01680000:0007:0070:22:0
8 канал
p:HTB+
02be:01680000:0007:0070:22:0
ABTO24
p:HTB+,C:0500
02bf:01680000:0007:0070:22:0
Детский мир/Телеклуб
p:HTB+,C:0500
02c0:01680000:0007:0070:22:0
Eurosport 1
p:HTB+,C:0500
02c1:01680000:0007:0070:22:0
Bloomberg Television
p:HTB+,C:0500
02c3:01680000:0007:0070:22:0
FRANCE 24
p:HTB+,C:0500
02c4:01680000:0007:0070:22:0
JimJam
p:HTB+,C:0500
02c5:01680000:0007:0070:22:0
Nickelodeon
p:HTB+,C:0500
02c6:01680000:0007:0070:22:0
SONY CHANNEL
p:HTB+,C:0500
02c7:01680000:0007:0070:22:0
Sony Sci-Fi
p:HTB+,C:0500
02c9:01680000:0007:0070:22:0
Travel+Adventure
p:HTB+,C:0500
02ca:01680000:0007:0070:22:0
Продвижение
p:HTB+,C:0500
02cb:01680000:0007:0070:22:0
Загородная жизнь
p:HTB+,C:0500
02cc:01680000:0007:0070:22:0
Радость моя
p:HTB+,C:0500
02cd:01680000:0007:0070:22:0
ДОН 24
p:HTB+,C:0500
02ce:01680000:0007:0070:22:0
Грозный
p:HTB+,C:0500
02cf:01680000:0007:0070:22:0
Мир сериала
p:HTB+,C:0500
02d0:01680000:0007:0070:22:0
Брянская Губерния
p:HTB+,C:0500
02d1:01680000:0007:0070:22:0
Первый Ярославский
p:HTB+,C:0500
02d2:01680000:0007:0070:22:0
Любимое Кино
p:HTB+,C:0500
02d3:01680000:0007:0070:22:0
TRiCK
p:HTB+,C:0500
02d4:01680000:0007:0070:22:0
Шансон-ТВ
p:HTB+,C:0500
03e9:01680000:000a:0070:22:0
Россия 1
p:HTB+,C:0500
03ea:01680000:000a:0070:22:0
МАТЧ!
p:HTB+,C:0500,f:40
03eb:01680000:000a:0070:22:0
Пятый канал
p:HTB+,c:0000cb,c:01012f,c:0201f7,c:0300cb,c:050001,C:0500
03ec:01680000:000a:0070:22:0
РЕН ТВ
p:HTB+,c:0000cc,c:010130,c:0300cc,c:050001,C:0500
03ed:01680000:000a:0070:22:0
Россия К
p:HTB+,C:0500
03ee:01680000:000a:0070:22:0
Россия 24
p:HTB+,c:0000ce,c:010132,c:0300ce,c:050001,C:0500
03ef:01680000:000a:0070:22:0
СПАС
p:HTB+,C:0500
03f0:01680000:000a:0070:22:0
ТВ-3
p:HTB+,C:0500
03f1:01680000:000a:0070:22:0
ПЯТНИЦА
p:HTB+,c:0000d1,c:010135,c:0300d1,c:050001,C:0500
03f2:01680000:000a:0070:22:0
МИР
p:HTB+,C:0500
03f3:01680000:000a:0070:22:0
Shopping Live
p:HTB+,f:40
03f4:01680000:000a:0070:22:0
Shop24
p:HTB+,C:0500,f:40
03f5:01680000:000a:0070:22:0
RT (арабский)
p:HTB+,C:0500,f:40
03f6:01680000:000a:0070:22:0
RT (испанский)
p:HTB+,C:0500,f:40
2f47:01680000:000c:0070:25:0
HD Life
p:HTB+,C:0500
2f49:01680000:000c:0070:25:0
Discovery Channel HD
p:HTB+,C:0500
2f4a:01680000:000c:0070:25:0
Телеканал КХЛ HD
p:HTB+,C:0500
057c:01680000:000e:0070:25:0
MTV Live HD
p:HTB+,C:0500
057f:01680000:000e:0070:25:0
МИР HD
p:HTB+,C:0500
4e85:01680000:0014:0070:25:0
Nat Geo Wild HD
p:HTB+,C:0500
4e86:01680000:0014:0070:25:0
RTG HD
p:HTB+,C:0500
4e87:01680000:0014:0070:25:0
Mezzo Live HD
p:HTB+,C:0500
4e88:01680000:0014:0070:25:0
MGM HD
p:HTB+,C:0500
4e89:01680000:0014:0070:25:0
Первый канал HD
p:HTB+,c:0000cd,c:010131,c:0201f9,c:0300cd,c:050001,C:0500
4e8a:01680000:0014:0070:25:0
Россия 1 HD
p:HTB+,C:0500,f:40
6592:01680000:0009:0070:25:0
National Geographic HD
p:HTB+,C:0500
6593:01680000:0009:0070:25:0
Amedia Premium HD
p:HTB+,C:0500
6594:01680000:0009:0070:25:0
History HD
p:HTB+,C:0500
6595:01680000:0009:0070:25:0
TLC HD
p:HTB+,C:0500
6596:01680000:0009:0070:25:0
Travel Channel HD
p:HTB+,C:0500
0899:01680000:0016:0070:25:0
HTB HD
p:HTB+,c:0000c9,c:01012d,c:0300c9,c:050001,C:0500
089a:01680000:0016:0070:25:0
Animal Planet HD
p:HTB+,C:0500,f:40
089b:01680000:0016:0070:25:0
КОННЫЙ МИР HD
p:HTB+,C:0500
089c:01680000:0016:0070:25:0
МАТЧ! HD
p:HTB+,C:0500,f:40
089d:01680000:0016:0070:25:0
Дом Кино Премиум HD
p:HTB+,C:0500
089e:01680000:0016:0070:25:0
BRIDGE HD
p:HTB+,C:0500
089f:01680000:0016:0070:25:0
THT HD
p:HTB+,c:0000cf,c:010133,c:0300cf,c:050001,C:0500
42cd:01680000:0011:0070:25:0
FOX HD
p:HTB+,C:0500
42d1:01680000:0011:0070:25:0
Viasat Nature/History HD
p:HTB+,C:0500
1f51:01680000:000a:0070:100:0
12264V SID 0x1f51
p:DVB-S QPSK 12264V 36.0°E,f:40
0003:01680000:000a:0070:135:0
EPG TECT
p:HTB+,C:0500,f:40
0002:01680000:000a:0070:136:0
Имена групп каналов
p:HTB+,C:0500,f:40
0032:01680000:000a:0070:139:0
010D011320
p:HTB+,f:40
003c:01680000:000a:0070:139:0
010E01130F
p:HTB+,f:40
end

View File

@@ -179,7 +179,6 @@
<property name="label" translatable="yes">Satellites editor</property> <property name="label" translatable="yes">Satellites editor</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="image">image1</property>
<property name="use_stock">False</property> <property name="use_stock">False</property>
</object> </object>
</child> </child>
@@ -602,6 +601,67 @@
</object> </object>
</child> </child>
</object> </object>
<object class="GtkFileChooserDialog" id="path_chooser_dialog">
<property name="can_focus">False</property>
<property name="title" translatable="yes"> </property>
<property name="type_hint">dialog</property>
<property name="transient_for">main_window</property>
<property name="action">save</property>
<child internal-child="vbox">
<object class="GtkBox" id="filechooserdialog-vbox3">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox" id="filechooserdialog-action_area3">
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="button2">
<property name="label">gtk-undo</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button1">
<property name="label">gtk-ok</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
<property name="yalign">0.55000001192092896</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
<action-widgets>
<action-widget response="-6">button2</action-widget>
<action-widget response="-12">button1</action-widget>
</action-widgets>
</object>
<object class="GtkDialog" id="settings_dialog"> <object class="GtkDialog" id="settings_dialog">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="title" translatable="yes">Options</property> <property name="title" translatable="yes">Options</property>
@@ -620,6 +680,7 @@
<child internal-child="action_area"> <child internal-child="action_area">
<object class="GtkButtonBox" id="dialog-action_area1"> <object class="GtkButtonBox" id="dialog-action_area1">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">end</property>
<property name="layout_style">end</property> <property name="layout_style">end</property>
<child> <child>
<object class="GtkButton" id="cancel_button"> <object class="GtkButton" id="cancel_button">
@@ -632,7 +693,7 @@
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
@@ -646,20 +707,21 @@
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">3</property>
</packing> </packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">False</property>
<property name="position">1</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkGrid" id="grid1"> <object class="GtkGrid" id="grid1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="column_homogeneous">True</property>
<child> <child>
<object class="GtkLabel" id="label1"> <object class="GtkLabel" id="label1">
<property name="visible">True</property> <property name="visible">True</property>
@@ -731,6 +793,8 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="text" translatable="yes">root</property> <property name="text" translatable="yes">root</property>
<property name="primary_icon_name">emblem-personal</property>
<property name="primary_icon_activatable">False</property>
</object> </object>
<packing> <packing>
<property name="left_attach">0</property> <property name="left_attach">0</property>
@@ -744,6 +808,8 @@
<property name="visibility">False</property> <property name="visibility">False</property>
<property name="invisible_char">●</property> <property name="invisible_char">●</property>
<property name="text" translatable="yes">root</property> <property name="text" translatable="yes">root</property>
<property name="primary_icon_name">emblem-nowrite</property>
<property name="primary_icon_activatable">False</property>
<property name="input_purpose">password</property> <property name="input_purpose">password</property>
</object> </object>
<packing> <packing>
@@ -755,7 +821,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
@@ -768,7 +834,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
@@ -846,7 +912,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">3</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
@@ -858,7 +924,58 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">4</property> <property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="column_homogeneous">True</property>
<child>
<object class="GtkLabel" id="label8">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Data directory:</property>
<property name="lines">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="data_dir_field">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="text" translatable="yes">/data</property>
<property name="secondary_icon_stock">gtk-open</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_tooltip_text" translatable="yes">Select</property>
<signal name="icon-press" handler="on_data_dir_field_icon_press" swapped="no"/>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkSeparator" id="separator3">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">2</property>
<property name="position">6</property>
</packing> </packing>
</child> </child>
</object> </object>

View File

@@ -1,2 +1,3 @@
if __name__ == "__main__":
pass

View File

@@ -0,0 +1,2 @@
if __name__ == "__main__":
pass

View File

@@ -2,7 +2,7 @@ from collections import namedtuple
Channel = namedtuple("Channel", ["name", "service", "freq", "fec"]) Channel = namedtuple("Channel", ["name", "service", "freq", "fec"])
FILE_PATH = "files/lamedb" FILE_PATH = "files/lamedb_example"
with open(FILE_PATH) as file: with open(FILE_PATH) as file:
lines = file.readlines() lines = file.readlines()
@@ -13,3 +13,7 @@ for l in lines:
print(lines) print(lines)
if __name__ == "__main__":
pass

View File

@@ -34,3 +34,7 @@ for elem in dom.getElementsByTagName("sat"):
for sat in satellites: for sat in satellites:
print(sat) print(sat)
if __name__ == "__main__":
pass

View File

@@ -2,12 +2,15 @@ import json
import os import os
from pathlib import Path from pathlib import Path
CONFIG_PATH = str(Path.home()) + "/.config/demon-editor/" CONFIG_PATH = str(Path.home()) + "/.config/demon-editor/"
CONFIG_FILE = CONFIG_PATH + "config.json" CONFIG_FILE = CONFIG_PATH + "config.json"
DATA_PATH = "data/"
def get_config(): def get_config():
os.makedirs(os.path.dirname(CONFIG_PATH), exist_ok=True) # create dir if not exist os.makedirs(os.path.dirname(CONFIG_PATH), exist_ok=True) # create dir if not exist
os.makedirs(os.path.dirname(DATA_PATH), exist_ok=True)
if not os.path.isfile(CONFIG_FILE) or os.stat(CONFIG_FILE).st_size == 0: if not os.path.isfile(CONFIG_FILE) or os.stat(CONFIG_FILE).st_size == 0:
with open(CONFIG_FILE, "w") as default_config_file: with open(CONFIG_FILE, "w") as default_config_file:
json.dump(get_default_settings(), default_config_file) json.dump(get_default_settings(), default_config_file)
@@ -27,12 +30,9 @@ def get_default_settings():
"user": "root", "password": "root", "user": "root", "password": "root",
"services_path": "/etc/enigma2/", "services_path": "/etc/enigma2/",
"user_bouquet_path": "/etc/enigma2/", "user_bouquet_path": "/etc/enigma2/",
"satellites_xml_path": "/etc/tuxbox/"} "satellites_xml_path": "/etc/tuxbox/",
"data_dir_path": "/data"}
if __name__ == "__main__": if __name__ == "__main__":
prop = get_config() pass
print(prop)
prop["host"] = "192.168.1.11"
write_config(prop)
print(get_config())

View File

@@ -1,11 +1,12 @@
import gi import gi
from ftplib import FTP from ftplib import FTP
from properties import get_config, write_config from main.properties import get_config, write_config
gi.require_version('Gtk', '3.0') gi.require_version('Gtk', '3.0')
from gi.repository import Gtk from gi.repository import Gtk
status_bar = None __status_bar = None
__options = get_config()
def on_about_app(item): def on_about_app(item):
@@ -16,40 +17,63 @@ def on_about_app(item):
dialog.destroy() dialog.destroy()
def get_handlers():
return {
"on_close_main_window": Gtk.main_quit,
"on_about_app": on_about_app,
"on_preferences": on_preferences,
"on_connect": on_connect,
"on_data_dir_field_icon_press": on_path_open
}
def on_path_open(*args):
builder = Gtk.Builder()
builder.add_from_file("editor_ui.glade")
dialog = builder.get_object("path_chooser_dialog")
response = dialog.run()
if response == -12: # for fix assertion 'gtk_widget_get_can_default (widget)' failed
args[0].set_text(dialog.get_filename())
dialog.destroy()
def on_preferences(item): def on_preferences(item):
builder = Gtk.Builder() builder = Gtk.Builder()
builder.add_from_file("editor_ui.glade") builder.add_from_file("editor_ui.glade")
builder.connect_signals(get_handlers())
dialog = builder.get_object("settings_dialog") dialog = builder.get_object("settings_dialog")
options = get_config()
host_field = builder.get_object("host_field") host_field = builder.get_object("host_field")
host_field.set_text(options["host"]) host_field.set_text(__options["host"])
port_field = builder.get_object("port_field") port_field = builder.get_object("port_field")
port_field.set_text(options["port"]) port_field.set_text(__options["port"])
login_field = builder.get_object("login_field") login_field = builder.get_object("login_field")
login_field.set_text(options["user"]) login_field.set_text(__options["user"])
password_field = builder.get_object("password_field") password_field = builder.get_object("password_field")
password_field.set_text(options["password"]) password_field.set_text(__options["password"])
services_field = builder.get_object("services_field") services_field = builder.get_object("services_field")
services_field.set_text(options["services_path"]) services_field.set_text(__options["services_path"])
user_bouquet_field = builder.get_object("user_bouquet_field") user_bouquet_field = builder.get_object("user_bouquet_field")
user_bouquet_field.set_text(options["user_bouquet_path"]) user_bouquet_field.set_text(__options["user_bouquet_path"])
satellites_xml_field = builder.get_object("satellites_xml_field") satellites_xml_field = builder.get_object("satellites_xml_field")
satellites_xml_field.set_text(options["satellites_xml_path"]) satellites_xml_field.set_text(__options["satellites_xml_path"])
data_dir_field = builder.get_object("data_dir_field")
data_dir_field.set_text(__options["data_dir_path"])
if dialog.run() == Gtk.ResponseType.OK: if dialog.run() == Gtk.ResponseType.OK:
options["host"] = host_field.get_text() __options["host"] = host_field.get_text()
options["port"] = port_field.get_text() __options["port"] = port_field.get_text()
options["user"] = login_field.get_text() __options["user"] = login_field.get_text()
options["password"] = password_field.get_text() __options["password"] = password_field.get_text()
options["services_path"] = services_field.get_text() __options["services_path"] = services_field.get_text()
options["user_bouquet_path"] = user_bouquet_field.get_text() __options["user_bouquet_path"] = user_bouquet_field.get_text()
options["satellites_xml_path"] = satellites_xml_field.get_text() __options["satellites_xml_path"] = satellites_xml_field.get_text()
write_config(options) __options["data_dir_path"] = data_dir_field.get_text()
write_config(__options)
dialog.destroy() dialog.destroy()
def on_connect(item): def on_connect(item):
connect(get_config()) connect(__options)
def connect(properties): def connect(properties):
@@ -57,27 +81,21 @@ def connect(properties):
try: try:
with FTP(properties["host"]) as ftp: with FTP(properties["host"]) as ftp:
ftp.login(user=properties["user"], passwd=properties["password"]) ftp.login(user=properties["user"], passwd=properties["password"])
status_bar.push(1, ftp.voidcmd("NOOP")) __status_bar.push(1, ftp.voidcmd("NOOP"))
ftp.cwd(properties["services_path"]) ftp.cwd(properties["services_path"])
ftp.retrlines("LIST") ftp.retrlines("LIST")
except Exception as e: except Exception as e:
status_bar.remove_all(1) __status_bar.remove_all(1)
status_bar.push(1, getattr(e, "message", repr(e))) # Or maybe so: getattr(e, 'message', str(e)) __status_bar.push(1, getattr(e, "message", repr(e))) # Or maybe so: getattr(e, 'message', str(e))
def init_ui(): def init_ui():
handlers = {
"on_close_main_window": Gtk.main_quit,
"on_about_app": on_about_app,
"on_preferences": on_preferences,
"on_connect": on_connect
}
builder = Gtk.Builder() builder = Gtk.Builder()
builder.add_from_file("editor_ui.glade") builder.add_from_file("editor_ui.glade")
main_window = builder.get_object("main_window") main_window = builder.get_object("main_window")
global status_bar global __status_bar
status_bar = builder.get_object("status_bar") __status_bar = builder.get_object("status_bar")
builder.connect_signals(handlers) builder.connect_signals(get_handlers())
main_window.show_all() main_window.show_all()