rendered paste bodyimport xml.dom.minidomimport urllib, urllib2, re, os, sys, ntimport cachedhttpimport xbmc, xbmcguifrom string import split, replace, findfrom ConfigParser import ConfigParser, SafeConfigParserfrom StringIO import StringIOtry: Emulating = xbmcgui.Emulatingexcept: Emulating = FalseACTION_PREVIOUS_MENU = 10Title = "NZBsRus.com"# leave these just in caseglobal httpFetcherglobal curPageglobal catcurPage = 0cat = 38# NZBsRus.com Login InformationNZB_User = ""NZB_Pass = ""# FTP Server Login InformationFTP_Host = ""FTP_Port = ""FTP_User = ""FTP_Pass = ""FTP_Path = ""Login = "\"Log in!\""""" The Website's main browsing url. In most cases this link should end with page= """nzbURL = "http://www.nzbsrus.com/browse.php?cat="""" Set your scripts root directory, and other required variables, below: """# If you are running this script on your Xbox, use:NZB_Path = sys.path[0]+'\\'# Root = "Q:\\scripts\\NZBsRus\\Images\\"Downloads = "Q:\\scripts\\NZBsRus\\Downloads\\"#Root = "Q:\\scripts\\NZBsRus\\Images\\"#Downloads = "Q:\\scripts\\NZBsRus\\Downloads\\"# If you are Emulating this script on your PC, Use:# Root = "/Images"# Downloads = "/Downloads"""" Pre-define your global Variables """global NZB_IDglobal NZB_Titleglobal NZB_Sizeglobal NZB_AddedNZB_ID = []NZB_Title = []NZB_Size = []NZB_Added = []button_normal="button-nofocus.png"button_hl="button-focus.png"lcf="iconlist-nofocus.png"lcnf="iconlist-focus.png"fc = "0xFFFFFFFF"cat_tiles= {}cat_id={}cat_tiles['Consoles'] = ['Xbox','Xbox 360','PlayStation 2','PlayStation 3','Psp','Misc Console']cat_id['Consoles'] = [38,11,37,12,10,46]cat_tiles['Movies'] = ['DVDR','VCD/SVCD','XViD','HDTV']cat_id['Movies'] = [22,47,40,7]cat_tiles['TV'] = ['DVDR','VCD/SVCD','XViD']cat_id['TV'] = [8,9,43]cat_tiles['Music'] = ['Albums','Singles','Videos']cat_id['Music'] = [5,41,6]cat_tiles['PC'] = ['Apps - 0-Day','Apps - ISO','Apps - Other','Games - PC','Games - DOX']cat_id['PC'] = [1,23,33,35,3]cat_tiles['Other'] = ['Macintosh','Handhelds','Emulators']cat_id['Other'] = [48,21,2]cat_tiles['Misc'] = ['Books','Anime','Miscellaneous']cat_id['Misc'] = [50,32,45]cat_tiles['Settings'] = ['Default','FTP','SMB','Misc']cat_id['Misc'] = ['','','','']def SetupButtons(self,x,y,w,h,a="Vert",f="button-focus.png",nf="button-nofocus.png",gap=0,txtOffSet=0,font='font13'): self.numbut = 0 self.butx = x self.buty = y self.butwidth = w self.butheight = h self.butalign = a self.butfocus_img = f self.butnofocus_img = nf self.gap = gap self.txtOffSet = txtOffSet self.font=fontdef AddButton(self,text): if self.butalign == "Hori": c = xbmcgui.ControlButton(self.butx + (self.numbut * self.butwidth + self.gap * self.numbut),self.buty,self.butwidth,self.butheight,text,self.butfocus_img,self.butnofocus_img,textColor=fc) self.addControl(c) elif self.butalign == "Vert": c = xbmcgui.ControlButton(self.butx ,self.buty + (self.numbut * self.butheight + self.gap* self.numbut) ,self.butwidth,self.butheight,text,self.butfocus_img,self.butnofocus_img,textColor=fc) self.addControl(c) self.numbut += 1 return cclass Settings_Main(xbmcgui.Window): def __init__(self): if Emulating: xbmcgui.Window.__init__(self) """ Define your sript's Window size here: """ self.scaleX = ( float(self.getWidth()) / float(720) ) self.scaleY = ( float(self.getHeight()) / float(576) ) """ Add your GUI images to your script here: """ self.addControl(xbmcgui.ControlImage(0,0,720,480,"Background.png")) # self.addControl(xbmcgui.ControlImage(0,0,247,70, sys.path[0]+'\\' + "Logo.png")) """ Create your Menu buttons here: """ SetupButtons(self, int(50 * self.scaleX),int(120 * self.scaleY), int(150 * self.scaleX), int(33 * self.scaleY), "Vert", button_hl,button_normal, 2,37) self.Defaultbtn = AddButton(self,'Default') self.FTPbtn = AddButton(self,'FTP') self.SMBbtn = AddButton(self,'SMB') self.Miscbtn = AddButton(self,'Misc.') """ Create a Status Label for use in your script: """ self.lblStatus = xbmcgui.ControlFadeLabel(int(215 * self.scaleX),int(128 * self.scaleY), int(500 * self.scaleX), int(90 * self.scaleY), "font12", "0xFFFFFFFF") self.addControl(self.lblStatus) """ Add your GUI items """ """ Setup your GUI Navigation """ self.Defaultbtn.controlUp(self.Miscbtn) self.Defaultbtn.controlDown(self.FTPbtn) # self.Defaultbtn.controlLeft(self.nzbList) # self.Defaultbtn.controlRight(self.nzbList) self.FTPbtn.controlUp(self.Defaultbtn) self.FTPbtn.controlDown(self.SMBbtn) # self.FTPbtn.controlLeft(self.nzbList) # self.FTPbtn.controlRight(self.nzbList) self.SMBbtn.controlUp(self.FTPbtn) self.SMBbtn.controlDown(self.Miscbtn) # self.SMBbtn.controlLeft(self.nzbList) # self.SMBbtn.controlRight(self.nzbList) self.Miscbtn.controlUp(self.SMBbtn) self.Miscbtn.controlDown(self.Defaultbtn) # self.Miscbtn.controlLeft(self.nzbList) # self.Miscbtn.controlRight(self.nzbList) self.setFocus(self.Defaultbtn) """ The below section is where you define your GUI items' Actions when executed """ def onAction(self, action): if action == ACTION_PREVIOUS_MENU: self.close() def onControl(self, control): global curPage global cater if control == self.Defaultbtn: cater = "Default" unps = Settings_Default() unps .doModal() del unps if control == self.FTPbtn: cater = "FTP" unps = Settings_FTP() unps .doModal() del unps if control == self.SMBbtn: cater = "SMB" unps = Settings_Default() unps .doModal() del unps if control == self.Miscbtn: cater = "Misc" unps = Settings_Default() unps .doModal() del unpsclass Settings_Default(xbmcgui.WindowDialog): """ Set your Username and Passowrd here """ def __init__(self): if Emulating: xbmcgui.WindowDialog.__init__(self) #try: self.addControl(xbmcgui.ControlImage(0,0,0,0, 'background.png')) sw = int(self.getWidth()) sh = int(self.getHeight()) posleft_bg = (sw /2 - 512 / 2) + 60 posttop = (sh /2 - 300 / 2) + 25 # self.addControl(xbmcgui.ControlLabel(int(205 * self.scaleX),int(133 * self.scaleY), int(500 * self.scaleX), int(90 * self.scaleY), "NZBsRus.com - Login Settings" "font12", "0xFFFFFFFF") self.addControl(xbmcgui.ControlLabel(posleft_bg + 55 , posttop + 15 + 10, 400, 30, 'NZBsRus.com - Login Settings', "special13")) self.addControl(xbmcgui.ControlLabel(posleft_bg + 55 , posttop + 50 + 10, 400, 30, 'Enter Username & Password', "font12")) self.nzbUserlbl = xbmcgui.ControlLabel(posleft_bg + 170 , posttop + 93 + 10, 400, 30, NZB_User) self.nzbPasslbl = xbmcgui.ControlLabel(posleft_bg + 170 , posttop + 128 + 10, 400, 30, NZB_Pass) self.nzbUserbtn = xbmcgui.ControlButton(posleft_bg + 55 , posttop + 90 + 10, 100, 30, "Username: ") self.nzbPassbtn = xbmcgui.ControlButton(posleft_bg + 55 , posttop + 125 + 10, 100, 30, "Password: ") self.nzbSavebtn= xbmcgui.ControlButton(sw/2 - 50 / 2 , posttop + 190, 60, 30, "Save") #Add controls self.addControl(self.nzbPasslbl) self.addControl(self.nzbUserlbl) self.addControl(self.nzbUserbtn) self.addControl(self.nzbPassbtn) self.addControl(self.nzbSavebtn) #Setting Navigation up :P self.nzbUserbtn.controlDown(self.nzbPassbtn) self.nzbPassbtn.controlDown(self.nzbSavebtn) self.nzbSavebtn.controlDown(self.nzbUserbtn) self.nzbUserbtn.controlUp(self.nzbSavebtn) self.nzbPassbtn.controlUp(self.nzbUserbtn) self.nzbSavebtn.controlUp(self.nzbPassbtn) self.setFocus(self.nzbUserbtn) def onAction(self, action): if action == ACTION_PREVIOUS_MENU: self.close() def onControl(self, control): if control == self.nzbSavebtn: self.nzbSaveInfo() if control == self.nzbUserbtn: global NZB_User temp = self.unikeyboard(NZB_User) if temp != "": NZB_User = temp self.nzbUserlbl.setLabel(NZB_User) else: dialog = xbmcgui.Dialog().ok(Title,"Username was not changed, you left it blank") if control == self.nzbPassbtn: global NZB_Pass temp = self.unikeyboard(NZB_Pass) if temp != "": NZB_Pass = temp self.nzbPasslbl.setLabel(NZB_Pass) else: dialog = xbmcgui.Dialog().ok(Title,"Password was not changed, you left it blank") def nzbSaveInfo(self): Brk = os.linesep curfile=file(sys.path[0]+'\\' + "Cache\\Settings.ini",'wb') curfile.write("[NZB]" + Brk + "Username=" + NZB_User + Brk + "Password=str" + NZB_Pass) curfile.close() dialog = xbmcgui.Dialog().ok(Title,"Settings Saved") self.close() def unikeyboard(self, default): # Open the Virutal Keyboard. keyboard = xbmc.Keyboard(default) keyboard.doModal() if (keyboard.isConfirmed()): return keyboard.getText() else: return defaultclass Settings_FTP(xbmcgui.WindowDialog): """ Set your Username and Passowrd here """ def __init__(self): if Emulating: xbmcgui.WindowDialog.__init__(self) #try: self.addControl(xbmcgui.ControlImage(0,0,0,0, 'background.png')) sw = int(self.getWidth()) sh = int(self.getHeight()) posleft_bg = (sw /2 - 512 / 2) + 60 posttop = (sh /2 - 300 / 2) + 25 # self.addControl(xbmcgui.ControlLabel(int(205 * self.scaleX),int(133 * self.scaleY), int(500 * self.scaleX), int(90 * self.scaleY), "NZBsRus.com - Login Settings" "font12", "0xFFFFFFFF") self.addControl(xbmcgui.ControlLabel(posleft_bg + 55 , posttop + 15 + 10, 400, 30, 'NZBsRus.com - Login Settings', "special13")) self.addControl(xbmcgui.ControlLabel(posleft_bg + 55 , posttop + 50 + 10, 400, 30, 'Enter Username & Password', "font12")) self.FTPHostlbl = xbmcgui.ControlLabel(posleft_bg + 170 , posttop + 93 + 10, 400, 30, FTP_Host) self.FTPPortlbl = xbmcgui.ControlLabel(posleft_bg + 170 , posttop + 128 + 10, 400, 30, FTP_Port) self.FTPUserlbl = xbmcgui.ControlLabel(posleft_bg + 170 , posttop + 163 + 10, 400, 30, FTP_User) self.FTPPasslbl = xbmcgui.ControlLabel(posleft_bg + 170 , posttop + 198 + 10, 400, 30, FTP_Pass) self.FTPPathlbl = xbmcgui.ControlLabel(posleft_bg + 170 , posttop + 233 + 10, 400, 30, FTP_Path) self.FTPHostbtn = xbmcgui.ControlButton(posleft_bg + 55 , posttop + 90 + 10, 100, 30, "Host: ") self.FTPPortbtn = xbmcgui.ControlButton(posleft_bg + 55 , posttop + 125 + 10, 100, 30, "Port: ") self.FTPUserbtn = xbmcgui.ControlButton(posleft_bg + 55 , posttop + 160 + 10, 100, 30, "Username: ") self.FTPPassbtn = xbmcgui.ControlButton(posleft_bg + 55 , posttop + 195 + 10, 100, 30, "Password: ") self.FTPPathbtn = xbmcgui.ControlButton(posleft_bg + 55 , posttop + 230 + 10, 100, 30, "Path: ") self.FTPSavebtn= xbmcgui.ControlButton(sw/2 - 50 / 2 , posttop + 190, 60, 30, "Save") #Add controls self.addControl(self.FTPHostlbl) self.addControl(self.FTPPortlbl) self.addControl(self.FTPUserlbl) self.addControl(self.FTPPasslbl) self.addControl(self.FTPPathlbl) self.addControl(self.FTPHostbtn) self.addControl(self.FTPPortbtn) self.addControl(self.FTPUserbtn) self.addControl(self.FTPPassbtn) self.addControl(self.FTPPathbtn) self.addControl(self.FTPSavebtn) #Setting Navigation up :P self.FTPHostbtn.controlDown(self.FTPPortbtn) self.FTPPortbtn.controlDown(self.FTPUserbtn) self.FTPUserbtn.controlDown(self.FTPPassbtn) self.FTPPassbtn.controlDown(self.FTPPathbtn) self.FTPPathbtn.controlDown(self.FTPSavebtn) self.FTPSavebtn.controlDown(self.FTPHostbtn) self.FTPHostbtn.controlUp(self.FTPSavebtn) self.FTPPortbtn.controlUp(self.FTPHostbtn) self.FTPUserbtn.controlUp(self.FTPPortbtn) self.FTPPassbtn.controlUp(self.FTPUserbtn) self.FTPPathbtn.controlUp(self.FTPPassbtn) self.FTPSavebtn.controlUp(self.FTPPathbtn) self.setFocus(self.FTPHostbtn) def onAction(self, action): if action == ACTION_PREVIOUS_MENU: self.close() def onControl(self, control): if control == self.FTPSavebtn: self.FTPSaveInfo() if control == self.FTPHostbtn: global FTP_Host temp = self.unikeyboard(FTP_Host) if temp != "": FTP_Host = temp self.FTPHostlbl.setLabel(FTP_Host) else: dialog = xbmcgui.Dialog().ok(Title,"Host IP Address was not changed, you left it blank") if control == self.FTPPortbtn: global FTP_Port temp = self.unikeyboard(FTP_Port) if temp != "": FTP_Port = temp self.FTPPortlbl.setLabel(FTP_Port) else: dialog = xbmcgui.Dialog().ok(Title,"Host Port was not changed, you left it blank") if control == self.FTPUserbtn: global FTP_User temp = self.unikeyboard(FTP_User) if temp != "": FTP_User = temp self.FTPUserlbl.setLabel(FTP_User) else: dialog = xbmcgui.Dialog().ok(Title,"Username was not changed, you left it blank") if control == self.FTPPassbtn: global FTP_Pass temp = self.unikeyboard(FTP_Pass) if temp != "": FTP_Pass = temp self.FTPPasslbl.setLabel(FTP_Pass) else: dialog = xbmcgui.Dialog().ok(Title,"Password was not changed, you left it blank") if control == self.FTPPathbtn: global FTP_Path temp = self.unikeyboard(FTP_Path) if temp != "": FTP_Path = temp self.FTPPathlbl.setLabel(FTP_Path) else: dialog = xbmcgui.Dialog().ok(Title,"Remote Path was left blank") def FTPSaveInfo(self): Brk = os.linesep curfile=file(sys.path[0]+'\\' + "Cache\\Settings.ini",'ab') curfile.write(Brk + "[FTP]" + Brk + "Host=" + FTP_Host + Brk + "Port=" + FTP_Port + Brk + "Username=" + FTP_User + Brk + "Password=" + FTP_Pass + Brk + "Path=" + FTP_Path) curfile.close() dialog = xbmcgui.Dialog().ok(Title,"FTP Settings Saved") self.close() def unikeyboard(self, default): # Open the Virutal Keyboard. keyboard = xbmc.Keyboard(default) keyboard.doModal() if (keyboard.isConfirmed()): return keyboard.getText() else: return defaultclass NZB_Sub(xbmcgui.Window): def __init__(self): if Emulating: xbmcgui.Window.__init__(self) #cater = "console" """ Define your sript's Window size here: """ self.scaleX = ( float(self.getWidth()) / float(720) ) self.scaleY = ( float(self.getHeight()) / float(576) ) """ Add your GUI images to your script here: """ self.addControl(xbmcgui.ControlImage(0,0,720,480,"Background.png")) """ Create your "Page Toggle" buttons here: """ self.refreshbtn = xbmcgui.ControlButton(int(580 * self.scaleX),int(20 * self.scaleY), int(100 * self.scaleX), int(40 * self.scaleY), "Refresh") self.ffbtn = xbmcgui.ControlButton(int(580 * self.scaleX),int(62 * self.scaleY), int(100 * self.scaleX), int(40 * self.scaleY), "Next Page") self.rewbtn = xbmcgui.ControlButton(int(580 * self.scaleX),int(104 * self.scaleY), int(100 * self.scaleX), int(40 * self.scaleY), "Prev Page") self.nzbList = xbmcgui.ControlList(int(210 * self.scaleX),int(160 * self.scaleY), int(350 * self.scaleX), int(355 * self.scaleY),itemTextXOffset=-5) self.sizeBox = xbmcgui.ControlLabel(int(580 * self.scaleX),int(160 * self.scaleY), int(120 * self.scaleX), int(40 * self.scaleY),"", "font14") self.addedBox = xbmcgui.ControlLabel(int(580 * self.scaleX),int(200 * self.scaleY), int(120 * self.scaleX), int(40 * self.scaleY),"", "font14") """ Create your Menu buttons here: """ SetupButtons(self, int(50 * self.scaleX),int(120 * self.scaleY), int(150 * self.scaleX), int(33 * self.scaleY), "Vert", button_hl,button_normal, 2,37) self.subcat = cat_tiles[cater] self.subcatid = cat_id[cater] self.btns = [] for x in range(0,len(self.subcat)): self.btns.append (AddButton(self,self.subcat[x])) self.btns[x].controlRight(self.nzbList) if x == 0: pass elif x == len(self.subcat): pass else: self.btns[x].controlUp(self.btns[x-1]) self.btns[x-1].controlDown(self.btns[x]) """ Create a Status Label for use in your script: """ self.lblStatus = xbmcgui.ControlFadeLabel(int(215 * self.scaleX),int(128 * self.scaleY), int(500 * self.scaleX), int(90 * self.scaleY), "font12", "0xFFFFFFFF") self.addControl(self.lblStatus) self.lblStatus.addLabel("NZBsRus.com - Page " + str(curPage)) """ Add your GUI items """ self.addControl(self.sizeBox) self.addControl(self.addedBox) self.addControl(self.nzbList) self.addControl(self.refreshbtn) self.addControl(self.ffbtn) self.addControl(self.rewbtn) """ Setup your GUI other Navigation """ self.setFocus(self.btns[0]) self.nzbList.controlLeft(self.btns[0]) self.nzbList.controlRight(self.refreshbtn) self.refreshbtn.controlDown(self.ffbtn) self.refreshbtn.controlRight(self.nzbList) self.refreshbtn.controlUp(self.rewbtn) self.ffbtn.controlDown(self.rewbtn) self.ffbtn.controlRight(self.nzbList) self.ffbtn.controlUp(self.refreshbtn) self.rewbtn.controlRight(self.nzbList) self.rewbtn.controlDown(self.refreshbtn) self.rewbtn.controlUp(self.ffbtn) """ The below section is where you define your GUI items' Actions when executed """ def onAction(self, action): if action == ACTION_PREVIOUS_MENU: self.close() if action == 3 or action == 4 or action == 111 or action == 112: if self.getFocus() == self.nzbList: self.sizeBox.setLabel(NZB_Size[self.nzbList.getSelectedPosition()]) self.addedBox.setLabel(NZB_Added[self.nzbList.getSelectedPosition()]) def onControl(self, control): global curPage global cat for x in range(0,len(self.btns)): if self.btns[x] == control: cat = str(self.subcatid[x]) self.getnzbList(cat) if control == self.refreshbtn: curPage = 0 self.getnzbList(cat) if control == self.ffbtn: curPage = int(curPage) + 1 self.getnzbList(cat) if control == self.rewbtn: curPage = int(curPage) - 1 self.getnzbList(cat) if control == self.nzbList: CurrentNZBItem = self.nzbList.getSelectedPosition() """ This section is will log you into your site with your provided credentials "Username" & "Password" are defind at the top of this script """ httpFetcher=cachedhttp.CachedHTTPWithProgress() """ Retrieves the selected file from the list. "str(NZB_ID[CurrentNZBItem])" will load the whole list in the middle of the URL and [CurrentNZBItem] tells the script to use only the ID from the currently selected file in the list """ httpFetcher.urlretrieve("http://www.nzbsrus.com/download.php/" + str(NZB_ID[CurrentNZBItem]) + "/" + str(NZB_ID[CurrentNZBItem]) + ".nzb",None,Downloads + str(NZB_ID[CurrentNZBItem])) httpFetcher.saveCookies() del httpFetcher """ This procedure will rename the recently downloaded file from a *.html to an *.nzb file """ print Downloads + str(NZB_ID[CurrentNZBItem]) + ".html" print Downloads + str(NZB_Title[CurrentNZBItem])[0:37] + ".nzb" nt.rename(Downloads + str(NZB_ID[CurrentNZBItem]) + ".html", Downloads + str(NZB_Title[CurrentNZBItem])[0:37] + ".nzb") # self.nzbList.reset() self.getnzbList(cat) def getnzbList(self,cat=""): """ This will create a Progress dialog when retrieving the list of files """ dialog = xbmcgui.Dialog() progress = xbmcgui.DialogProgress() progress.create("NZBsRus.com", "Downloading the NZB file list...") self.lblStatus.reset() self.lblStatus.addLabel("NZBsRus.com - Page " + str(curPage)) progress.update(10) try: nzb_Sock = urllib.urlopen(nzbURL + cat + "&page=" + str(curPage)) progress.update(30) nzb_HTML = nzb_Sock.read() progress.update(60) nzb_Sock.close() # <td align=center><nobr>2006-04-14<br />14:43:22</nobr></td> nzb_re1 = re.compile('id=(.*)&hit=1"><b>(.*)</b></a>') nzb_re2 = re.compile('<td align=center>(.*)<br>(.*)</td>') nzb_re3 = re.compile('<td align=center><nobr>(.*)<br />(.*)</nobr></td>') progress.update(90) nzb_List1 = nzb_re1.findall(nzb_HTML) nzb_List2 = nzb_re2.findall(nzb_HTML) nzb_List3 = nzb_re3.findall(nzb_HTML) progress.close() NZB_ID[0:50] = "" NZB_Title[0:50] = "" NZB_Size[0:50] = "" NZB_Added[0:50] = "" self.nzbList.reset() for a,b,c in zip(nzb_List1,nzb_List2,nzb_List3): # self.sizeBox.setText(a[1]) | Size: %s%s Size = 'Size: %s%s' % (b[0], b[1]) Added = 'Added: %s' % (c[0]) self.nzbList.addItem(a[1]) NZB_ID.append(a[0]) NZB_Title.append(a[1]) NZB_Size.append(Size) NZB_Added.append(Added) self.setFocus(self.nzbList) except: progress.close() dialog.ok("NZBsRus.com","Could not retrieve page: " + CurPage)""" Create your script's Main Window """class NZB_Main(xbmcgui.Window): def __init__(self): if Emulating: xbmcgui.Window.__init__(self) """ Define your sript's Window size here: """ self.scaleX = ( float(self.getWidth()) / float(720) ) self.scaleY = ( float(self.getHeight()) / float(576) ) """ Add your GUI images to your script here: """ self.addControl(xbmcgui.ControlImage(0,0,720,480,"Background.png")) self.addControl(xbmcgui.ControlImage(0,0,247,70, sys.path[0]+'\\' + "Logo.png")) """ Create your Menu buttons here: """ SetupButtons(self, int(50 * self.scaleX),int(120 * self.scaleY), int(150 * self.scaleX), int(33 * self.scaleY), "Vert", button_hl,button_normal, 2,37) self.Consolebtn = AddButton(self,'Consoles') self.Moviesbtn = AddButton(self,'Movies') self.TVbtn = AddButton(self,'Television') self.Musicbtn = AddButton(self,'Music') self.PCbtn = AddButton(self,'PC') self.Otherbtn = AddButton(self,'Other Platforms') self.Miscbtn = AddButton(self,'Miscellaneous') self.Settingsbtn = AddButton(self,'Settings') """ Create your "Page Toggle" buttons here: """ self.Homebtn = xbmcgui.ControlButton(int(580 * self.scaleX),int(160 * self.scaleY), int(100 * self.scaleX), int(40 * self.scaleY), "Home") self.FFbtn = xbmcgui.ControlButton(int(580 * self.scaleX),int(225 * self.scaleY), int(100 * self.scaleX), int(40 * self.scaleY), "Next Page") self.RWbtn = xbmcgui.ControlButton(int(580 * self.scaleX),int(267 * self.scaleY), int(100 * self.scaleX), int(40 * self.scaleY), "Prev Page") self.nzbList = xbmcgui.ControlList(int(190 * self.scaleX),int(160 * self.scaleY), int(390 * self.scaleX), int(365 * self.scaleY)) """ Create a Status Label for use in your script: """ self.lblStatus = xbmcgui.ControlFadeLabel(int(215 * self.scaleX),int(128 * self.scaleY), int(500 * self.scaleX), int(90 * self.scaleY), "font12", "0xFFFFFFFF") self.addControl(self.lblStatus) self.lblStatus.addLabel("NZBsRus.com - Page " + str(curPage)) """ Add your GUI items """ self.addControl(self.nzbList) self.addControl(self.Homebtn) self.addControl(self.FFbtn) self.addControl(self.RWbtn) """ Setup your GUI Navigation """ self.Consolebtn.controlUp(self.Settingsbtn) self.Consolebtn.controlDown(self.Moviesbtn) self.Consolebtn.controlLeft(self.nzbList) self.Consolebtn.controlRight(self.nzbList) self.Moviesbtn.controlUp(self.Consolebtn) self.Moviesbtn.controlDown(self.TVbtn) self.Moviesbtn.controlLeft(self.nzbList) self.Moviesbtn.controlRight(self.nzbList) self.TVbtn.controlUp(self.Moviesbtn) self.TVbtn.controlDown(self.Musicbtn) self.TVbtn.controlLeft(self.nzbList) self.TVbtn.controlRight(self.nzbList) self.Musicbtn.controlUp(self.TVbtn) self.Musicbtn.controlDown(self.PCbtn) self.Musicbtn.controlLeft(self.nzbList) self.Musicbtn.controlRight(self.nzbList) self.PCbtn.controlUp(self.Musicbtn) self.PCbtn.controlDown(self.Otherbtn) self.PCbtn.controlLeft(self.nzbList) self.PCbtn.controlRight(self.nzbList) self.Otherbtn.controlUp(self.PCbtn) self.Otherbtn.controlDown(self.Miscbtn) self.Otherbtn.controlLeft(self.nzbList) self.Otherbtn.controlRight(self.nzbList) self.Miscbtn.controlUp(self.Otherbtn) self.Miscbtn.controlDown(self.Settingsbtn) self.Miscbtn.controlLeft(self.nzbList) self.Miscbtn.controlRight(self.nzbList) self.Settingsbtn.controlUp(self.Miscbtn) self.Settingsbtn.controlDown(self.Consolebtn) self.Settingsbtn.controlLeft(self.nzbList) self.Settingsbtn.controlRight(self.nzbList) self.nzbList.controlLeft(self.Consolebtn) self.setFocus(self.Consolebtn) """ The below section is where you define your GUI items' Actions when executed """ def onAction(self, action): if action == ACTION_PREVIOUS_MENU: self.close() def onControl(self, control): global curPage global cater if control == self.Consolebtn: cater = "Consoles" consoles = NZB_Sub() consoles .doModal() del consoles if control == self.Moviesbtn: cater = "Movies" movies = NZB_Sub() movies .doModal() del movies if control == self.TVbtn: cater = "TV" tv = NZB_Sub() tv .doModal() del tv if control == self.Musicbtn: cater = "Music" music = NZB_Sub() music .doModal() del music if control == self.PCbtn: cater = "PC" pc = NZB_Sub() pc .doModal() del pc if control == self.Otherbtn: cater = "Other" other = NZB_Sub() other .doModal() del other if control == self.Settingsbtn: Set = Settings_Main() Set .doModal() del Set""" This creates a method to login and stores a cookie toretain your logged in status for the duration of the script. """def signIN(): httpFetcher=cachedhttp.CachedHTTPWithProgress() txdata = urllib.urlencode({"submit":Login, "username":NZB_User, "password":NZB_Pass}) html = httpFetcher.urlopen('http://www.nzbsrus.com/takelogin.php',txdata)def LoadSettings(): """ Here we will read hte settings file to get the Username and password """ # Check if file exists if not show username setting window :P if os.path.isfile(NZB_Path + "Cache\\Settings.ini") == False: if Emulating: print "No settings, Press ok to contuine to set them" else: xbmcgui.Dialog().ok(Title,"No settings, Press ok to contuine to set them") unps = Settings_Default() unps .doModal() del unps else: curfile = SafeConfigParser() curfile.read(NZB_Path + 'Cache\\Settings.ini') NZB_User = str(curfile.get('NZB', 'Username')) NZB_Pass = str(curfile.get('NZB', 'Password'))def main(): print "Starting " + Title LoadSettings() # Checks the settings signIN() # Logges into The Website mainwin = NZB_Main() mainwin.doModal() del mainwinif __name__ == "__main__": main()