added service type

This commit is contained in:
Dmitriy Yefremov
2017-10-09 00:15:27 +03:00
parent 27fe701881
commit c15ff64def
4 changed files with 1621 additions and 122 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,7 @@
<!-- Generated with glade 3.18.3 -->
<interface>
<requires lib="gtk+" version="3.12"/>
<object class="GtkAccelGroup" id="accelgroup1"/>
<object class="GtkAction" id="action2"/>
<object class="GtkListStore" id="fav_liststore"/>
<object class="GtkImage" id="image1">
@@ -9,6 +10,16 @@
<property name="can_focus">False</property>
<property name="stock">gtk-edit</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">go-bottom</property>
</object>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">go-top</property>
</object>
<object class="GtkTreeViewColumn" id="package_column">
<property name="resizable">True</property>
<property name="sizing">autosize</property>
@@ -25,6 +36,8 @@
<column type="gchararray"/>
<!-- column-name package -->
<column type="gchararray"/>
<!-- column-name service_type -->
<column type="gchararray"/>
<!-- column-name ssid -->
<column type="gchararray"/>
<!-- column-name freq -->
@@ -81,22 +94,26 @@
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="imagemenuitem2">
<property name="label">gtk-connect</property>
<object class="GtkImageMenuItem" id="menuitem">
<property name="label">Download</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Download data from receiver</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="image">image2</property>
<property name="use_stock">False</property>
<signal name="activate" handler="on_download" swapped="no"/>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="imagemenuitem3">
<property name="label">gtk-disconnect</property>
<object class="GtkImageMenuItem" id="upload_menu_item">
<property name="label">Upload</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Upload data into receiver</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<property name="image">image3</property>
<property name="use_stock">False</property>
</object>
</child>
<child>
@@ -242,13 +259,38 @@
<object class="GtkToolbar" id="toolbar1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkToolButton" id="open_tool_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Open</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-open</property>
<signal name="clicked" handler="on_data_open" object="services_liststore" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkSeparatorToolItem" id="separatortoolitem1">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">False</property>
</packing>
</child>
<child>
<object class="GtkToolButton" id="download_tool_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Download data from receiver</property>
<property name="label" translatable="yes">Download</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-connect</property>
<property name="stock_id">gtk-goto-bottom</property>
<signal name="clicked" handler="on_download" swapped="no"/>
</object>
<packing>
@@ -256,6 +298,20 @@
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkToolButton" id="upload_tool_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Upload data into receiver</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-goto-top</property>
<signal name="clicked" handler="on_upload" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkSeparatorToolItem" id="toolbutton2">
<property name="visible">True</property>
@@ -315,16 +371,6 @@
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkSeparatorToolItem" id="separatortoolitem1">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">False</property>
</packing>
</child>
<child>
<object class="GtkToolButton" id="cat_tool_button">
<property name="visible">True</property>
@@ -464,7 +510,7 @@
<property name="sizing">autosize</property>
<property name="title" translatable="yes">Service</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext1"/>
<object class="GtkCellRendererText" id="service_cellrenderertext"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
@@ -477,22 +523,33 @@
<property name="sizing">autosize</property>
<property name="title" translatable="yes">Package</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext2"/>
<object class="GtkCellRendererText" id="package_cellrenderertext"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="service_type_column">
<property name="title" translatable="yes">Type</property>
<child>
<object class="GtkCellRendererText" id="type_cellrenderertex"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="ssid_column">
<property name="resizable">True</property>
<property name="sizing">autosize</property>
<property name="title" translatable="yes">Ssid</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext5"/>
<object class="GtkCellRendererText" id="ssid_cellrenderertext"/>
<attributes>
<attribute name="text">2</attribute>
<attribute name="text">3</attribute>
</attributes>
</child>
</object>
@@ -503,9 +560,9 @@
<property name="sizing">autosize</property>
<property name="title" translatable="yes">Freq</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext6"/>
<object class="GtkCellRendererText" id="freq_cellrenderertext"/>
<attributes>
<attribute name="text">3</attribute>
<attribute name="text">4</attribute>
</attributes>
</child>
</object>
@@ -516,9 +573,9 @@
<property name="sizing">autosize</property>
<property name="title" translatable="yes">Rate</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext7"/>
<object class="GtkCellRendererText" id="rate_cellrenderertext"/>
<attributes>
<attribute name="text">4</attribute>
<attribute name="text">5</attribute>
</attributes>
</child>
</object>
@@ -529,9 +586,9 @@
<property name="sizing">autosize</property>
<property name="title" translatable="yes">Pol</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext8"/>
<object class="GtkCellRendererText" id="pol_cellrenderertext"/>
<attributes>
<attribute name="text">5</attribute>
<attribute name="text">6</attribute>
</attributes>
</child>
</object>
@@ -542,9 +599,9 @@
<property name="sizing">autosize</property>
<property name="title" translatable="yes">FEC</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext9"/>
<object class="GtkCellRendererText" id="fec_cellrenderertext"/>
<attributes>
<attribute name="text">6</attribute>
<attribute name="text">7</attribute>
</attributes>
</child>
</object>
@@ -555,9 +612,9 @@
<property name="sizing">autosize</property>
<property name="title" translatable="yes">System</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext10"/>
<object class="GtkCellRendererText" id="system_cellrenderertex"/>
<attributes>
<attribute name="text">7</attribute>
<attribute name="text">8</attribute>
</attributes>
</child>
</object>

View File

@@ -1,13 +1,12 @@
"""
This module used for parsing lamedb file
""" This module used for parsing lamedb file
Currently implemented only for satellite channels!!!
Description of format taken from here: http://www.satsupreme.com/showthread.php/194074-Lamedb-format-explained
Currently implemented only for satellite channels!!!
Description of format taken from here: http://www.satsupreme.com/showthread.php/194074-Lamedb-format-explained
"""
from collections import namedtuple
from enum import Enum
Channel = namedtuple("Channel", ["service", "package", "ssid", "freq", "rate", "pol", "fec", "system"])
Channel = namedtuple("Channel", ["service", "package", "service_type", "ssid", "freq", "rate", "pol", "fec", "system"])
_HEADER = "eDVB services /4/"
_FILE_PATH = "../data/lamedb_example"
@@ -34,7 +33,11 @@ FEC = {0: "None", 1: "Auto", 2: "1/2",
6: "7/8", 7: "3/5", 8: "4/5",
9: "8/9", 10: "9/10"}
System = {0: "DVB-S", 1: "DVB_S2"}
SYSTEM = {0: "DVB-S", 1: "DVB_S2"}
SERVICE_TYPE = {-2: "Unknown", 1: "TV", 2: "Radio", 3: "Data",
10: "Radio", 12: "Data", 22: "TV", 25: "HD TV",
136: "Data", 139: "Data"}
def parse(path):
@@ -43,6 +46,7 @@ def parse(path):
data = str(file.read())
transponders, sep, services = data.partition("transponders") # 1 step
transponders, sep, services = services.partition("services") # 2 step
services, sep, _ = services.partition("end") # 3 step
return get_channels(services.split("\n"), transponders.split("/"))
@@ -74,9 +78,9 @@ def get_channels(*args):
if transponder is not None:
tr = str(transponder)[2:].split(_SEP) # Removing type of DVB transponders (s , t, c) and split
pack = pack[2:pack.find(",")]
channels.append(Channel(ch[1], pack, data[0], tr[0],
channels.append(Channel(ch[1], pack, SERVICE_TYPE.get(int(data[4]), SERVICE_TYPE[-2]), data[0], tr[0],
tr[1], Polarization(int(tr[2])).name,
FEC[int(tr[3])], System[int(tr[6])]))
FEC[int(tr[3])], SYSTEM[int(tr[6])]))
return channels

View File

@@ -26,6 +26,7 @@ def get_handlers():
"on_about_app": on_about_app,
"on_preferences": on_preferences,
"on_download": on_download,
"on_upload": on_upload,
"on_data_dir_field_icon_press": on_path_open,
"on_data_open": on_data_open,
"on_tree_view_key_release": on_tree_view_key_release
@@ -99,18 +100,25 @@ def on_tree_view_key_release(widget, event):
print(widget.get_name())
def on_upload(item):
connect(__options, False)
def on_download(item):
connect(__options)
def connect(properties):
def connect(properties, download=True):
assert isinstance(properties, dict)
try:
with FTP(properties["host"]) as ftp:
ftp.login(user=properties["user"], passwd=properties["password"])
__status_bar.push(1, ftp.voidcmd("NOOP"))
ftp.cwd(properties["services_path"])
ftp.retrlines("LIST")
if download:
__status_bar.push(1, ftp.voidcmd("NOOP"))
ftp.cwd(properties["services_path"])
ftp.retrlines("LIST")
else:
pass
except Exception as e:
__status_bar.remove_all(1)
__status_bar.push(1, getattr(e, "message", repr(e))) # Or maybe so: getattr(e, 'message', str(e))