allow playing audio cds without mediascanner (choice in mediaplayer menu). offer...
authorAndreas Frisch <andreas.frisch@multimedia-labs.de>
Tue, 21 Oct 2008 15:29:54 +0000 (15:29 +0000)
committerAndreas Frisch <andreas.frisch@multimedia-labs.de>
Tue, 21 Oct 2008 15:29:54 +0000 (15:29 +0000)
dvd

lib/python/Components/Harddisk.py
lib/python/Plugins/Extensions/DVDBurn/DVDToolbox.py
lib/python/Plugins/Extensions/DVDPlayer/plugin.py
lib/python/Plugins/Extensions/MediaPlayer/plugin.py

index a5727cf..f7c3a7c 100644 (file)
@@ -302,7 +302,7 @@ class HarddiskManager:
                                                continue
                                        partitions.append(partition)
                        else:
-                               self.cd = "/dev/"+blockdev
+                               self.cd = blockdev
                except IOError:
                        error = True
                return error, blacklisted, removable, is_cdrom, partitions
index e762f9a..3ea4874 100644 (file)
@@ -164,7 +164,7 @@ class DVDformatTask(Task):
                self.toolbox = job.toolbox
                self.postconditions.append(DVDformatTaskPostcondition())
                self.setTool("/bin/dvd+rw-format")
-               self.args += [ harddiskmanager.getCD() ]
+               self.args += [ "/dev/" + harddiskmanager.getCD() ]
                self.end = 1100
 
        def prepare(self):
@@ -208,7 +208,7 @@ class DVDinfoTask(Task):
                self.toolbox = job.toolbox
                self.postconditions.append(DVDinfoTaskPostcondition())
                self.setTool("/bin/dvd+rw-mediainfo")
-               self.args += [ harddiskmanager.getCD() ]
+               self.args += [ "/dev/" + harddiskmanager.getCD() ]
 
        def prepare(self):
                self.error = None
index b201d2c..4298642 100644 (file)
@@ -334,18 +334,25 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP
                        })
 
                self.onClose.append(self.__onClose)
-
+               self.physicalDVD = False
+               self.dvd_device = None
                if dvd_device:
                                self.dvd_device = dvd_device
                                self.physicalDVD = True
                else:
-                       if fileExists(harddiskmanager.getCD()):
-                               print "physical dvd found:", harddiskmanager.getCD()
-                               self.dvd_device = harddiskmanager.getCD()
-                               self.physicalDVD = True
-                       else:
-                               self.dvd_device = None
-                               self.physicalDVD = False
+                       devicepath = harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())
+                       if pathExists(devicepath):
+                               from Components.Scanner import scanDevice
+                               res = scanDevice(devicepath)
+                               list = [ (r.description, r, res[r], self.session) for r in res ]
+                               if list:
+                                       (desc, scanner, files, session) = list[0]
+                                       for file in files:
+                                               print file
+                                               if file.mimetype == "video/x-dvd":
+                                                       self.dvd_device = devicepath
+                                                       print "physical dvd found:", self.dvd_device
+                                                       self.physicalDVD = True                 
 
                self.dvd_filelist = dvd_filelist
                self.onFirstExecBegin.append(self.showFileBrowser)
@@ -542,7 +549,7 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP
 
        def showFileBrowser(self):
                if self.physicalDVD and len(self.dvd_filelist) == 0:
-                       if self.dvd_device == harddiskmanager.getCD():
+                       if self.dvd_device == harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD()):
                                self.session.openWithCallback(self.DVDdriveCB, MessageBox, text=_("Do you want to play DVD in drive?"), timeout=5 )
                        else:
                                self.DVDdriveCB(True)
index c751bb0..7b5a4a0 100644 (file)
@@ -18,6 +18,8 @@ from Screens.InfoBarGenerics import InfoBarSeek, InfoBarAudioSelection, InfoBarC
 from ServiceReference import ServiceReference
 from Screens.ChoiceBox import ChoiceBox
 from Screens.HelpMenu import HelpableScreen
+from Components.Harddisk import harddiskmanager
+from Tools.Directories import fileExists, pathExists
 import random
 
 class MyPlayList(PlayList):
@@ -283,7 +285,7 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                        path = path[:-1]
                pngname = path + "folder.png"
                
-               if not os_path.exists(pngname):
+               if not fileExists(pngname):
                        pngname = self["coverArt"].default_pixmap
                if self.coverArtFileName != pngname:
                        self.coverArtFileName = pngname
@@ -457,6 +459,19 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                menu.append((_("load playlist"), "loadplaylist"));
                menu.append((_("delete saved playlist"), "deleteplaylist"));
                menu.append((_("repeat playlist"), "repeat"));
+               self.cdAudioTrackFiles = []
+               drivepath = harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())
+               if pathExists(drivepath):
+                       from Components.Scanner import scanDevice
+                       res = scanDevice(drivepath)
+                       list = [ (r.description, r, res[r], self.session) for r in res ]
+                       if list:
+                               (desc, scanner, files, session) = list[0]
+                               for file in files:
+                                       if file.mimetype == "audio/x-cda":
+                                               self.cdAudioTrackFiles.append(file.path)
+               if len(self.cdAudioTrackFiles):
+                       menu.insert(0,(_("Play Audio-CD..."), "audiocd"))
                self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu)
 
        def menuCallback(self, choice):
@@ -499,6 +514,22 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                        else:
                                self.repeat = True
                                self["repeat"].setPixmapNum(1)
+               elif choice[1] == "audiocd":
+                       self.playAudioCD()
+                       
+       def playAudioCD(self):
+               from enigma import eServiceReference
+               from Plugins.Extensions.CDInfo.plugin import Query
+               self.playlist.clear()
+               self.savePlaylistOnExit = False
+               self.isAudioCD = True
+               for file in self.cdAudioTrackFiles:
+                       ref = eServiceReference(4097, 0, file)
+                       self.playlist.addFile(ref)
+               cdinfo = Query(self)
+               cdinfo.scan()
+               self.changeEntry(0)
+               self.switchToPlayList()
 
        def showEventInformation(self):
                from Screens.EventView import EventViewSimple
@@ -823,20 +854,10 @@ def audioCD_open(list, session, **kwargs):
        from enigma import eServiceReference
 
        mp = session.open(MediaPlayer)
-
-       mp.playlist.clear()
-       mp.savePlaylistOnExit = False
-       mp.isAudioCD = True
-
+       mp.cdAudioTrackFiles = []
        for file in list:
-               ref = eServiceReference(4097, 0, file.path)
-               mp.playlist.addFile(ref)
-       from Plugins.Extensions.CDInfo.plugin import Query
-       cdinfo = Query(mp)
-       cdinfo.scan()
-
-       mp.changeEntry(0)
-       mp.switchToPlayList()
+               mp.cdAudioTrackFiles.append(file.path)
+       mp.playAudioCD()
 
 def filescan(**kwargs):
        from Components.Scanner import Scanner, ScanPath