All pastes #49616 Raw Edit

Mine

public python v1 · immutable
#49616 ·published 2006-04-17 16:30 UTC
rendered paste body
import 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=(.*)&amp;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()