Вернуться   DreamBox Satellite Forum > Обсуждение > Dreambox DM 5xxx/7xxx/8xxx/9xxx > Developer board

Developer board Раздел для разработчиков софта

Ответ
 
Опции темы

Вопросы по программированию на Python. Решение проблем.
Старый 25.08.2010, 14:12   #1
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию Вопросы по программированию на Python. Решение проблем.

На форуме в разных темах всплывают вопросы по программированию конверторов, рендеров, просто питоновских модулей...
Так-что было предложено, а администрация поддержала, создать тему, в которой бы обсуждались вопросы и связанные с ними проблемы по программированию на языке Python.
Так-что милости просим девелоперов и просто знающих или интересующихся, как с вопросами, так и с ответами на поставленные вопросы.
.
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB

Последний раз редактировалось vlamo; 04.01.2012 в 14:32.
  Ответить с цитированием

Старый 03.01.2012, 16:56   #2
Эксперт
 
nikolasi вне форума
Регистрация: 09.01.2007
Сообщений: 234
По умолчанию

Уважаемый Вламо-есть один вопрос...сделал рендер вывода температуры винта+свободного места флеша.Последний сделан отдельным дефкой(вот пример)
Код:
from Components.VariableText import VariableText
from enigma import eLabel
from Renderer import Renderer
from os import popen
from string import upper
import os

class SYSInfo(Renderer, VariableText):
	def __init__(self):
		Renderer.__init__(self)
		VariableText.__init__(self)
	GUI_WIDGET = eLabel


        
	def changed(self, what):
                
                if not self.suspended:

                        textvalue = "No info"
                        ret2 = self.temphdd()
                        ret = ""
	                try:
                                out_lines = [] 
		                out_lines = popen("cat /proc/meminfo").readlines()
		                for lidx in range(len(out_lines)-1):
                                       tstLine = out_lines[lidx].split()
                                       if "MemFree:" in tstLine:
                                           ret = out_lines[lidx]
		                           textvalue = str('%s%s' % (ret, ret2))
		                            
	                except:
		                pass
		        self.text = textvalue

                        
                                                              

	def temphdd(self):

                res = "No info"		
	        loada = 0
	        try:
		        out_line = popen("hddtemp -n -q /dev/sda1").readline()
		        loada = "HDD  ┬░C:  " + out_line[:4]
		        res = loada
	        except:
		        pass
                return res				

	def onShow(self):
		self.suspended = False
		self.changed(None)

	def onHide(self):
		self.suspended = True
прикол в том что выводит но не строкой а столбцом))) почему именно столбцом?Планирую сюда еще вписать вывод инфы о своднойго места винта и тд...

Последний раз редактировалось vlamo; 03.01.2012 в 18:30.
  Ответить с цитированием

Старый 03.01.2012, 17:28   #3
Виртуоз
 
Аватар для derdisis
 
derdisis вне форума
Регистрация: 17.10.2008
Адрес: Беларусь
Сообщений: 1,663
Отправить сообщение для derdisis с помощью ICQ Отправить сообщение для derdisis с помощью Skype™
По умолчанию

Цитата:
Сообщение от nikolasi Посмотреть сообщение
Уважаемый Вламо-есть один вопрос...сделал рендер вывода температуры винта+свободного места флеша.Последний сделан отдельным дефкой(вот пример)


прикол в том что выводит но не строкой а столбцом))) почему именно столбцом?Планирую сюда еще вписать вывод инфы о своднойго места винта и тд...
Очень ждем этой фишки.
__________________
DreamBox DM800se HD PVR Original + Kingston SSDNow V300 120GB + LCD LG 47LM660S 3D Full HD + Pioneer VSX-528-K + Wharfedale 5.1 + TP-Link TD-VG3631 + D-Link DAP-1150 + HDI Dune HD Base 3D + 90 см (4,0°W Twin 4,8°E) + 90 см (13,0°E Twin) + 130 см (36°E Twin) + Gemini 3 iCVS Last, MGCamd 1.35a
  Ответить с цитированием

Старый 03.01.2012, 18:49   #4
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию

Цитата:
Сообщение от nikolasi Посмотреть сообщение
прикол в том что выводит но не строкой а столбцом))) почему именно столбцом?
Думаю, что вся проблема в том, что когда вы пользуете ф-цию readlines(), она возвращает все символы в строках файла, включая символ переноса строки "\n".
Попробуйте использовать ф-цию strip() или rstrip() для строк, например:
Код:
ret = out_lines[lidx].strip()
textvalue = str('%s%s' % (ret, ret2))
PS. nikolasi, пожалуйста!, заворачивайте исходники в тег CODE, их же читать невозможно, особенно, если это пайтоновские исходники - теряются все отступы.
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB
  Ответить с цитированием

Старый 03.01.2012, 19:03   #5
Виртуоз
 
Аватар для derdisis
 
derdisis вне форума
Регистрация: 17.10.2008
Адрес: Беларусь
Сообщений: 1,663
Отправить сообщение для derdisis с помощью ICQ Отправить сообщение для derdisis с помощью Skype™
По умолчанию

Цитата:
Сообщение от vlamo Посмотреть сообщение
Думаю, что вся проблема в том, что когда вы пользуете ф-цию readlines(), она возвращает все символы в строках файла, включая символ переноса строки "\n".
Попробуйте использовать ф-цию strip() или rstrip() для строк, например:
Код:
ret = out_lines[lidx].strip()
textvalue = str('%s%s' % (ret, ret2))
PS. nikolasi, пожалуйста!, заворачивайте исходники в тег CODE, их же читать невозможно, особенно, если это пайтоновские исходники - теряются все отступы.
Хоть и не понимаю нихрена, но так приятно слушать разговор умных людей.
Давайте мужики. Очем ждем.
__________________
DreamBox DM800se HD PVR Original + Kingston SSDNow V300 120GB + LCD LG 47LM660S 3D Full HD + Pioneer VSX-528-K + Wharfedale 5.1 + TP-Link TD-VG3631 + D-Link DAP-1150 + HDI Dune HD Base 3D + 90 см (4,0°W Twin 4,8°E) + 90 см (13,0°E Twin) + 130 см (36°E Twin) + Gemini 3 iCVS Last, MGCamd 1.35a
  Ответить с цитированием

Старый 03.01.2012, 19:43   #6
Виртуоз
 
Аватар для derdisis
 
derdisis вне форума
Регистрация: 17.10.2008
Адрес: Беларусь
Сообщений: 1,663
Отправить сообщение для derdisis с помощью ICQ Отправить сообщение для derdisis с помощью Skype™
По умолчанию

Цитата:
Сообщение от maigais Посмотреть сообщение
да блин derdisis ,какои ты ленивыи стал

nikolasi уже давно конвектор выложил на другом форуме
фишку температуры он добавил в Конвертор ExtremeInfo

я лично непользуюс потому что он кодирован и под себя поддогнать нет вазможности

типо того
Да не ленивый я. Просто уже фишек никаких нет, которые можно добавить. Мне не нужна температура. Она и так есть в GP3. Хотелось бы объем свободного места. А по другим форумам я не лажу.
__________________
DreamBox DM800se HD PVR Original + Kingston SSDNow V300 120GB + LCD LG 47LM660S 3D Full HD + Pioneer VSX-528-K + Wharfedale 5.1 + TP-Link TD-VG3631 + D-Link DAP-1150 + HDI Dune HD Base 3D + 90 см (4,0°W Twin 4,8°E) + 90 см (13,0°E Twin) + 130 см (36°E Twin) + Gemini 3 iCVS Last, MGCamd 1.35a

Последний раз редактировалось derdisis; 03.01.2012 в 19:46.
  Ответить с цитированием

Старый 03.01.2012, 19:49   #7
Эксперт
 
nikolasi вне форума
Регистрация: 09.01.2007
Сообщений: 234
По умолчанию

Цитата:
Сообщение от maigais Посмотреть сообщение
да блин derdisis ,какои ты ленивыи стал

nikolasi уже давно конвектор выложил на другом форуме
фишку температуры он добавил в Конвертор ExtremeInfo

я лично непользуюс потому что он кодирован и под себя поддогнать нет вазможности

типо того
)))Допустим конвертер я не выкладывал))Проблема в том что конвертер грузит систему притом сильно.Когда это дело сделано рендером-все кажет зашибись..тока не вьеду почему когда прописал строкой вывод инфы выводит столбцом....
Уважаемый Вламо-конечно я пробовал и через str но все тоже самое-выводит но столбцом....лано-подумаю завтра что не так....Зы-а прикол что все вроде верно написал)))
  Ответить с цитированием

Старый 03.01.2012, 19:55   #8
Виртуоз
 
Аватар для derdisis
 
derdisis вне форума
Регистрация: 17.10.2008
Адрес: Беларусь
Сообщений: 1,663
Отправить сообщение для derdisis с помощью ICQ Отправить сообщение для derdisis с помощью Skype™
По умолчанию

Цитата:
Сообщение от nikolasi Посмотреть сообщение
)))Допустим конвертер я не выкладывал))Проблема в том что конвертер грузит систему притом сильно.Когда это дело сделано рендером-все кажет зашибись..тока не вьеду почему когда прописал строкой вывод инфы выводит столбцом....
Уважаемый Вламо-конечно я пробовал и через str но все тоже самое-выводит но столбцом....лано-подумаю завтра что не так....Зы-а прикол что все вроде верно написал)))
Конечно не мне Вам давать советы, но вдруг именно в этом ошибка. Если команда вывода инфы по рендеру указывается в skin.xml, то может просто окно вывода по горизонтали нужно увеличить. А так оно получается маленькое по горизонтали, но достаточное для переноса во вертикали. Ну это я так типа сумничал.
__________________
DreamBox DM800se HD PVR Original + Kingston SSDNow V300 120GB + LCD LG 47LM660S 3D Full HD + Pioneer VSX-528-K + Wharfedale 5.1 + TP-Link TD-VG3631 + D-Link DAP-1150 + HDI Dune HD Base 3D + 90 см (4,0°W Twin 4,8°E) + 90 см (13,0°E Twin) + 130 см (36°E Twin) + Gemini 3 iCVS Last, MGCamd 1.35a
  Ответить с цитированием

Старый 03.01.2012, 22:17   #9
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию

Цитата:
Уважаемый Вламо-конечно я пробовал и через str но все тоже самое-выводит но столбцом....лано-подумаю завтра что не так....Зы-а прикол что все вроде верно написал)))
Ну, не знаю. То ли бестолково объяснил, то ли еще что.
Одно могу сказать наверняка, что str() и strip() это две разных функции.
Смотрите пример:
Код:
>>> s = "\t  Hello, world!  \n"
>>> print s
          Hello, world!  

>>> print str(s)
          Hello, world!  

>>> print s.rstrip()
          Hello, world!
>>> print s.strip()
Hello, world!
>>>
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB
  Ответить с цитированием

Старый 03.01.2012, 22:39   #10
Эксперт
 
Аватар для Ligioner
 
Ligioner вне форума
Регистрация: 04.01.2010
Сообщений: 137
По умолчанию

Уважаемый vlamo не могли бы Вы подправить рендер температуры харда
В общем я взял рендер MaxTemp.py Vali и подредактировал его, сменил команду

там было так

Код:
                self.text = str(maxtemp)  + "loadavg"
            else:
                loada = 0
                try:
                    out_line = popen("cat /proc/loadavg").readline()
                    loada = out_line[:4]    
                except:
                    pass
                self.text = loada
Я сделал так и переименовал его в HDDTemp теперь он выводит температуру харда, но мне сказали, что в нём много мусора
Код:
                self.text = str(maxtemp) + " Temp. in °C"
            else:
                loada = 0
                try:
                    out_line = popen("hddtemp -n -q /dev/sda").readline()
                    loada = out_line[:4]    
                except:
                    pass
                self.text = loada
И сам рендер MaxTemp.py тоже не много изменил, чтобы больше значений брать
loada = out_line[:15]


Код:
from Components.VariableText import VariableText
from Components.Sensors import sensors
from Tools.HardwareInfo import HardwareInfo
from enigma import eLabel
from Renderer import Renderer
from os import popen

class MaxTemp(Renderer, VariableText):
    def __init__(self):
        Renderer.__init__(self)
        VariableText.__init__(self)
        if "bm750" in HardwareInfo().get_device_name():
            self.ZeigeTemp = True
        else:
            self.ZeigeTemp = False
    GUI_WIDGET = eLabel

    def changed(self, what):
        if not self.suspended:
            if self.ZeigeTemp:
                maxtemp = 0
                try:
                    templist = sensors.getSensorsList(sensors.TYPE_TEMPERATURE)
                    tempcount = len(templist)
                    for count in range(tempcount):
                        id = templist[count]
                        tt = sensors.getSensorValue(id)
                        if tt > maxtemp:
                            maxtemp = tt
                except:
                    pass
                self.text = str(maxtemp) + "loadavg"
            else:
                loada = 0
                try:
                    out_line = popen("cat /proc/loadavg").readline()
                    loada = out_line[:15]    
                except:
                    pass
                self.text = loada

    def onShow(self):
        self.suspended = False
        self.changed(None)

    def onHide(self):
        self.suspended = True
Вложения
Тип файла: zip HDDTemp.zip (688 байт, 9 просмотров)

Последний раз редактировалось Ligioner; 03.01.2012 в 22:46.
  Ответить с цитированием

Старый 03.01.2012, 22:50   #11
Эксперт
 
Аватар для 2boom
 
2boom вне форума
Регистрация: 29.01.2010
Сообщений: 225
По умолчанию

я тут со скуки баловался накропал конвертер инфа о диске, если кому пригодится...
Код:
#<widget source="session.CurrentService" render="Label" position="189,397" zPosition="4" size="350,20" noWrap="1" valign="center" halign="center" font="Regular;14" foregroundColor="clText" transparent="1"  backgroundColor="#20002450">
	<convert type="DiskInfo">xALL</convert>
</widget>
Вложения
Тип файла: zip DiskInfo.zip (870 байт, 20 просмотров)
  Ответить с цитированием

Старый 03.01.2012, 22:58   #12
Виртуоз
 
Аватар для derdisis
 
derdisis вне форума
Регистрация: 17.10.2008
Адрес: Беларусь
Сообщений: 1,663
Отправить сообщение для derdisis с помощью ICQ Отправить сообщение для derdisis с помощью Skype™
По умолчанию

Цитата:
Сообщение от 2boom Посмотреть сообщение
я тут со скуки баловался накропал конвертер инфа о диске, если кому пригодится...
Код:
#<widget source="session.CurrentService" render="Label" position="189,397" zPosition="4" size="350,20" noWrap="1" valign="center" halign="center" font="Regular;14" foregroundColor="clText" transparent="1"  backgroundColor="#20002450">
	<convert type="DiskInfo">xALL</convert>
</widget>
А какую именно инфу он выводит?
__________________
DreamBox DM800se HD PVR Original + Kingston SSDNow V300 120GB + LCD LG 47LM660S 3D Full HD + Pioneer VSX-528-K + Wharfedale 5.1 + TP-Link TD-VG3631 + D-Link DAP-1150 + HDI Dune HD Base 3D + 90 см (4,0°W Twin 4,8°E) + 90 см (13,0°E Twin) + 130 см (36°E Twin) + Gemini 3 iCVS Last, MGCamd 1.35a
  Ответить с цитированием

Старый 03.01.2012, 23:00   #13
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию

Цитата:
Уважаемый vlamo не могли бы Вы подправить рендер температуры харда
В общем я взял рендер MaxTemp.py Vali и подредактировал его, сменил команду
...
Я сделал так и переименовал его в HDDTemp теперь он выводит температуру харда, но мне сказали, что в нём много мусора
Не знаю, кто вам сказал про мусор и что он имел в виду?
Раз работает, то уже неплохо.
Может имелось ввиду использование сенсоров, но с ними я не знаком?
Если они не нужны, выбросьте этот кусок кода - строки 23 - 36 (включительно) + строка 6 + строки 16 - 19 (включительно).

А вот я б что сделал, так это изменил бы строку 37 вот так:
loada = "0"

Т.е. ноль заключить в кавычки, чтоб это была строка, а не число. Иначе произойдет сбой, если вдруг у конечного пользователя не будет установлен hddtemp.
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB
  Ответить с цитированием

Старый 03.01.2012, 23:01   #14
Эксперт
 
Аватар для Ligioner
 
Ligioner вне форума
Регистрация: 04.01.2010
Сообщений: 137
По умолчанию

Цитата:
Сообщение от derdisis Посмотреть сообщение
А какую именно инфу он выводит?
Дак там же команда в нём написана
Киньте её в телнет и увидите что он может

  Ответить с цитированием

Старый 03.01.2012, 23:05   #15
Эксперт
 
Аватар для 2boom
 
2boom вне форума
Регистрация: 29.01.2010
Сообщений: 225
По умолчанию

размер, сколько занято и сколко свободно, в разных вариантах, по отдельности и всескопом, температуры там нет((((
  Ответить с цитированием
Ответ

Закладки


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

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход




Часовой пояс GMT +3, время: 15:10.


vBulletin skin developed by: eXtremepixels
Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot


Спутниковое телевидение, оборудование для прима. Ресиверы Dreanbox Multimedia.
Самые актуальные обзоры новейших спутниковых ресиверов.