[vlc-devel] How to make relative paths in local xspf playlists work?
Michael A. Puls II
shadow2531 at gmail.com
Thu Jul 30 18:06:34 CEST 2009
On Thu, 30 Jul 2009 10:33:24 -0400, Rémi <Denis-Courmont"
<remi at remlab.net>> wrote:
> Le jeudi 30 juillet 2009 16:24:44 Michael A. Puls II, vous avez écrit :
>> I think that would solve the "psz_base should default to the XSPF
>> resource
>> location" problem mentioned at
>> <https://trac.videolan.org/vlc/browser/modules/demux/playlist/xspf.c#L562>,
>> which will make relative paths in local xspf files work.
>
> Not really. Sure, you can get the base URL from the demux_t.psz_path,
> but you
> still need to implement the algorithm to resolve an absolute URI from a
> base
> absolute URI and a relative URI... gcc is not going to do it for us.
Thanks
So, you're saying the full deal is needed like URI parser does it?
<http://uriparser.sourceforge.net/doc/html/#filenames>
<http://uriparser.sourceforge.net/doc/html/>
However, my original thinking was that for dragging and dropping .xspf
files onto vlc or using file -> open -> file.xspf, you'd always get an
absolute path to work with. And, the same would apply for "vlc.exe"
"absolute path to local playlist.xspf".
"vlc.exe" "relative path to local .xspf file" just still wouldn't work for
relative location paths in the file, but things would perhaps be improved
for *some* of the situations.
Right now, I just workaround this by doing:
<playlist xml:base="absolute URI to directory the playlist is in">
and changing that if I move the playlist.
I have an idea of how things should fully work though. I can use Firefox
to simulate it.
1. Load an xspf file with XHR.
2. Get the textContent of a <location> element.
3. Create an HTMLAnchorElement (with the xspf xml doc as the
ownerDocument).
4. Set the anchor element's href to the textContent of the <location>
element.
5. Append the anchor element to the <location> element.
6. Get the href property of the appended anchor element.
7. Remove the anchor element from the <location> element (as it's not
needed any more)
The keys there are:
#4 will resolve the URI (absolute or not or expansions etc.) to an
absolute URI based on the xspf file's path.
#5 will update the resolution to honor all the xml:base attributes in the
xspf xml document that apply to the <location> element
In short, you end up with absolute URI paths to the files all resolved and
normalized nicely. Of course, Firefox has a really nice XML parser with a
nice URI resolver/normalizer.
--
Michael
More information about the vlc-devel
mailing list