-from os import path as os_path, remove as os_remove, listdir as os_listdir, popen
+from os import path as os_path, remove as os_remove, listdir as os_listdir
from time import strftime
from enigma import iPlayableService, eTimer, eServiceCenter, iServiceInformation
from Screens.Screen import Screen
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):
self.addPlaylistParser(PlaylistIOInternal, "e2pls")
# 'None' is magic to start at the list of mountpoints
- self.filelist = FileList(None, matchingPattern = "(?i)^.*\.(mp3|ogg|ts|wav|wave|m3u|pls|e2pls|mpg|vob|avi|mkv|dat|flac)", useServiceRef = True, additionalExtensions = "4098:m3u 4098:e2pls 4098:pls")
+ self.filelist = FileList(None, matchingPattern = "(?i)^.*\.(mp2|mp3|ogg|ts|wav|wave|m3u|pls|e2pls|mpg|vob|avi|mkv|mp4|dat|flac)", useServiceRef = True, additionalExtensions = "4098:m3u 4098:e2pls 4098:pls")
self["filelist"] = self.filelist
self.playlist = MyPlayList()
currPlay = self.session.nav.getCurrentService()
message = currPlay.info().getInfoString(iServiceInformation.sUser+12)
print "[__evPluginError]" , message
- self.session.open(MessageBox, ("GStreamer Error: missing %s") % message, type = MessageBox.TYPE_INFO,timeout = 20 )
+ self.session.open(MessageBox, message, type = MessageBox.TYPE_INFO,timeout = 20 )
def delMPTimer(self):
del self.rightKeyTimer
sAlbum = currPlay.info().getInfoString(iServiceInformation.sAlbum)
sGenre = currPlay.info().getInfoString(iServiceInformation.sGenre)
sArtist = currPlay.info().getInfoString(iServiceInformation.sArtist)
- sYear = ""
+ sYear = currPlay.info().getInfoString(iServiceInformation.sTimeCreate)
if sTitle == "":
if not self.isAudioCD:
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
menu.append((_("load playlist"), "loadplaylist"));
menu.append((_("delete saved playlist"), "deleteplaylist"));
menu.append((_("repeat playlist"), "repeat"));
+ drivepath = harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())
+ if pathExists(drivepath):
+ menu.insert(0,(_("Play Audio-CD..."), "audiocd"))
self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu)
def menuCallback(self, choice):
else:
self.repeat = True
self["repeat"].setPixmapNum(1)
+ elif choice[1] == "audiocd":
+ from Components.Scanner import scanDevice
+ drivepath = harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())
+ self.cdAudioTrackFiles = []
+ 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)
+ self.playAudioCD()
+
+ def playAudioCD(self):
+ from enigma import eServiceReference
+ from Plugins.Extensions.CDInfo.plugin import Query
+
+ if len(self.cdAudioTrackFiles):
+ 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
def PlaylistSelected(self,path):
if path is not None:
self.clear_playlist()
- self.playlistIOInternal = PlaylistIOInternal()
- list = self.playlistIOInternal.open(path[1])
- if list:
+ extension = path[0].rsplit('.',1)[-1]
+ if self.playlistparsers.has_key(extension):
+ playlist = self.playlistparsers[extension]()
+ list = playlist.open(path[1])
for x in list:
self.playlist.addFile(x.ref)
- self.playlist.updateList()
+ self.playlist.updateList()
def delete_saved_playlist(self):
listpath = []
ext = text[-4:].lower()
# FIXME: the information if the service contains video (and we should hide our window) should com from the service instead
- if ext not in [".mp3", ".wav", ".ogg", "flac"] and not self.isAudioCD:
+ if ext not in [".mp2", ".mp3", ".wav", ".ogg", "flac"] and not self.isAudioCD:
self.hide()
else:
needsInfoUpdate = True
currref = self.playlist.getServiceRefList()[idx]
text = currref.getPath()
ext = text[-4:].lower()
- if ext not in [".mp3", ".wav", ".ogg", "flac"] and not self.isAudioCD:
+ if ext not in [".mp2", ".mp3", ".wav", ".ogg", "flac"] and not self.isAudioCD:
self.hide()
else:
needsInfoUpdate = True
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