X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ef4faf6f9fc8840b36b5f25206fd0722d5e36e85..3a9a9d2a3eb9cb382b1ccaa978c532d2423dfe73:/lib/python/Screens/MediaPlayer.py diff --git a/lib/python/Screens/MediaPlayer.py b/lib/python/Screens/MediaPlayer.py index f042a5c3..bab3e0aa 100644 --- a/lib/python/Screens/MediaPlayer.py +++ b/lib/python/Screens/MediaPlayer.py @@ -10,7 +10,7 @@ from Components.Label import Label from Components.FileList import FileEntryComponent, FileList from Components.MediaPlayer import PlayList, PlaylistEntryComponent from Plugins.Plugin import PluginDescriptor -from Tools.Directories import resolveFilename, SCOPE_MEDIA, SCOPE_CONFIG +from Tools.Directories import resolveFilename, SCOPE_MEDIA, SCOPE_CONFIG, SCOPE_SKIN_IMAGE from Components.ServicePosition import ServicePositionGauge from Screens.ChoiceBox import ChoiceBox from Components.ServiceEventTracker import ServiceEventTracker @@ -27,7 +27,12 @@ class MediaPlayer(Screen, InfoBarSeek): self.oldService = self.session.nav.getCurrentlyPlayingServiceReference() self.session.nav.stopService() - self.filelist = FileList(resolveFilename(SCOPE_MEDIA), matchingPattern = "^.*\.(mp3|ogg|ts|wav|wave|m3u|pls)", useServiceRef = True) + self.playlistparsers = {} + self.addPlaylistParser(PlaylistIOM3U, "m3u") + self.addPlaylistParser(PlaylistIOPLS, "pls") + self.addPlaylistParser(PlaylistIOInternal, "e2pls") + + self.filelist = FileList(resolveFilename(SCOPE_MEDIA), matchingPattern = "(?i)^.*\.(mp3|ogg|ts|wav|wave|m3u|pls|e2pls|mpg|vob)", useServiceRef = True) self["filelist"] = self.filelist self.playlist = PlayList() @@ -47,6 +52,7 @@ class MediaPlayer(Screen, InfoBarSeek): self["year"] = Label("") self["genretext"] = Label(_("Genre:")) self["genre"] = Label("") + self["coverArt"] = Pixmap() #self["text"] = Input("1234", maxSize=True, type=Input.NUMBER) @@ -124,9 +130,11 @@ class MediaPlayer(Screen, InfoBarSeek): self.infoTimer.start(500) self.currList = "filelist" + + self.coverArtFileName = "" self.playlistIOInternal = PlaylistIOInternal() - list = self.playlistIOInternal.open(resolveFilename(SCOPE_CONFIG, "playlist.e2")) + list = self.playlistIOInternal.open(resolveFilename(SCOPE_CONFIG, "playlist.e2pls")) if list: for x in list: self.playlist.addFile(x.ref) @@ -139,7 +147,7 @@ class MediaPlayer(Screen, InfoBarSeek): self.playlistIOInternal.clear() for x in self.playlist.list: self.playlistIOInternal.addService(ServiceReference(x[0])) - self.playlistIOInternal.save(resolveFilename(SCOPE_CONFIG, "playlist.e2")) + self.playlistIOInternal.save(resolveFilename(SCOPE_CONFIG, "playlist.e2pls")) self.close() def checkSkipShowHideLock(self): @@ -164,8 +172,10 @@ class MediaPlayer(Screen, InfoBarSeek): album = currPlay.info().getInfoString(iServiceInformation.sAlbum), genre = currPlay.info().getInfoString(iServiceInformation.sGenre), clear = True) + self.updateCoverArtPixmap( currPlay.info().getName() ) else: self.updateMusicInformation() + self.updateCoverArtPixmap( "" ) def updateMusicInformation(self, artist = "", title = "", album = "", year = "", genre = "", clear = False): self.updateSingleMusicInformation("artist", artist, clear) @@ -179,6 +189,19 @@ class MediaPlayer(Screen, InfoBarSeek): if self[name].getText() != info: self[name].setText(info) + def updateCoverArtPixmap(self, currentServiceName): + filename = currentServiceName + # The "getName" usually adds something like "MP3 File:" infront of filename + # Get rid of this...by finding the first "/" + filename = filename[filename.find("/"):] + path = os.path.dirname(filename) + pngname = path + "/" + "folder.png" + if not os.path.exists(pngname): + pngname = resolveFilename(SCOPE_SKIN_IMAGE, "no_coverArt.png") + if self.coverArtFileName != pngname: + self.coverArtFileName = pngname + self["coverArt"].instance.setPixmapFromFile(self.coverArtFileName) + def fwdTimerFire(self): self.fwdKeyTimer.stop() self.fwdtimer = False @@ -327,21 +350,23 @@ class MediaPlayer(Screen, InfoBarSeek): if len(self.playlist) == 1: self.changeEntry(0) + def addPlaylistParser(self, parser, extension): + self.playlistparsers[extension] = parser + def playlistCallback(self, answer): if answer is not None: - extension = answer[1][1].getPath()[-3:] - if extension == "m3u": - playlist = PlaylistIOM3U() - elif extension == "pls": - playlist = PlaylistIOPLS() - if answer[1][0] == self.REPLACEPLAYLIST: - self.stopEntry() - self.playlist.clear() - self.switchToFileList() - if answer[1][0] == self.REPLACEPLAYLIST or answer[1][0] == self.ADDPLAYLIST: - list = playlist.open(answer[1][1].getPath()) - for x in list: - self.playlist.addFile(x.ref) + extension = answer[1][1].getPath()[answer[1][1].getPath().rfind('.') + 1:] + print "extension:", extension + if self.playlistparsers.has_key(extension): + playlist = self.playlistparsers[extension]() + if answer[1][0] == self.REPLACEPLAYLIST: + self.stopEntry() + self.playlist.clear() + self.switchToFileList() + if answer[1][0] == self.REPLACEPLAYLIST or answer[1][0] == self.ADDPLAYLIST: + list = playlist.open(answer[1][1].getPath()) + for x in list: + self.playlist.addFile(x.ref) def nextEntry(self):