Changeset 7057 for ipk/source


Ignore:
Timestamp:
Apr 7, 2011, 11:19:16 PM (15 years ago)
Author:
madie
Message:

[ipk] update 2.7 mediathek for swap

Location:
ipk/source/swapmediacenter_mediathek_2_7
Files:
2 edited
1 moved

Legend:

Unmodified
Added
Removed
  • ipk/source/swapmediacenter_mediathek_2_7/CONTROL/control

    r6925 r7057  
    11Package: enigma2-plugin-swapmediacenter-multimediathek
    2 Version: 2.5
     2Version: 2.7
    33Architecture: sh4
    44OE: MultiMediathek
  • ipk/source/swapmediacenter_mediathek_2_7/var/swap/extensions/MultiMediathek/plugin.py

    r6927 r7057  
    33# Coded by Homey (c) 2011
    44#
    5 # Version: 2.5
     5# Version: 2.7
    66# Support: www.i-have-a-dreambox.com
    77#####################################################
     
    3535from time import time
    3636from twisted.web.client import getPage, downloadPage
    37 from urllib import urlencode, unquote
     37from urllib import urlencode, unquote, quote_plus
    3838from urllib2 import Request, urlopen
    3939from xml.dom.minidom import parse, parseString
     
    6060config.plugins.multimediathek.showadultcontent = ConfigYesNo(default=False)
    6161config.plugins.multimediathek.showsecretcontent = ConfigYesNo(default=False)
    62 config.plugins.multimediathek.checkforupdate = ConfigYesNo(default=True)
    63 config.plugins.multimediathek.version = NoSave(ConfigText(default="250"))
     62config.plugins.multimediathek.checkforupdate = ConfigYesNo(default=False)
     63config.plugins.multimediathek.version = NoSave(ConfigText(default="270"))
    6464
    6565#################################
     
    6969class downloadJob(Job):
    7070        def __init__(self, toolbox, cmdline, filename, filetitle):
    71                 Job.__init__(self, _("Saving Movie from Mediathek"))
     71                Job.__init__(self, _("Download Movie"))
    7272                self.toolbox = toolbox
    7373                self.retrycount = 0
     
    211211                size_w = getDesktop(0).size().width()
    212212                size_h = getDesktop(0).size().height()
    213                 self.FramebufferScale = AVSwitch().getFramebufferScale()
    214213
    215214                if size_w == 1280:
     
    310309                        self["thumb"+str(x)] = Pixmap()
    311310
     311                # Get FrameBuffer Scale for ePicLoad()
     312                sc = AVSwitch().getFramebufferScale()
     313               
     314                # Init Thumb PicLoad
    312315                self.picload = ePicLoad()
    313                 self.picload.PictureData.get().append(self.showPic)
    314 
    315                 self.ThumbTimer = eTimer()
    316                 self.ThumbTimer.callback.append(self.showPic)
    317 
    318                 # Init Thumb PicLoad
    319                 self.thumbload = ePicLoad()
    320                 self.thumbload.PictureData.get().append(self.showThumbPixmap)
    321                 self.thumbload.setPara((self.picX-10, self.picY-(textsize*2), self.FramebufferScale[0], self.FramebufferScale[1], config.plugins.multimediathek.imagecache.value, int(config.plugins.multimediathek.imagescaling.value), "#00000000"))
     316                self.picload.PictureData.get().append(self.showThumbPixmap)
     317                self.picload.setPara((self.picX-10, self.picY-(textsize*2), sc[0], sc[1], config.plugins.multimediathek.imagecache.value, int(config.plugins.multimediathek.imagescaling.value), "#00000000"))
    322318
    323319                # Init eBackgroundFileEraser
     
    331327
    332328        def loadFrame(self):
    333                 if not self.createMediaFolders():
    334                         return
     329                if self.feedtitle == "Startseite":
     330                        if not self.createMediaFolders():
     331                                return
    335332
    336333                if self.feedtitle == "Bookmarks":
     
    340337
    341338        def createMediaFolders(self):
    342                 #if self.feedtitle == "Startseite" and not os_path.ismount(config.plugins.multimediathek.storagepath.value):
    343                 #       self["pageinfo"].setText(_("ERROR creating mediathek folders ..."))
    344                 #       return False
    345 
    346                 if self.feedtitle == "Startseite" and os_path.ismount(config.plugins.multimediathek.storagepath.value):
    347                         os_system("mkdir -p "+config.plugins.multimediathek.storagepath.value+"/mediathek")
    348                         os_system("mkdir -p "+config.plugins.multimediathek.storagepath.value+"/mediathek/images")
    349                         os_system("mkdir -p "+config.plugins.multimediathek.storagepath.value+"/mediathek/movies")
    350                         os_system("mkdir -p "+config.plugins.multimediathek.storagepath.value+"/mediathek/tmp")
    351 
    352                 return True
     339                # Check if cache folder is on a mountable device and not inside flash-memory
     340                tmppath = config.plugins.multimediathek.storagepath.value
     341                while not os_path.ismount(tmppath):
     342                        tmppath = os_path.dirname(tmppath)
     343                        if tmppath == "/":
     344                                self["pageinfo"].setText(_("Error: Can not create cache-folders inside flash memory. Check your Cache-Folder Settings!"))
     345                                return False
     346
     347                # Create Cache Folders ...
     348                os_system("mkdir -p "+config.plugins.multimediathek.storagepath.value+"/mediathek")
     349                os_system("mkdir -p "+config.plugins.multimediathek.storagepath.value+"/mediathek/images")
     350                os_system("mkdir -p "+config.plugins.multimediathek.storagepath.value+"/mediathek/movies")
     351                os_system("mkdir -p "+config.plugins.multimediathek.storagepath.value+"/mediathek/tmp")
     352
     353                # Check if Cache Folders were created successfully
     354                if not os_path.exists(config.plugins.multimediathek.storagepath.value+"/mediathek"):
     355                        self["pageinfo"].setText(_("Error: No write permission to create cache-folders. Check your Cache-Folder Settings!"))
     356                        return False
     357                else:
     358                        return True
    353359
    354360        def checkforupdate(self):
     
    493499                        self.gotThumbnail()
    494500                else:
    495                         downloadPage(self.thumburl, self.thumbfile).addCallback(self.gotThumbnail).addErrback(self.showThumbError)
    496 
    497         def gotThumbnail(self, txt=""):
    498                 if self.thumbload.getThumbnail(self.thumbfile) == 1:
    499                         if self.thumbcount+1 < len(self.Thumbnaillist):
    500                                 self.getThumbnail()
     501                        downloadPage(self.thumburl, self.thumbfile, agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2").addCallback(self.gotThumbnail).addErrback(self.showThumbError)
     502
     503        def gotThumbnail(self, data=""):
     504                self.picload.startDecode(self.thumbfile)
    501505
    502506        def showThumbPixmap(self, picInfo=None):
    503                 ptr = self.thumbload.getData()
     507                ptr = self.picload.getData()
    504508                if ptr != None:
    505509                        self["thumb" + str(self.thumbcount)].instance.setPixmap(ptr.__deref__())
     
    549553                self.getThumbnail()
    550554
    551         def showPic(self, picInfo=""):
    552                 for x in range(len(self.Thumbnaillist)):
    553                         if self.Thumbnaillist[x][0] == 0:
    554                                 if self.picload.getThumbnail(self.Thumbnaillist[x][2]) == 1:
    555                                         self.ThumbTimer.start(500, True)
    556                                 else:
    557                                         self.Thumbnaillist[x][0] = 1
    558                                 break
    559                         elif self.Thumbnaillist[x][0] == 1:
    560                                 self.Thumbnaillist[x][0] = 2
    561                                 ptr = self.picload.getData()
    562                                 if ptr != None:
    563                                         self["thumb" + str(self.Thumbnaillist[x][1])].instance.setPixmap(ptr.__deref__())
    564                                         self["thumb" + str(self.Thumbnaillist[x][1])].show()
    565 
    566555        def selectBookmark(self):
    567556                self.session.open(MultiMediathek, self.itemlist[self.index][5], "Bookmarks", "Bookmarks from your favorite Movies")
     
    600589                        self.session.openWithCallback(self.loadFrame, MultiMediathek_Settings)
    601590                elif self.itemlist:
    602                         self.session.openWithCallback(self.loadFrame, MultiMediathek_ItemOptions, self.itemlist[self.index])
     591                        self.session.openWithCallback(self.loadFrame, MultiMediathek_MenuOptions, self.itemlist[self.index])
    603592
    604593        def key_ok(self):
     
    610599                elif self.itemlist[self.index][6] == "movie":
    611600                        self.session.open(MovieInfoScreen, self.itemlist[self.index][5])
     601                elif self.itemlist[self.index][6] == "switchpage":
     602                        self.feedurl = self.itemlist[self.index][5]
     603                        self.index = 0
     604                        self.getxmlfeed()
    612605                elif self.itemlist[self.index][6] == "search":
    613606                        self.searchurl = self.itemlist[self.index][5]
     
    616609        def SendSearchQuery(self, query):
    617610                if query is not None:
    618                         searchurl = self.itemlist[self.index][5] + "&searchquery=" + str(query)
     611                        searchurl = self.itemlist[self.index][5] + "&searchquery=" + quote_plus(str(query))
    619612                        self.session.open(MultiMediathek, searchurl, self.itemlist[self.index][3], self.feedtext + " - " + self.itemlist[self.index][3] + ": " + query)
    620613
     
    638631                                                self.BgFileEraser.erase(filelocation)
    639632
     633                del self.picload
    640634                self.close()
    641635
     
    716710                }, -1)
    717711
     712                # Get FrameBuffer Scale for ePicLoad()
     713                sc = AVSwitch().getFramebufferScale()
     714               
     715                # Init ePicLoad
     716                self.picload = ePicLoad()
     717                self.picload.PictureData.get().append(self.showPosterPixmap)
     718                self.picload.setPara((270, 350, sc[0], sc[1], config.plugins.multimediathek.imagecache.value, int(config.plugins.multimediathek.imagescaling.value), "#00000000"))
     719               
    718720                self.onFirstExecBegin.append(self.GetMovieInfo)
    719721
     
    770772               
    771773                # Download Image
    772                 downloadPage(self.movieinfo[3], self.imagefolder+"/poster.jpg").addCallback(self.downloadPosterCallback)
     774                downloadPage(self.movieinfo[3], self.imagefolder+"/poster.jpg", agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2").addCallback(self.downloadPosterCallback)
    773775
    774776        def downloadPosterCallback(self, txt=""):
    775                 sc = AVSwitch().getFramebufferScale()
    776                 self.picload = ePicLoad()
    777                 self.picload.PictureData.get().append(self.showPosterPixmap)
    778                 self.picload.setPara((270, 350, sc[0], sc[1], config.plugins.multimediathek.imagecache.value, int(config.plugins.multimediathek.imagescaling.value), "#00000000"))
    779777                self.picload.startDecode(self.imagefolder+"/poster.jpg")
    780778
     
    945943
    946944        def Exit(self):
     945                del self.picload
    947946                self.close()
    948947
     
    11531152#------------------------------------------------------------------------------------------
    11541153
    1155 class MultiMediathek_ItemOptions(Screen):
     1154class MultiMediathek_MenuOptions(Screen):
    11561155        def __init__(self, session, movieinfo):
    11571156                Screen.__init__(self, session)
    11581157
    11591158                self.skin = """
    1160                         <screen position="center,center" size="400,200" title="Mediathek - Item Options">
     1159                        <screen position="center,center" size="400,200" title="Mediathek - Menu Options">
    11611160                                <widget source="itemname" transparent="1" render="Label" zPosition="2" position="10,180" size="380,20" font="Regular;16" />
    11621161                                <widget source="menu" render="Listbox" zPosition="5" transparent="1" position="10,10" size="380,160" scrollbarMode="showOnDemand" >
     
    11681167                self.movieinfo = movieinfo
    11691168                if self.movieinfo[7] == "bookmark":
    1170                         list.append(("Delete this bookmark", "delbookmark", "menu_delbookmark", "50"))
     1169                        list.append(("Delete selected bookmark", "delbookmark", "menu_delbookmark", "50"))
    11711170                elif self.movieinfo[6] == "movie":
    1172                         list.append(("Bookmark this movie", "addbookmark", "menu_addbookmark", "50"))
     1171                        list.append(("Bookmark selected movie", "addbookmark", "menu_addbookmark", "50"))
    11731172                elif self.movieinfo[6] == "cat":
    1174                         list.append(("Bookmark this category", "addbookmark", "menu_addbookmark", "50"))
     1173                        list.append(("Bookmark selected category", "addbookmark", "menu_addbookmark", "50"))
    11751174                list.append(("View Bookmarks", "viewbookmarks", "menu_viewbookmarks", "50"))
     1175                list.append(("View Downloads", "viewdownloads", "menu_viewdownloads", "50"))
    11761176                list.append(("Mediathek Settings", "settingsmenu", "menu_settings", "50"))
    11771177
     
    11901190                        if selection[1] == "addbookmark":
    11911191                                os_system("echo '%s:::%s:::%s:::%s' >> /etc/enigma2/multimediathek.bookmarks" % (self.movieinfo[6], self.movieinfo[3], self.movieinfo[5], self.movieinfo[4]))
    1192                                 #self.session.openWithCallback(self.Exit, MessageBox, _("Bookmark added!"), MessageBox.TYPE_INFO, timeout=5)
    11931192                                self.Exit()
    11941193                        if selection[1] == "delbookmark":
     
    12031202                                        tmpfile.close()
    12041203                                        os_system("echo '%s' > %s" % (tmpdata,bookmarkfile))
    1205 
    1206                                 #self.session.openWithCallback(self.Exit, MessageBox, _("Bookmark deleted!"), MessageBox.TYPE_INFO, timeout=5)
    12071204                                self.Exit()
    12081205                        elif selection[1] == "viewbookmarks":
    12091206                                self.session.open(MultiMediathek, self.movieinfo[5], "Bookmarks", "Bookmarks from your favorite Movies")
     1207                        elif selection[1] == "viewdownloads":
     1208                                self.session.openWithCallback(self.Exit, MultiMediathek_TaskViewer)
    12101209                        elif selection[1] == "settingsmenu":
    12111210                                self.session.openWithCallback(self.Exit, MultiMediathek_Settings)
     
    12161215
    12171216        def Exit(self, retval=None):
     1217                self.close()
     1218
     1219
     1220#------------------------------------------------------------------------------------------
     1221
     1222
     1223class MultiMediathek_TaskViewer(Screen):
     1224        def __init__(self, session):
     1225                Screen.__init__(self, session)
     1226                self.session = session
     1227               
     1228                self.skin = """
     1229                        <screen name="MediathekTasksScreen" position="center,center" size="700,550" title="Mediathek - Active Downloads">
     1230                                <widget source="tasklist" render="Listbox" position="30,120" size="640,370" zPosition="7" scrollbarMode="showOnDemand" transparent="1" >
     1231                                        <convert type="TemplatedMultiContent">
     1232                                                {"template": [
     1233                                                                MultiContentEntryText(pos = (0, 1), size = (200, 24), font=1, flags = RT_HALIGN_LEFT, text = 1), # index 1 is the name
     1234                                                                MultiContentEntryText(pos = (210, 1), size = (150, 24), font=1, flags = RT_HALIGN_RIGHT, text = 2), # index 2 is the state
     1235                                                                MultiContentEntryProgress(pos = (370, 1), size = (100, 24), percent = -3), # index 3 should be progress
     1236                                                                MultiContentEntryText(pos = (480, 1), size = (100, 24), font=1, flags = RT_HALIGN_RIGHT, text = 4), # index 4 is the percentage
     1237                                                        ],
     1238                                                "fonts": [gFont("Regular", 22),gFont("Regular", 18)],
     1239                                                "itemHeight": 25
     1240                                                }
     1241                                        </convert>
     1242                                </widget>
     1243                                <ePixmap position="220,500" zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
     1244                                <widget name="key_red" position="220,500" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
     1245                        </screen>"""
     1246               
     1247                self["shortcuts"] = ActionMap(["SetupActions", "ColorActions"],
     1248                {
     1249                        "ok": self.keyOK,
     1250                        "cancel": self.keyClose,
     1251                        "red": self.keyClose
     1252                }, -1)
     1253
     1254                self["tasklist"] = List([])
     1255                self["key_red"] = Button(_("Close"))
     1256               
     1257                self.Timer = eTimer()
     1258                self.Timer.callback.append(self.TimerFire)
     1259
     1260                self.onLayoutFinish.append(self.layoutFinished)
     1261                self.onClose.append(self.__onClose)
     1262               
     1263        def __onClose(self):
     1264                del self.Timer
     1265
     1266        def layoutFinished(self):
     1267                self.Timer.startLongTimer(2)
     1268
     1269        def TimerFire(self):
     1270                self.Timer.stop()
     1271                self.rebuildTaskList()
     1272       
     1273        def rebuildTaskList(self):
     1274                self.tasklist = []
     1275                for job in JobManager.getPendingJobs():
     1276                        self.tasklist.append((job, job.name, job.getStatustext(), int(100*job.progress/float(job.end)) ,str(100*job.progress/float(job.end)) + "%" ))
     1277                self['tasklist'].setList(self.tasklist)
     1278                self['tasklist'].updateList(self.tasklist)
     1279                self.Timer.startLongTimer(2)
     1280
     1281        def keyOK(self):
     1282                current = self["tasklist"].getCurrent()
     1283                if current:
     1284                        job = current[0]
     1285                        self.session.openWithCallback(self.JobViewCB, JobView, job)
     1286       
     1287        def JobViewCB(self, why):
     1288                pass
     1289
     1290        def keyClose(self):
    12181291                self.close()
    12191292
Note: See TracChangeset for help on using the changeset viewer.