Ejemplo n.º 1
0
 def GetOtherThreadPage(self):
     if self.Board == self.xunil:
         from Plugins.Extensions.BoardsReader.libs.smf import GetWebPage, GetFullThread
         username = config.plugins.BoardReader.xunil_login.value
         password = config.plugins.BoardReader.xunil_password.value
         myThreadURL = '.%i.html' % ((self.CurrentThreadPage - 1) * 15)
     elif self.Board == self.dvhk:
         from Plugins.Extensions.BoardsReader.libs.vbulletin import GetWebPage, GetFullThread
         username = config.plugins.BoardReader.dvhk_login.value
         password = config.plugins.BoardReader.dvhk_password.value
         myThreadURL = '&page=%i' % self.CurrentThreadPage
     else:
         return
     myThreadURL = self.ThreadURL + myThreadURL
     print "GetOtherThreadPage>>>" + self.mainurl + myThreadURL
     try:
         self.WebPage = GetFullThread(
             GetWebPage(self.mainurl, myThreadURL, username, password))
     except:
         pass
     self.newtitle = self.WebPage[:self.WebPage.find('\n')]
     self.setTitle(self.newtitle)
     self.WebPage = self.WebPage[self.WebPage.find('\n') + 1:]
     self.processWebPage()
     return
Ejemplo n.º 2
0
 def GetOtherThreadPage(self):
     if self.BoardType == self.smf:
         from Plugins.Extensions.BoardsReader.libs.smf import GetWebPage, GetFullThread
         username = config.plugins.BoardReader.xunil_login.value
         password = config.plugins.BoardReader.xunil_password.value
         myThreadURL = '.%i.html' % ((self.CurrentThreadPage - 1) * 15)
     elif self.BoardType == self.vbulletin:
         from Plugins.Extensions.BoardsReader.libs.vbulletin import GetWebPage, GetFullThread
         username = config.plugins.BoardReader.dvhk_login.value
         password = config.plugins.BoardReader.dvhk_password.value
         myThreadURL = '&page=%i' % self.CurrentThreadPage
     else:
         return
     myThreadURL = self.ThreadURL + myThreadURL
     print "GetOtherThreadPage>>>" + self.mainurl + myThreadURL
     try:
         self.WebPage = GetFullThread(GetWebPage(self.mainurl,myThreadURL,username,password))
     except:
         pass
     self.newtitle = self.WebPage[:self.WebPage.find('\n')]
     self.setTitle(self.newtitle)
     self.WebPage = self.WebPage[self.WebPage.find('\n')+1:]
     self.processWebPage()
     return
Ejemplo n.º 3
0
class ThreadView(Screen):
    xunil = 0
    dvhk = 1

    def __init__(self, session, WebPage, MainURL, ThreadURL):
        self.session = session
        Screen.__init__(self, session)

        self["text"] = ScrollLabel("")
        #nasze ustawienia
        self.mainurl = MainURL
        self.ThreadURL = ThreadURL
        self.Plugin_PATH = resolveFilename(SCOPE_PLUGINS,
                                           'Extensions/BoardsReader/')
        self.WebPage = WebPage[WebPage.find('\n') + 1:]
        self.newtitle = WebPage[:WebPage.find('\n')]
        #print self.ThreadURL
        self.CurrentThreadPage = 1
        self.MaxThreadPage = 1
        self.MultiThreadPages = False
        if self.mainurl.find('xunil') > 0:
            self.Board = self.xunil
        else:
            self.Board = self.dvhk

        if self.newtitle.find(
                'Strona '
        ) > 0:  # Zwracana strona musi zawierac w pierwszej linijce tytul i liczbe stron
            tmpPage = self.newtitle[self.newtitle.find('Strona ') +
                                    len('Strona '):]
            tmpPage = tmpPage[:tmpPage.find(' ')].strip()
            if tmpPage.isdigit():
                self.MultiThreadPages = True
                self.CurrentThreadPage = int(tmpPage)
                self.MaxThreadPage = self.CurrentThreadPage
                #print "Aktualna strona: " + tmpPage

        if self.MultiThreadPages == False:
            skin = """
                <screen name="ThreadView" position="50,70" size="1180,600" title="ThreadView..." >
                    <ePixmap position="5,5" zPosition="4" size="30,30" pixmap="%s/icons/red.png" transparent="1" alphatest="on" />
                    <widget name="key_red" position="40,5" size="300,27" valign="center" halign="left" font="Regular;21" transparent="1" foregroundColor="white"/>
                    <widget name="text" position="0,40" size="1180,560" font="Regular;24" />
                </screen>""" % (self.Plugin_PATH)
            self.skin = skin
            self["key_red"] = Label(_("Single page thread"))

            self["actions"] = ActionMap(
                ["WizardActions", "DirectionActions", "ColorActions"], {
                    "ok": self.cancel,
                    "back": self.cancel,
                    "left": self["text"].pageUp,
                    "right": self["text"].pageDown,
                    "up": self["text"].pageUp,
                    "down": self["text"].pageDown
                }, -1)
        else:
            skin = """
                <screen name="ThreadView" position="50,70" size="1180,600" title="ThreadView..." >
                <ePixmap position="5,5" zPosition="4" size="30,30" pixmap="%s/icons/red.png" transparent="1" alphatest="on" />
                <ePixmap position="300,5" zPosition="4" size="30,30" pixmap="%s/icons/green.png" transparent="1" alphatest="on" />
                <ePixmap position="605,5" zPosition="4" size="30,30" pixmap="%s/icons/yellow.png" transparent="1" alphatest="on" />
                <ePixmap position="905,5" zPosition="4" size="30,30" pixmap="%s/icons/blue.png" transparent="1" alphatest="on" />
                <widget name="key_red" position="40,5" size="140,27" zPosition="5" valign="center" halign="left" backgroundColor="black" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
                <widget name="key_green" position="340,5" size="180,27" zPosition="5" valign="center" halign="left" backgroundColor="black" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
                <widget name="key_yellow" position="640,5" size="300,27" zPosition="5" valign="center" halign="left" backgroundColor="black" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
                <widget name="key_blue" position="940,5" size="140,27" zPosition="5" valign="center" halign="left" backgroundColor="black" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
                <widget name="text" position="0,40" size="1180,560" font="Regular;24" />
                </screen>""" % (self.Plugin_PATH, self.Plugin_PATH,
                                self.Plugin_PATH, self.Plugin_PATH)
            self.skin = skin
            self["key_red"] = Label(_("First page"))
            self["key_green"] = Label(_("Previous page"))
            self["key_yellow"] = Label(_("Current page"))
            self["key_blue"] = Label(_("Current page"))

            self["actions"] = ActionMap(
                ["WizardActions", "DirectionActions", "ColorActions"], {
                    "ok": self.cancel,
                    "back": self.cancel,
                    "left": self["text"].pageUp,
                    "right": self["text"].pageDown,
                    "up": self["text"].pageUp,
                    "down": self["text"].pageDown,
                    "red": self.red_pressed,
                    "green": self.green_pressed,
                    "yellow": self.yellow_pressed,
                    "blue": self.blue_pressed,
                }, -1)

        self.onShown.append(self.updateTitle)

        self.onLayoutFinish.append(
            self.processWebPage)  # dont start before gui is finished

    def updateTitle(self):
        self.setTitle(self.newtitle)

    def processWebPage(self):
        with open('/tmp/Thread.txt', 'w') as myfile:
            myfile.write(self.WebPage)
        self.removeHTMLtags()
        self.reversePosts()
        self["text"].setText(self.WebPage)

    def removeHTMLtags(self):
        print "removeHTMLtags"
        self.WebPage = self.WebPage.replace("</tr>",
                                            "").replace("</td>", "").replace(
                                                "</a>", "")
        while self.WebPage.find('  ') > 0:
            print "removeHTMLtags spaces"
            self.WebPage = self.WebPage.replace("  ", " ")
        while self.WebPage.find('\t\t') > 0:
            print "removeHTMLtags tabs"
            self.WebPage = self.WebPage.replace("\t\t", "\t")
        while self.WebPage.find('\n\n') > 0:
            print "removeHTMLtags newline"
            self.WebPage = self.WebPage.replace("\n\n", "\n")

        return self.WebPage

    def reversePosts(self):
        if config.plugins.BoardReader.PostsInReverseOrder.value == True:
            Posts = self.WebPage.split("##########")
            if len(Posts) > 2:
                self.WebPage = ''
                for post in reversed(Posts):
                    self.WebPage += "##########" + post + "\n"

    def cancel(self):
        self.close()

    def SetLabels(self):
        if self.CurrentThreadPage == 1:
            self["key_red"].setText(_("Current page"))
            self["key_green"].setText(_("Current page"))
            self["key_yellow"].setText(_("Next page"))
            self["key_blue"].setText(_("Last page"))
        elif self.CurrentThreadPage > 1 and self.CurrentThreadPage < self.MaxThreadPage:
            self["key_red"].setText(_("First page"))
            self["key_green"].setText(_("Previous page"))
            self["key_yellow"].setText(_("Next page"))
            self["key_blue"].setText(_("Last page"))
        elif self.CurrentThreadPage == self.MaxThreadPage:
            self["key_red"].setText(_("First page"))
            self["key_green"].setText(_("Previous page"))
            self["key_yellow"].setText(_("Current page"))
            self["key_blue"].setText(_("Current page"))
        return

    def red_pressed(self):
        if self.CurrentThreadPage != 1:
            self.CurrentThreadPage = 1
            self.GetOtherThreadPage()
            self.SetLabels()
        return

    def green_pressed(self):
        if self.CurrentThreadPage > 1:
            self.CurrentThreadPage = self.CurrentThreadPage - 1
            self.GetOtherThreadPage()
            self.SetLabels()
        return

    def yellow_pressed(self):
        if self.CurrentThreadPage < self.MaxThreadPage:
            self.CurrentThreadPage = self.CurrentThreadPage + 1
            self.GetOtherThreadPage()
            self.SetLabels()
        return

    def blue_pressed(self):
        if self.CurrentThreadPage != self.MaxThreadPage:
            self.CurrentThreadPage = self.MaxThreadPage
            self.GetOtherThreadPage()
            self.SetLabels()
        return

    def GetOtherThreadPage(self):
        if self.Board == self.xunil:
            from Plugins.Extensions.BoardsReader.libs.smf import GetWebPage, GetFullThread
            username = config.plugins.BoardReader.xunil_login.value
            password = config.plugins.BoardReader.xunil_password.value
            myThreadURL = '.%i.html' % ((self.CurrentThreadPage - 1) * 15)
        elif self.Board == self.dvhk:
            from Plugins.Extensions.BoardsReader.libs.vbulletin import GetWebPage, GetFullThread
            username = config.plugins.BoardReader.dvhk_login.value
            password = config.plugins.BoardReader.dvhk_password.value
            myThreadURL = '&page=%i' % self.CurrentThreadPage
        else:
            return
        myThreadURL = self.ThreadURL + myThreadURL
        print "GetOtherThreadPage>>>" + self.mainurl + myThreadURL
        try:
            self.WebPage = GetFullThread(
                GetWebPage(self.mainurl, myThreadURL, username, password))
        except:
            pass
        self.newtitle = self.WebPage[:self.WebPage.find('\n')]
        self.setTitle(self.newtitle)
        self.WebPage = self.WebPage[self.WebPage.find('\n') + 1:]
        self.processWebPage()
        return
Ejemplo n.º 4
0
class ThreadView(Screen):
    smf = 0
    vbulletin = 1
    
    def __init__(self, session,  WebPage , MainURL, ThreadURL, Engine = 'vbulletin'):
        self.session = session
        Screen.__init__(self, session)

        self["text"] = ScrollLabel("")
        #nasze ustawienia
        self.mainurl = MainURL
        self.ThreadURL = ThreadURL 
        self.Plugin_PATH = resolveFilename(SCOPE_PLUGINS, 'Extensions/BoardsReader/')
        self.WebPage = WebPage[WebPage.find('\n')+1:]
        self.newtitle = WebPage[:WebPage.find('\n')]
        #print self.ThreadURL
        self.CurrentThreadPage = 1
        self.MaxThreadPage = 1
        self.MultiThreadPages = False
        if Engine == 'smf':
            self.BoardType = self.smf
        else:
            self.BoardType = self.vbulletin
        
        if self.newtitle.find('Strona ') > 0 : # Zwracana strona musi zawierac w pierwszej linijce tytul i liczbe stron
            tmpPage = self.newtitle[self.newtitle.find('Strona ') + len('Strona '):]
            tmpPage = tmpPage[:tmpPage.find(' ')].strip()
            if tmpPage.isdigit(): 
                self.MultiThreadPages = True
                self.CurrentThreadPage = int(tmpPage)
                self.MaxThreadPage = self.CurrentThreadPage
                #print "Aktualna strona: " + tmpPage
        
        if self.MultiThreadPages == False:
            skin = """
                <screen name="ThreadView" position="50,70" size="1180,600" title="ThreadView..." >
                    <ePixmap position="5,5" zPosition="4" size="30,30" pixmap="%s/icons/red.png" transparent="1" alphatest="on" />
                    <widget name="key_red" position="40,5" size="300,27" valign="center" halign="left" font="Regular;21" transparent="1" foregroundColor="white"/>
                    <widget name="text" position="0,40" size="1180,560" font="Regular;24" />
                </screen>"""% (self.Plugin_PATH)
            self.skin = skin
            self["key_red"] = Label(_("Single page thread"))
        
            self["actions"] = ActionMap(["WizardActions", "DirectionActions", "ColorActions"], 
            {
                "ok": self.cancel,
                "back": self.cancel,
                "left": self["text"].pageUp,
                "right": self["text"].pageDown,
                "up": self["text"].pageUp,
                "down": self["text"].pageDown
            }, -1)
        else:
            skin = """
                <screen name="ThreadView" position="50,70" size="1180,600" title="ThreadView..." >
                <ePixmap position="5,5" zPosition="4" size="30,30" pixmap="%s/icons/red.png" transparent="1" alphatest="on" />
                <ePixmap position="300,5" zPosition="4" size="30,30" pixmap="%s/icons/green.png" transparent="1" alphatest="on" />
                <ePixmap position="605,5" zPosition="4" size="30,30" pixmap="%s/icons/yellow.png" transparent="1" alphatest="on" />
                <ePixmap position="905,5" zPosition="4" size="30,30" pixmap="%s/icons/blue.png" transparent="1" alphatest="on" />
                <widget name="key_red" position="40,5" size="140,27" zPosition="5" valign="center" halign="left" backgroundColor="black" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
                <widget name="key_green" position="340,5" size="180,27" zPosition="5" valign="center" halign="left" backgroundColor="black" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
                <widget name="key_yellow" position="640,5" size="300,27" zPosition="5" valign="center" halign="left" backgroundColor="black" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
                <widget name="key_blue" position="940,5" size="140,27" zPosition="5" valign="center" halign="left" backgroundColor="black" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
                <widget name="text" position="0,40" size="1180,560" font="Regular;24" />
                </screen>""" % (self.Plugin_PATH,self.Plugin_PATH,self.Plugin_PATH,self.Plugin_PATH)
            self.skin = skin
            self["key_red"] = Label(_("First page"))
            self["key_green"] = Label(_("Previous page"))
            self["key_yellow"] = Label(_("Current page"))
            self["key_blue"] = Label(_("Current page"))

            self["actions"] = ActionMap(["WizardActions", "DirectionActions", "ColorActions"], 
            {
                "ok": self.cancel,
                "back": self.cancel,
                "left": self["text"].pageUp,
                "right": self["text"].pageDown,
                "up": self["text"].pageUp,
                "down": self["text"].pageDown,
                "red": self.red_pressed,
                "green": self.green_pressed,
                "yellow": self.yellow_pressed,
                "blue": self.blue_pressed,
            }, -1)
          
        self.onShown.append(self.updateTitle)
        
        self.onLayoutFinish.append(self.processWebPage) # dont start before gui is finished

    def updateTitle(self):
        self.setTitle(self.newtitle)

    def processWebPage(self):
        with open('/tmp/Thread.txt', 'w') as myfile:
            myfile.write(self.WebPage)
        self.removeHTMLtags()
        self.reversePosts()
        self["text"].setText(self.WebPage)

    def removeHTMLtags(self):
        print"removeHTMLtags"
        self.WebPage = self.WebPage.replace("</tr>","").replace("</td>","").replace("</a>","")
        while self.WebPage.find('  ') > 0:
          print"removeHTMLtags spaces"
          self.WebPage = self.WebPage.replace("  "," ")
        while self.WebPage.find('\t\t') > 0:
          print"removeHTMLtags tabs"
          self.WebPage = self.WebPage.replace("\t\t","\t")
        while self.WebPage.find('\n\n') > 0:
          print"removeHTMLtags newline"
          self.WebPage = self.WebPage.replace("\n\n","\n")
          
        return self.WebPage

    def reversePosts(self):
        if config.plugins.BoardReader.PostsInReverseOrder.value == True:
            Posts = self.WebPage.split("##########")
            if len(Posts) > 2:
                self.WebPage = ''
                for post in reversed(Posts):
                    self.WebPage += "##########" + post + "\n"
    
    def cancel(self):
        self.close()

    def SetLabels(self):
        if self.CurrentThreadPage == 1 :
            self["key_red"].setText(_("Current page"))
            self["key_green"].setText(_("Current page"))
            self["key_yellow"].setText(_("Next page"))
            self["key_blue"].setText(_("Last page"))
        elif self.CurrentThreadPage > 1 and self.CurrentThreadPage < self.MaxThreadPage :
            self["key_red"].setText(_("First page"))
            self["key_green"].setText(_("Previous page"))
            self["key_yellow"].setText(_("Next page"))
            self["key_blue"].setText(_("Last page"))
        elif self.CurrentThreadPage == self.MaxThreadPage :
            self["key_red"].setText(_("First page"))
            self["key_green"].setText(_("Previous page"))
            self["key_yellow"].setText(_("Current page"))
            self["key_blue"].setText(_("Current page"))
        return  

    def red_pressed(self):
        if self.CurrentThreadPage != 1:
            self.CurrentThreadPage = 1
            self.GetOtherThreadPage()
            self.SetLabels()
        return

    def green_pressed(self):
        if self.CurrentThreadPage > 1:
            self.CurrentThreadPage = self.CurrentThreadPage - 1
            self.GetOtherThreadPage()
            self.SetLabels()
        return

    def yellow_pressed(self):
        if self.CurrentThreadPage < self.MaxThreadPage:
            self.CurrentThreadPage = self.CurrentThreadPage + 1
            self.GetOtherThreadPage()
            self.SetLabels()
        return
 
    def blue_pressed(self):
        if self.CurrentThreadPage != self.MaxThreadPage:
            self.CurrentThreadPage = self.MaxThreadPage
            self.GetOtherThreadPage()
            self.SetLabels()
        return

    def GetOtherThreadPage(self):
        if self.BoardType == self.smf:
            from Plugins.Extensions.BoardsReader.libs.smf import GetWebPage, GetFullThread
            username = config.plugins.BoardReader.xunil_login.value
            password = config.plugins.BoardReader.xunil_password.value
            myThreadURL = '.%i.html' % ((self.CurrentThreadPage - 1) * 15)
        elif self.BoardType == self.vbulletin:
            from Plugins.Extensions.BoardsReader.libs.vbulletin import GetWebPage, GetFullThread
            username = config.plugins.BoardReader.dvhk_login.value
            password = config.plugins.BoardReader.dvhk_password.value
            myThreadURL = '&page=%i' % self.CurrentThreadPage
        else:
            return
        myThreadURL = self.ThreadURL + myThreadURL
        print "GetOtherThreadPage>>>" + self.mainurl + myThreadURL
        try:
            self.WebPage = GetFullThread(GetWebPage(self.mainurl,myThreadURL,username,password))
        except:
            pass
        self.newtitle = self.WebPage[:self.WebPage.find('\n')]
        self.setTitle(self.newtitle)
        self.WebPage = self.WebPage[self.WebPage.find('\n')+1:]
        self.processWebPage()
        return