Frage zu xml einlesen :-)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mocca
User
Beiträge: 84
Registriert: Mittwoch 4. März 2009, 16:44

ich editiere mal nicht, da der andere post sonst zu lang wird.

falls jemand ne idee zum vorherigen post hat, bin ich natürlich super dankbar, aber falls da keiner lust drauf hat weils massig code ist, kann ich das natürlich gut verstehen.


ich hab auch meinen ursprünglichen code zum xml problem mal erweitert, weil ich einen weg gefunden habe eine der fehlenden infos noch einzulesen.

blöde dabei ist nur, dass ich letztlich einen wert für serviceid bekomme, der in abhängigkeit vom servicename (=channelname) vorliegt.

ich bin nciht ganz sicher, wie ich jetzt die korrekte zuweisung hinkriege. aktuell schreibt er nämlich bei jedem eintrag die gleiche serviceid rein.

im prinzip nehme ich an muss eine abfrage rein, die schaut, ob channelname = servicename ist und dann die serviceid in die zeile schreibt. bin nur nicht sicher wie.

Code: Alles auswählen

import os
import sys
from Screens.MessageBox import MessageBox
from Plugins.Plugin import PluginDescriptor
from Components.FileList import FileList
from Screens.ChannelSelection import service_types_tv, service_types_radio
from enigma import eServiceReference, eServiceCenter
from xml.etree import ElementTree as etree

class ServiceReferenceChecker(MessageBox):
	def __init__(self, session):
		service_list = []
		polarisation_info = {}
		serviceid_info = {}
		symbolrate_info = {}
		os.getcwd()
		kanallistexml = "/tmp/kanalliste.xml"
		tree = etree.parse(kanallistexml)
		serviceHandler = eServiceCenter.getInstance()
		refstr = '%s ORDER BY name' % (service_types_tv)
		servicelist = serviceHandler.list(eServiceReference(refstr))
		channels = servicelist and servicelist.getContent("NSR", True)
		counter = 0
		
		if channels is not None:
			for channel in channels:
				counter += 1
				serviceid = channel[1]
				channelname = channel[0]
				serviceid_info[channelname] = serviceid
						
		for f in tree.findall('//Transponder'):
		  frequency = f.find('Frequency').text 
		  polarisation = f.find('Polarisation').text 
		  symbolrate = f.find('SymbolRate').text
		  polarisation_info[frequency] = polarisation
		  symbolrate_info[frequency] = symbolrate
		
		for f in tree.findall('//Service'):
		  frequency = f.find('Frequency').text
		  service_list.append(f.find('ServiceName').text + '#' + f.find('Frequency').text + '#' + polarisation_info[frequency] + '#' + f.find('SatId').text + '#' + symbolrate_info[frequency] + '#' + f.find('VideoPid').text + '#' + f.find('AudioPid').text + '#' + f.find('Sid').text + '#' + serviceid_info[channelname])
		
		Frequencyfinal = '\n'.join(service_list)
		kanallistechannels = open("/tmp/kanalliste.channels", 'w')
		print >> kanallistechannels, Frequencyfinal.encode('utf-8')

EDIT: hab nen eigenen thread für das problem des vorherigen posts erzeugt, damits hier übersichtlich auf xml begrenzt bleibt.
Antworten