Funkar riktigt bra faktiskt! Inte lika bra som i XBMP men tillsvidare är den bästa som jag sett...
Interactive Tv-Guide using listing.xml
http://dwl.xboxmediacenter.de/index....ff403ced1ba0b9
Printable View
Funkar riktigt bra faktiskt! Inte lika bra som i XBMP men tillsvidare är den bästa som jag sett...
Interactive Tv-Guide using listing.xml
http://dwl.xboxmediacenter.de/index....ff403ced1ba0b9
Vart fixar man en listing.xml som är up to date då?
Finns det nåt smidigt sätt att hålla den uppdaterad?
o2grabber. Du måste dock ta bort lang="sv" i listing.xml filen för att TvGuiden inte ska visa Display Error som kanalnamn...
Nu har jag fixat det för mig!!! ;)
Dels har jag gjort en bat fil som varje dag hämtar hem en listing.xml för 2 dagar framåt.
Sen har jag gjort ett python script som hämtar listings.xml från min dator till xboxen...
Så nu har jag alltid en uppdaterad TvGuide utan att göra ett piss!!! :)
ktd kan du inte lägga ut scriptet för överförning av listing.xml till xboxen?
Jo. Vart?
Sen kopplar scriptet upp sig mot en ftpserver så det förutsätter att du har en ftpserver på datorn...
ktd har du icq eller msn? Skulle vilja prata lite med dig :)
Japp. ICQ men jag lägger inte ut den här...
Du kan maila filen till psxcare@netcare.se så lägger jag in den här.
På väg...........
KTD!? är du bra på xbox!? vill ha uppgraderingar till min unleashx dashboard!? vart får jag tag på det??
Den nya UnleashX funkar bra som fan!..
Men det finns ingen anledning att köra nån annan dash än XBMC så... ;)
Kolla på www.xbins.org Glöm inte läsa deras FAQ...
varför är xbmc bäst då??? vart får jag tag på allt??! är det xbins!?
Eftersom jag använder min xbox mest till att kolla på film, lyssna på musik, kolla tvguiden osv. är det ju onödigt att starta upp med en dash för att direkt ladda XBMC...
Och är det nån funktion man behöver nån gång då & då som ligger i en anna dash startar jag bara den. Som tex. så tycker jag att UnleashX text editor är as bra så när jag behöver den går jag in i apps i XBMC och startar UnleashX...
Jo om den hade varit felfri hade det ju varit ngt att ha som dashboard
Vad är det som inte funkar som gör att du inte kan ha den som dash?
Det finns inte ett endas spel eller program jag kan launcha från XBMC iaf...
skiten bara rullar i PM skinnet när man skall in på videos i smb, men funkar i Music.
Men det funkar i MP skinnet utom att visa ÅÄÖ i mapparna, men det funkar i mp3 filerna??
Jo jag läste att du & nån mer hade problem med det. Men ingen av oss andra har det. Jag har installerat XBMC med PM på minst 5 andras X-Boxar och det funkar klockrent!
*EDIT*
Vad menar du med att skiten bara ruller? Jag tänkte jag kunde höra med devsen om dom har nån idé vad det kan vara?..
hmm konstigt..............
skall prova med att installera om hela OS/drivrutiner på PCn.
Men får du visat ÅÄÖ på det andra skinnet i dina mappar på PCn?
Var ligger typsnitten i mappen för det skinnet kan man lägga in ÅÄÖ?
Jag ska kolla om jag får å,ä,ö i MediaCenter. Har inte kört det på flera månader...
Tack det var snällt.
Jo, då. Å,Ä & Ö i både mappar & filer...
http://www.nofuzz.com/ktd/mediacenter1.jpg
http://www.nofuzz.com/ktd/mediacenter2.jpg
va fan..................???? jag får bara fyrkanter,
det har jag aldrig fått kosntigt som fan. :confused:
Kan man få din kompilering på ngt sätt tex bitorrent :D
Jag har aldrig heller haft problem med ÅÄÖ. Har alltid funkat oavsett skins.
pege63 hur lyckas du? :)
det är ju det jag inte gör !!!! :D
HA HA HA!!! Skön inställning!!!Citat:
Original inlägg av pege63
Vi ska lösa det här page63...
Prova ladda ner dom fonter jag använder och se... FONTER
@Hansi Skulle vara bra om man kunde ladda upp filer till forumet...
Du kan ju det till "oss" som inte skulle missbruka och till en max storelek eller nått...
var ska jag lägga dom i för mapp?
xbmc/skin/mediacenter/fonts
Ta bort dom du redan har där först...
Okej skall prova med det nu tackar så länge
Ktd??
Kan du hjälpa mig oxå o få igång en TV guide ???
17-09-2004 19:47:30 -->Python Initialized<--
17-09-2004 19:47:30
17-09-2004 19:47:30 Traceback (most recent call last):
17-09-2004 19:47:30 File "Q:\scripts\tv.guide.py", line 5, in ?
17-09-2004 19:47:30
17-09-2004 19:47:30 from re import search, DOTALL
17-09-2004 19:47:30 ImportError
17-09-2004 19:47:30 :
17-09-2004 19:47:30 No module named re
17-09-2004 19:47:30
Få detta vet ej vad jag skall göra, andvänder detta script tv.guide.py
som jag hittade på länken längst upp...
Klistra in hela din tv.guide.py
*EDIT*
Jag hoppas du har python mappen inlaggd i din XBMC mapp...
Den är där...
Kan vi ta det på ICQ ???
Men här kommer filen:
# Python XMLTV "listing.xml" TVGuide script by cruent 2004
# Version update 0.2: Added FTP support and sorted channels
import time, xbmcgui, xbmc
from re import search, DOTALL
from ftplib import FTP
from string import split, replace
from textwrap import fill
from os.path import getsize
# WANT SORTED CHANNELS
sorted = "false"
# GET ACTIONCODES FROM KEYMAP.XML
ACTION_MOVE_LEFT = 1
ACTION_MOVE_RIGHT = 2
ACTION_MOVE_UP = 3
ACTION_MOVE_DOWN = 4
ACTION_SELECT_ITEM = 7
ACTION_PARENT_DIRECTORY = 9
ACTION_PREVIOUS_MENU = 10
# THE PATH TO IMAGES
background = "q:\\tvguide\\background.png"
timebar = "q:\\tvguide\\timebar.png"
blackbar = "q:\\tvguide\\blackbar.png"
titlebox = "q:\\tvguide\\titlebox.png"
descbox = "q:\\tvguide\\descbox.png"
# PATH TO LISTING XML FILE
listing = "q:\\tvguide\\listing.xml"
# THE DATA LISTING
chanList = []
showList = {}
# THE CONTROL ID'S
theChans = []
theShows = []
theInfos = []
class CListing:
def GetFile(self):
ip = "192.168.0.2" #MODIFY IP FOR YOUR NEEDS
port = "21" #MODIFY PORT FOR YOUR NEEDS
username = "xbox" #MODIFY USERNAME FOR YOUR NEEDS
password = "tvguide" #MODIFY PASSWORD FOR YOUR NEEDS
try:
fsize = getsize(listing)
except:
fsize = 0
upload = "yes"
try:
ftp = FTP()
ftp.connect(ip, port)
ftp.login(username,password)
files = []
ftp.dir(".",files.append)
for file in files:
temp = string.split(file, None, 8)
xml = string.lower(temp[8])
if(xml == 'listing.xml'):
if(int(fsize) == int(temp[4])):
upload = "no"
if(upload == "yes"):
print "upload"
ftp.retrbinary('RETR listing.XML', open(listing, 'wb').write)
ftp.quit()
except:
print "Failed to FTP listing.xml"
try:
file = open(listing,"r")
data = file.read()
file.close()
return data
except:
print "Failed to Open listing.xml"
return ""
def ProcessXML(self):
listing = self.GetFile()
channels = split(listing, '<channel ')
shows = split(listing, '<programme ')
# STORE CHANNEL LIST
no_first = 1
for channel in channels:
if no_first != 1:
self.ParseXML(channel, 'id')
no_first = 0
# STORE SHOW LIST
no_first = 1
for show in shows:
if no_first != 1:
self.ParseXML(show, 'start')
no_first = 0
def ParseXML(self, line, tag):
if(tag == "id"):
self.id = 0
self.display = ""
channels = search('' + tag + '=".*</channel>', line, DOTALL)
try:
if channels.group(0):
id = search('' + tag + '="(.*?)"',channels.group(0))
try:
if id.group(1):
self.id = id.group(1)
except:
self.id = ""
display = search('<display-name>(.*?)</display-name>',channels.group(0))
try:
if display.group(1):
self.display = display.group(1)
except:
self.display = "display error"
showList[self.id] = {}
chanList.append([self.id,self.display])
except:
return ""
if(tag == "start"):
self.starttime = 0
self.endtime = 0
self.id = ""
self.title = ""
self.desc_buffer = ""
self.duration = 0
starttime = search('start="(.*?)"', line)
try:
if starttime.group(1):
self.starttime = starttime.group(1)
except:
self.starttime = ""
channel = search('channel="(.*?)"', line)
try:
if channel.group(1):
self.id = channel.group(1)
except:
self.id = ""
endtime = search('stop="(.*?)"', line)
try:
if endtime.group(1):
self.endtime = endtime.group(1)
except:
self.endtime = ""
self.duration = self.CalculateDuration(self.starttime, self.endtime)
title = search('<title.*?>(.*?)</title>', line)
try:
if title.group(1):
self.title = title.group(1)
except:
self.title = "title error"
# sub = ""
# subtitle = search('<title>(.*?)</title>', line)
# try:
# if subtitle.group(1):
# sub = subtitle.group(1)
# self.desc_buffer = "%s%s\n" % (self.desc_buffer, sub)
# except:
# sub = ""
desc = ""
descrip = search('<desc.*?>(.*?)</desc>', line)
try:
if descrip.group(1):
desc = descrip.group(1)
self.desc_buffer = "%s%s" % (self.desc_buffer, fill(desc,540/10))
except:
desc = ""
epnum = ""
episode = search('<episode-num.*?>(.*?)</episode-num>', line)
try:
if episode.group(1):
epnum = episode.group(1)
self.desc_buffer = "%s (%s)" % (self.desc_buffer, epnum)
except:
epnum = ""
self.title = replace(self.title,'Æ','æ')
self.title = replace(self.title,'&','&')
self.desc_buffer = replace(self.desc_buffer,'Æ','æ')
self.desc_buffer = replace(self.desc_buffer,'&','&')
showList[self.id][self.starttime] = {'title' : self.title, 'description' : self.desc_buffer, 'duration' : self.duration}
def CalculateDuration(self, starttime, endtime):
if(starttime == "" or endtime == ""):
return 60
start = search('\d\d\d\d\d\d\d\d\d\d\d\d', starttime)
end = search('\d\d\d\d\d\d\d\d\d\d\d\d', endtime)
starting = time.strptime(start.group(0),"%Y%m%d%H%M")
ending = time.strptime(end.group(0),"%Y%m%d%H%M")
secs = 0
secs = time.mktime(ending) - time.mktime(starting)
return int(secs/60.0)
class CTVTime:
showtime = 0
def __init__(self, stime):
try:
start = search('\d\d\d\d\d\d\d\d\d\d\d\d', stime)
self.showtime = time.mktime(time.strptime(start.group(0),"%Y%m%d%H %M"))
except:
self.showtime = 0
def AddHalfHour(self, amount):
self.showtime += (1800 * amount) # ADDS 30MINS PER AMOUNT
def GetTimeBar(self):
time1 = self.showtime
time2 = self.showtime + (1800 * 1)
time3 = self.showtime + (1800 * 2)
asctime1 = time.asctime(time.localtime(time1))
asctime2 = time.asctime(time.localtime(time2))
asctime3 = time.asctime(time.localtime(time3))
timetitle1 = search('(\w+)\s(\w+)\s(\d+)\s(\d+:\d+)', asctime1)
timetitle2 = search('(\d+:\d+)', asctime2)
timetitle3 = search('(\d+:\d+)', asctime3)
timetitle = timetitle1.group(1)+" "+timetitle1.group(2)+" "+timetitle1.group(3)+" "+timetitle1.group(4)+" "+timetitle2.group(1)+" "+timetitle3.group(1)
return timetitle
def RoundDownHalfHour(self):
currenttime = time.localtime(self.showtime)
if(currenttime.tm_min < 30):
leftover = currenttime.tm_min * 60 + currenttime.tm_sec # SETS TM_MIN = 00
else:
leftover = currenttime.tm_min * 60 + currenttime.tm_sec - 1800 # SETS TM_MIN = 30
self.showtime = self.showtime - leftover
def SetToSystemTime(self):
self.showtime = time.mktime(time.localtime(time.time()))
def GetCurrentTime(self):
return int(self.showtime)
class CTVGuide(xbmcgui.Window):
def __init__(self):
self.processXML = CListing()
self.processXML.ProcessXML()
del self.processXML
self.currentTime = CTVTime(0)
self.currentTime.SetToSystemTime()
self.currentTime.RoundDownHalfHour()
screenx = self.getWidth()
screeny = self.getHeight()
# THE CHANNEL NUMBER
self.channum = 0
self.sortedchanList = []
for id, display in chanList:
self.sortedchanList.append(display)
if (sorted == "true"):
self.sortedchanList.sort()
# CONTROLS
self.theXOffset = 35
self.theYOffset= 55
self.font = 'font14'
self.fontcolor = '0xFFFFFFFF'
self.addControl(xbmcgui.ControlImage(0,0,screenx,s creeny, background))
self.addControl(xbmcgui.ControlImage(self.theXOffs et,25,125+(180*3),30,timebar))
self.strCaptionWday = xbmcgui.ControlLabel(self.theXOffset+3, 25+3, 200, 200, '', self.font, self.fontcolor )
self.strCaptionMon = xbmcgui.ControlLabel(self.theXOffset+3+40, 25+3, 200, 200, '', self.font, self.fontcolor )
self.strCaptionDay = xbmcgui.ControlLabel(self.theXOffset+3+40+40, 25+3, 200, 200, '', self.font, self.fontcolor )
self.strCaptionTime1 = xbmcgui.ControlLabel(self.theXOffset+3+125, 25+3, 200, 200, '', self.font, self.fontcolor )
self.strCaptionTime2 = xbmcgui.ControlLabel(self.theXOffset+3+125+180, 25+3, 200, 200, '', self.font, self.fontcolor )
self.strCaptionTime3 = xbmcgui.ControlLabel(self.theXOffset+3+125+180+180 , 25+3, 200, 200, '', self.font, self.fontcolor )
self.addControl(self.strCaptionWday)
self.addControl(self.strCaptionMon)
self.addControl(self.strCaptionDay)
self.addControl(self.strCaptionTime1)
self.addControl(self.strCaptionTime2)
self.addControl(self.strCaptionTime3)
# OTHER CONTROLS / LABELS
self.UpdateTimeTitle()
self.CreateChannels()
self.CreateShows()
def UpdateTimeTitle(self):
current = self.currentTime.GetTimeBar()
title = search('(\w+)\s(\w+)\s(\d+)\s(\d+:\d+)\s(\d+:\d+)\ s(\d+:\d+)', current)
self.strCaptionWday.setLabel(title.group(1))
self.strCaptionMon.setLabel(title.group(2))
self.strCaptionDay.setLabel(title.group(3))
self.strCaptionTime1.setLabel(title.group(4))
self.strCaptionTime2.setLabel(title.group(5))
self.strCaptionTime3.setLabel(title.group(6))
def CreateChannels(self):
self.ClearChannels()
y = self.theYOffset
print self.sortedchanList
for display in self.sortedchanList[0+self.channum:10+self.channum]:
theChans.append(xbmcgui.ControlImage(self.theXOffs et, y, 125, 50, titlebox))
theChans.append(xbmcgui.ControlLabel(self.theXOffs et+3, y+2, 125, 60, fill(display,125/10), self.font, self.fontcolor ))
y += 50
for theChan in theChans:
self.addControl(theChan)
def CreateShows(self):
self.ClearShows()
starttime = self.currentTime.GetCurrentTime()
endtime = starttime + (1800*3)
y = self.theYOffset
for display1 in self.sortedchanList[0+self.channum:10+self.channum]:
for channel, display2 in chanList:
if (display1 == display2):
xoffset = 160
showtimes = showList[channel].keys()
showtimes.sort()
for show in showtimes:
showstr = search('(\d\d\d\d\d\d\d\d\d\d\d\d)', show)
times = int(time.mktime(time.strptime(showstr.group(0),"%Y %m%d%H%M")))
if(times > endtime):
break
elif(times < starttime and times+(int(showList[channel][show]['duration'])*60) > starttime and times+(int(showList[channel][show]['duration'])*60) <= endtime):
total = ((((times+int(showList[channel][show]['duration'])*60-starttime)/60)*6)/10)
if (total < 1):
total = 1
title = fill(showList[channel][show]['title'],total)
title = title.split("\n")[0:2]
title = "\n".join(title)
theShows.append(xbmcgui.ControlImage((xoffset+((st arttime-starttime)/60)*6), y, ((times+int(showList[channel][show]['duration'])*60-starttime)/60)*6, 50, titlebox))
theShows.append(xbmcgui.ControlImage((xoffset+((st arttime-starttime)/60)*6)-2, y, 2, 50, blackbar))
theShows.append(xbmcgui.ControlImage((xoffset+((st arttime-starttime)/60)*6)+(((times+int(showList[channel][show]['duration'])*60-starttime)/60)*6)-2, y, 2, 50, blackbar))
theShows.append(xbmcgui.ControlLabel((xoffset+((st arttime-starttime)/60)*6)+3, y+2, 1, 60, title, self.font, self.fontcolor))
elif(times >= starttime and times+(int(showList[channel][show]['duration'])*60) <= endtime):
total = (((showList[channel][show]['duration'])*6)/10)
if (total < 1):
total = 1
title = fill(showList[channel][show]['title'],total)
title = title.split("\n")[0:2]
title = "\n".join(title)
theShows.append(xbmcgui.ControlImage((xoffset+((ti mes-starttime)/60)*6), y, (showList[channel][show]['duration'])*6, 50, titlebox))
theShows.append(xbmcgui.ControlImage((xoffset+((ti mes-starttime)/60)*6)-2, y, 2, 50, blackbar))
theShows.append(xbmcgui.ControlImage((xoffset+((ti mes-starttime)/60)*6)+((showList[channel][show]['duration'])*6)-2, y, 2, 50, blackbar))
theShows.append(xbmcgui.ControlLabel((xoffset+((ti mes-starttime)/60)*6)+3, y+2, 1, 60, title, self.font, self.fontcolor))
elif(times < endtime and times+(int(showList[channel][show]['duration'])*60) > endtime and times >= starttime):
total = ((((endtime-times)/60)*6)/10)
if (total < 1):
total = 1
title = fill(showList[channel][show]['title'],total)
title = title.split("\n")[0:2]
title = "\n".join(title)
theShows.append(xbmcgui.ControlImage((xoffset+((ti mes-starttime)/60)*6), y, ((endtime-times)/60)*6, 50, titlebox))
theShows.append(xbmcgui.ControlImage((xoffset+((ti mes-starttime)/60)*6)-2, y, 2, 50, blackbar))
theShows.append(xbmcgui.ControlImage((xoffset+((en dtime-starttime)/60)*6)-2, y, 2, 50, blackbar))
theShows.append(xbmcgui.ControlLabel((xoffset+((ti mes-starttime)/60)*6)+3, y+2, 1, 60, title, self.font, self.fontcolor))
break
elif(times < starttime and times+(int(showList[channel][show]['duration'])*60) > endtime):
total = ((((endtime-starttime)/60)*6)/10)
if (total < 1):
total = 1
title = fill(showList[channel][show]['title'],total)
title = title.split("\n")[0:2]
title = "\n".join(title)
theShows.append(xbmcgui.ControlImage((xoffset+((st arttime-starttime)/60)*6), y, ((endtime-starttime)/60)*6, 50, titlebox))
theShows.append(xbmcgui.ControlImage((xoffset+((st arttime-starttime)/60)*6)-2, y, 2, 50, blackbar))
theShows.append(xbmcgui.ControlImage((xoffset+((en dtime-starttime)/60)*6)-2, y, 2, 50, blackbar))
theShows.append(xbmcgui.ControlLabel((xoffset+((st arttime-starttime)/60)*6)+3, y+2, 1, 60, title, self.font, self.fontcolor))
break
else:
continue
y += 50
for theShow in theShows:
self.addControl(theShow)
def CreateInfo(self):
y = self.theYOffset
xoffset = 160
curtime = self.currentTime.GetCurrentTime()
for channel, display in chanList:
if (display == self.sortedchanList[self.channum]):
showtimes = showList[channel].keys()
showtimes.sort()
for show in showtimes:
showstr = search('(\d\d\d\d\d\d\d\d\d\d\d\d)', show)
times = int(time.mktime(time.strptime(showstr.group(0),"%Y %m%d%H%M")))
if(curtime >= times and curtime < times+(int(showList[channel][show]['duration'])*60)):
start = time.asctime(time.localtime(times))
times = times+(int(showList[channel][show]['duration'])*60)
end = time.asctime(time.localtime(times))
start = search('(\d+:\d+)', start)
end = search('(\d+:\d+)', end)
description = showList[channel][show]['description']
description = description.split("\n")[0:17]
description = "\n".join(description)
info = "%s\n%s - %s (%s min)\n%s" % (showList[channel][show]['title'], start.group(1), end.group(1), showList[channel][show]['duration'], description)
theInfos.append(xbmcgui.ControlImage(xoffset, y+50, 540, 450, descbox))
theInfos.append(xbmcgui.ControlImage(xoffset, y+50, 540, 450, descbox))
theInfos.append(xbmcgui.ControlImage(xoffset, y+50, 540, 450, descbox))
theInfos.append(xbmcgui.ControlImage(xoffset, y+50, 540, 450, descbox))
theInfos.append(xbmcgui.ControlLabel(xoffset+3, y+50+2, 540, 450, info, self.font, self.fontcolor ))
for theInfo in theInfos:
self.addControl(theInfo)
def ClearChannels(self):
for theChan in theChans:
self.removeControl(theChan)
while(len(theChans) != 0):
theChans.pop()
def ClearShows(self):
for theShow in theShows:
self.removeControl(theShow)
while(len(theShows) != 0):
theShows.pop()
def ClearInfos(self):
for theInfo in theInfos:
self.removeControl(theInfo)
while(len(theInfos) != 0):
theInfos.pop()
def onAction(self, action):
if action == ACTION_PREVIOUS_MENU:
self.close()
if action == ACTION_MOVE_LEFT:
xbmcgui.lock()
try:
self.ClearInfos()
except:
pass
try:
self.currentTime.AddHalfHour(-1)
self.UpdateTimeTitle()
self.CreateShows()
except:
pass
xbmcgui.unlock()
if action == ACTION_MOVE_RIGHT:
xbmcgui.lock()
try:
self.ClearInfos()
except:
pass
try:
self.currentTime.AddHalfHour(1)
self.UpdateTimeTitle()
self.CreateShows()
except:
pass
xbmcgui.unlock()
if action == ACTION_MOVE_UP:
xbmcgui.lock()
try:
self.ClearInfos()
except:
pass
try:
if self.channum > 0 and self.channum <= len(chanList)-1:
self.channum = self.channum - 1
self.CreateChannels()
self.CreateShows()
except:
pass
xbmcgui.unlock()
if action == ACTION_MOVE_DOWN:
xbmcgui.lock()
try:
self.ClearInfos()
except:
pass
try:
if self.channum >= 0 and self.channum < len(chanList)-1:
self.channum = self.channum + 1
self.CreateChannels()
self.CreateShows()
except:
pass
xbmcgui.unlock()
if action == ACTION_SELECT_ITEM:
xbmcgui.lock()
try:
self.CreateInfo()
except:
try:
self.ClearInfos()
except:
pass
xbmcgui.unlock()
if action == ACTION_PARENT_DIRECTORY:
xbmcgui.lock()
try:
self.ClearInfos()
except:
pass
try:
self.currentTime.SetToSystemTime()
self.currentTime.RoundDownHalfHour()
self.UpdateTimeTitle()
self.CreateShows()
except:
pass
xbmcgui.unlock()
# MAIN PROGRAM START HERE
tvguide = CTVGuide()
tvguide.doModal()
del tvguide
"Är nybörjare på detta" =(
Ta bort allt mellanochCitat:
def GetFile(self):
din py fil borde börja medCitat:
try:
file = open(listing,"r")
sen. Tänk på att det är VIKTIGT att behålla alla tabbar och mellanslag i python språket...Citat:
# Python XMLTV "listing.xml" TVGuide script by cruent 2004
# Version update 0.2: Added FTP support and sorted channels
import time, xbmcgui, xbmc
from re import search, DOTALL
from ftplib import FTP
from string import split, replace
from textwrap import fill
from os.path import getsize
# WANT SORTED CHANNELS
sorted = "false"
# GET ACTIONCODES FROM KEYMAP.XML
ACTION_MOVE_LEFT = 1
ACTION_MOVE_RIGHT = 2
ACTION_MOVE_UP = 3
ACTION_MOVE_DOWN = 4
ACTION_SELECT_ITEM = 7
ACTION_PARENT_DIRECTORY = 9
ACTION_PREVIOUS_MENU = 10
# THE PATH TO IMAGES
background = "q:\\tvguide\\background.png"
timebar = "q:\\tvguide\\timebar.png"
blackbar = "q:\\tvguide\\blackbar.png"
titlebox = "q:\\tvguide\\titlebox.png"
descbox = "q:\\tvguide\\descbox.png"
# PATH TO LISTING XML FILE
listing = "q:\\tvguide\\listing.xml"
# THE DATA LISTING
chanList = []
showList = {}
# THE CONTROL ID'S
theChans = []
theShows = []
theInfos = []
class CListing:
def GetFile(self):
try:
file = open(listing,"r")
data = file.read()
jag har också ett problem. tvguiden funkar men jag kan inte hämta listing från min dator. så här ser min listing.xml.py ut
vet inte riktigt vad jag ska skriva i adres och det. snälla hjälp.Citat:
# I took this script from XBMC´s example and modifyed it to suit me...
#
# Remember to change all 4 lines where I wrote "# Change" after!
#
# //ktd
adres = '192.168.0.1' # Change
remotedir = 'c:\o2grabber\' # Change
remotefile = 'listing.xml'
localfile = 'Q:\\tvguide\\listing.xml'
username = 'Macke' # Change
userpass = 'NLRAW' # Change
import sys, socket, xbmc, xbmcgui
from ftplib import FTP
class writer:
def __init__(self):
self.size = 0
self.copied = 0;
def write(self, data):
f.write(data)
self.copied = self.copied + len(data)
dialog.update((self.copied * 100)/ self.size)
pwriter = writer()
dialog = xbmcgui.DialogProgress()
ftp = FTP(adres) # connect to host, default port
ftp.login(username,userpass) # default, i.e.: user anonymous, passwd user@hostname
ftp.cwd(remotedir)
pwriter.size = ftp.size(remotefile)
f = open(localfile, "wb")
dialog.create("downloading", remotefile)
ftp.retrbinary('RETR ' + remotefile, pwriter.write, 8192)
f.close()
dialog.close()
ftp.quit()
//macke
Ktd??
Kan du adda mig på ICQnr: "847586"
Får det inte till att fungera....
Macke
Har du tid o hjälpa mig ??
kan försöka. vad vill du ha hjälp med?
Skämtar du? I pyfilen har jag ju skrivit # Remember to change all 4 lines where I wrote "# Change" after!Citat:
Original inlägg av mackeswissman
På alla rader som har # Change ska du ändra så det passar dig & ditt nätverk...
ktd
Kunde du adda mig på Icq ???
Om du har tid att hjälpa mig...
När jag startar scriptet så blinkar running till o sen händer ingenting.....
=(
Har du tagit bort raderna i början på tv.guide.py som man ska? Kolla inlägg 35 i den här tråden...
så dum e jag inte ( även om det verkar så ). Men jag hgar skrivit in min ipadress och lösen till ftpservern men när jag använder scriptet så står det en massa skit som tex socket error. E kanske inte så lätt o fatta, så hur tar man screenshoots i xmbc och var hamnar dom?
//macke
Lättast att se vart felet ligger är ju att kolla loggen i din ftpserver!!!
har kollat den men förstår inte den.
Citat:
-->Python Initialized<--
sys:1:DeprecationWarning: Non-ASCII character ´\xb4´in file
Q:\scripts\listing.xml.py on line 1.but no encoding declared;see
http://www.python.org/peps/pep-0263.html. for details
Traceback (most recent call last):
File "Q:\scripts\listing.xml.py", line 34 in ?
ftp.cwd(remotedir)
File Q:\python\python23.zlib\ftplib.py, line 494, in cwd
File Q:\python\python23.zlib\ftplib.py, line 246, in voidcmd
File Q:\python\python23.zlib\ftplib.py, line 221, voidresp
File Q:\python\python23.zlib\ftplib.py, line 214, in getresp
ftplib.error perm:550 "/c:/o2grabber": No such directory
Ser du felet?
har ändrat directoryt till o2grabber så nu står invalid syntax.
fattar noll.
Inte där! Logfilen på din ftpserver på datorn!!!!!!!!!!!
det står att jag loggat in men att /c:/o2grabber inte är ett direktiv.
Logga in på din egen ftp och kolla sökvägen till listing.xml...
har gjort det och så hät står det:
fattar inte vad som e fel. i xbmc står det invalid syntax när jag försöker.Citat:
21:11:32 : 192.168.0.2 [18] > new user connected
21:11:32 : 192.168.0.2 [18] > USER Macke
21:11:32 : 192.168.0.2 [18] > 331 Password required for Macke.
21:11:32 Macke: 192.168.0.2 [18] > user Macke logging in
21:11:32 Macke: 192.168.0.2 [18] > TYPE A
21:11:32 Macke: 192.168.0.2 [18] > 200 Type set to A.
21:11:32 Macke: 192.168.0.2 [18] > PASV
21:11:33 Macke: 192.168.0.2 [18] > 227 Entering Passive Mode (192,168,0,1,0,3).
21:11:33 Macke: 192.168.0.2 [18] > LIST .
21:11:33 Macke: 192.168.0.2 [18] > 150 Opening data connection for file list of "/."
21:11:33 Macke: 192.168.0.2 [18] > 226 Transfer complete.
21:11:33 Macke: 192.168.0.2 [18] > user disconnected
min ftp server funkar kanon så det måste vara fel på xbmc.
skumt.