Author: duncan
Date: Wed Jan 23 15:10:40 2008
New Revision: 10307
Log:
[ 1872465 ] m3u parsing error
Fix applied to check for urls and to chdir first
Modified:
branches/rel-1-7/freevo/ChangeLog
branches/rel-1-7/freevo/src/playlist.py
branches/rel-1/freevo/ChangeLog
branches/rel-1/freevo/src/playlist.py
Modified: branches/rel-1-7/freevo/ChangeLog
==============================================================================
--- branches/rel-1-7/freevo/ChangeLog (original)
+++ branches/rel-1-7/freevo/ChangeLog Wed Jan 23 15:10:40 2008
@@ -36,7 +36,8 @@
* Updated xine video plug-in to show OSD messages (F#1861770)
* Deleted plug-in weather, moved to contrib/plugins (F#1863476)
* Fixed apple trailers plug-in crashing (B#1861463)
- * Fixed audio playlists when the the fxd file contains utf-8 characters
(B#1865272)
+ * Fixed audio play lists when the fxd file contains utf-8 characters
(B#1865272)
+ * Fixed audio play lists when the fxd file contains absolute paths and urls
(B#1872465)
* Fixed audio cdbackup not showing the alert message when there is no data
from freedb (B#1869928)
* Fixed manual record tv plug-in to work in December (B#1858008)
* Fixed oneclick weather plug-in to allow non-ascii location names (B#1856597)
Modified: branches/rel-1-7/freevo/src/playlist.py
==============================================================================
--- branches/rel-1-7/freevo/src/playlist.py (original)
+++ branches/rel-1-7/freevo/src/playlist.py Wed Jan 23 15:10:40 2008
@@ -90,8 +90,8 @@
"""
This is the (m3u) playlist reading function.
- Arguments: plsname - the playlist filename
- Returns: The list of interesting lines in the playlist
+ @param plsname: The playlist filename
+ @returns: The list of interesting lines in the playlist
"""
try:
lines = util.readfile(plsname)
@@ -107,11 +107,19 @@
return 0
(curdir, playlistname) = os.path.split(plsname)
+ #XXX this may not work if the curdir is not accessible
+ os.chdir(curdir)
for line in playlist_lines:
line = line.replace('\\', '/') # Fix MSDOS slashes
try:
- if os.path.exists(os.path.abspath(line)):
- self.playlist.append(os.path.abspath(line))
+ if line.find('://') > 0:
+ self.playlist.append(line)
+ elif os.path.isabs(line):
+ if os.path.exists(line):
+ self.playlist.append(line)
+ else:
+ if os.path.exists(os.path.abspath(os.path.join(curdir,
line))):
+
self.playlist.append(os.path.abspath(os.path.join(curdir, line)))
except TypeError:
print 'Bad m3u playlist line in "%s":%r' % (plsname, line)
@@ -139,11 +147,18 @@
line[numchars:]
(curdir, playlistname) = os.path.split(plsname)
+ os.chdir(curdir)
for line in playlist_lines:
if line.endswith('\r\n'):
line = line.replace('\\', '/') # Fix MSDOS slashes
- if os.path.exists(os.path.abspath(line)):
- self.playlist.append(os.path.abspath(line))
+ if line.find('://') > 0:
+ self.playlist.append(line)
+ elif os.path.isabs(line):
+ if os.path.exists(line):
+ self.playlist.append(line)
+ else:
+ if os.path.exists(os.path.abspath(os.path.join(curdir, line))):
+ self.playlist.append(os.path.abspath(os.path.join(curdir,
line)))
@@ -162,6 +177,7 @@
"""
(curdir, playlistname) = os.path.split(ssrname)
+ os.chdir(curdir)
out_lines = []
try:
lines = util.readfile(ssrname)
@@ -173,15 +189,12 @@
playlist_lines = filter(lambda l: l[0] != '#', lines)
- """
- Here's where we parse the line. See the format above.
- TODO: Make the search case insensitive
- """
+ # Here's where we parse the line. See the format above.
for line in playlist_lines:
tmp_list = []
- ss_name = re.findall('FileName: \"(.*?)\"', line)
- ss_caption = re.findall('Caption: \"(.*?)\"', line)
- ss_delay = re.findall('Delay: \"(.*?)\"', line)
+ ss_name = re.findall('FileName: \"(.*?)\"', line, re.I)
+ ss_caption = re.findall('Caption: \"(.*?)\"', line, re.I)
+ ss_delay = re.findall('Delay: \"(.*?)\"', line, re.I)
if ss_name != []:
if ss_caption == []:
@@ -190,7 +203,11 @@
ss_delay += [5]
for p in self.get_plugins:
- for i in p.get(self, [os.path.abspath(ss_name[0])]):
+ if os.path.isabs(ss_name[0]):
+ curdir = ss_name[0]
+ else:
+ curdir = os.path.abspath(os.path.join(curdir,
ss_name[0]))
+ for i in p.get(self, [curdir]):
if i.type == 'image':
i.name = Unicode(ss_caption[0])
i.duration = int(ss_delay[0])
Modified: branches/rel-1/freevo/ChangeLog
==============================================================================
--- branches/rel-1/freevo/ChangeLog (original)
+++ branches/rel-1/freevo/ChangeLog Wed Jan 23 15:10:40 2008
@@ -41,7 +41,8 @@
* Updated xine video plug-in to show OSD messages (F#1861770)
* Deleted plug-in weather, moved to contrib/plugins (F#1863476)
* Fixed apple trailers plug-in crashing (B#1861463)
- * Fixed audio playlists when the the fxd file contains utf-8 characters
(B#1865272)
+ * Fixed audio play lists when the fxd file contains utf-8 characters
(B#1865272)
+ * Fixed audio play lists when the fxd file contains absolute paths and urls
(B#1872465)
* Fixed audio cdbackup not showing the alert message when there is no data
from freedb (B#1869928)
* Fixed manual record tv plug-in to work in December (B#1858008)
* Fixed oneclick weather plug-in to allow non-ascii location names (B#1856597)
Modified: branches/rel-1/freevo/src/playlist.py
==============================================================================
--- branches/rel-1/freevo/src/playlist.py (original)
+++ branches/rel-1/freevo/src/playlist.py Wed Jan 23 15:10:40 2008
@@ -90,8 +90,8 @@
"""
This is the (m3u) playlist reading function.
- Arguments: plsname - the playlist filename
- Returns: The list of interesting lines in the playlist
+ @param plsname: The playlist filename
+ @returns: The list of interesting lines in the playlist
"""
try:
lines = util.readfile(plsname)
@@ -107,11 +107,19 @@
return 0
(curdir, playlistname) = os.path.split(plsname)
+ #XXX this may not work if the curdir is not accessible
+ os.chdir(curdir)
for line in playlist_lines:
line = line.replace('\\', '/') # Fix MSDOS slashes
try:
- if os.path.exists(os.path.abspath(line)):
- self.playlist.append(os.path.abspath(line))
+ if line.find('://') > 0:
+ self.playlist.append(line)
+ elif os.path.isabs(line):
+ if os.path.exists(line):
+ self.playlist.append(line)
+ else:
+ if os.path.exists(os.path.abspath(os.path.join(curdir,
line))):
+
self.playlist.append(os.path.abspath(os.path.join(curdir, line)))
except TypeError:
print 'Bad m3u playlist line in "%s":%r' % (plsname, line)
@@ -139,11 +147,18 @@
line[numchars:]
(curdir, playlistname) = os.path.split(plsname)
+ os.chdir(curdir)
for line in playlist_lines:
if line.endswith('\r\n'):
line = line.replace('\\', '/') # Fix MSDOS slashes
- if os.path.exists(os.path.abspath(line)):
- self.playlist.append(os.path.abspath(line))
+ if line.find('://') > 0:
+ self.playlist.append(line)
+ elif os.path.isabs(line):
+ if os.path.exists(line):
+ self.playlist.append(line)
+ else:
+ if os.path.exists(os.path.abspath(os.path.join(curdir, line))):
+ self.playlist.append(os.path.abspath(os.path.join(curdir,
line)))
@@ -162,6 +177,7 @@
"""
(curdir, playlistname) = os.path.split(ssrname)
+ os.chdir(curdir)
out_lines = []
try:
lines = util.readfile(ssrname)
@@ -173,15 +189,12 @@
playlist_lines = filter(lambda l: l[0] != '#', lines)
- """
- Here's where we parse the line. See the format above.
- TODO: Make the search case insensitive
- """
+ # Here's where we parse the line. See the format above.
for line in playlist_lines:
tmp_list = []
- ss_name = re.findall('FileName: \"(.*?)\"', line)
- ss_caption = re.findall('Caption: \"(.*?)\"', line)
- ss_delay = re.findall('Delay: \"(.*?)\"', line)
+ ss_name = re.findall('FileName: \"(.*?)\"', line, re.I)
+ ss_caption = re.findall('Caption: \"(.*?)\"', line, re.I)
+ ss_delay = re.findall('Delay: \"(.*?)\"', line, re.I)
if ss_name != []:
if ss_caption == []:
@@ -190,7 +203,11 @@
ss_delay += [5]
for p in self.get_plugins:
- for i in p.get(self, [os.path.abspath(ss_name[0])]):
+ if os.path.isabs(ss_name[0]):
+ curdir = ss_name[0]
+ else:
+ curdir = os.path.abspath(os.path.join(curdir,
ss_name[0]))
+ for i in p.get(self, [curdir]):
if i.type == 'image':
i.name = Unicode(ss_caption[0])
i.duration = int(ss_delay[0])
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog