Commit 18c00a38 authored by Mario Speiß's avatar Mario Speiß Committed by Jean-Baptiste Kempf

Lua demuxers: show the original URL in playlist

If playlists containing youtube urls are exported or imported, these patches
improve the usability of the playlist.

Lua remembers the original url (i.e. the website _containing_ the content) if
no other url is passed by the lua parsers. It also puts the content title to
the meta-title entry.

XSPF export / import now uses the <info> to deal with the meta-url.
Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 251fdadd
...@@ -355,7 +355,7 @@ static bool parse_track_node COMPLEX_INTERFACE ...@@ -355,7 +355,7 @@ static bool parse_track_node COMPLEX_INTERFACE
{"title", {.smpl = set_item_info}, false }, {"title", {.smpl = set_item_info}, false },
{"creator", {.smpl = set_item_info}, false }, {"creator", {.smpl = set_item_info}, false },
{"annotation", {.smpl = set_item_info}, false }, {"annotation", {.smpl = set_item_info}, false },
{"info", {NULL}, false }, {"info", {.smpl = set_item_info}, false },
{"image", {.smpl = set_item_info}, false }, {"image", {.smpl = set_item_info}, false },
{"album", {.smpl = set_item_info}, false }, {"album", {.smpl = set_item_info}, false },
{"trackNum", {.smpl = set_item_info}, false }, {"trackNum", {.smpl = set_item_info}, false },
...@@ -545,6 +545,8 @@ static bool set_item_info SIMPLE_INTERFACE ...@@ -545,6 +545,8 @@ static bool set_item_info SIMPLE_INTERFACE
} }
else if (!strcmp(psz_name, "annotation")) else if (!strcmp(psz_name, "annotation"))
input_item_SetDescription(p_input, psz_value); input_item_SetDescription(p_input, psz_value);
else if (!strcmp(psz_name, "info"))
input_item_SetURL(p_input, psz_value);
else if (!strcmp(psz_name, "image")) else if (!strcmp(psz_name, "image"))
input_item_SetArtURL(p_input, psz_value); input_item_SetArtURL(p_input, psz_value);
return true; return true;
......
...@@ -486,6 +486,7 @@ int vlclua_playlist_add_internal( vlc_object_t *p_this, lua_State *L, ...@@ -486,6 +486,7 @@ int vlclua_playlist_add_internal( vlc_object_t *p_this, lua_State *L,
/* playlist key item path */ /* playlist key item path */
if( lua_isstring( L, -1 ) ) if( lua_isstring( L, -1 ) )
{ {
char *psz_oldurl = NULL;
const char *psz_path = NULL; const char *psz_path = NULL;
char *psz_u8path = NULL; char *psz_u8path = NULL;
const char *psz_name = NULL; const char *psz_name = NULL;
...@@ -495,6 +496,8 @@ int vlclua_playlist_add_internal( vlc_object_t *p_this, lua_State *L, ...@@ -495,6 +496,8 @@ int vlclua_playlist_add_internal( vlc_object_t *p_this, lua_State *L,
input_item_t *p_input; input_item_t *p_input;
/* Read path and name */ /* Read path and name */
psz_oldurl = input_item_GetURI( p_parent );
msg_Dbg( p_this, "old path: %s", psz_oldurl );
psz_path = lua_tostring( L, -1 ); psz_path = lua_tostring( L, -1 );
msg_Dbg( p_this, "Path: %s", psz_path ); msg_Dbg( p_this, "Path: %s", psz_path );
lua_getfield( L, -2, "name" ); lua_getfield( L, -2, "name" );
...@@ -542,6 +545,23 @@ int vlclua_playlist_add_internal( vlc_object_t *p_this, lua_State *L, ...@@ -542,6 +545,23 @@ int vlclua_playlist_add_internal( vlc_object_t *p_this, lua_State *L,
/* Read meta data: item must be on top of stack */ /* Read meta data: item must be on top of stack */
vlclua_read_meta_data( p_this, L, p_input ); vlclua_read_meta_data( p_this, L, p_input );
/* copy the original URL to the meta data, if "URL" is still empty */
char* url = input_item_GetURL( p_input );
if( url == NULL )
{
EnsureUTF8( psz_oldurl );
msg_Dbg( p_this, "meta-URL: %s", psz_oldurl );
input_item_SetURL ( p_input, psz_oldurl );
}
free( url );
free( psz_oldurl );
/* copy the psz_name to the meta data, if "Title" is still empty */
char* title = input_item_GetTitle( p_input );
if( title == NULL )
input_item_SetTitle ( p_input, psz_name );
free( title );
/* Read custom meta data: item must be on top of stack*/ /* Read custom meta data: item must be on top of stack*/
vlclua_read_custom_meta_data( p_this, L, p_input ); vlclua_read_custom_meta_data( p_this, L, p_input );
......
...@@ -127,6 +127,11 @@ static void xspf_export_item( playlist_item_t *p_item, FILE *p_file, ...@@ -127,6 +127,11 @@ static void xspf_export_item( playlist_item_t *p_item, FILE *p_file,
fprintf( p_file, "\t\t\t<annotation>%s</annotation>\n", psz ); fprintf( p_file, "\t\t\t<annotation>%s</annotation>\n", psz );
free( psz ); free( psz );
psz = input_xml( p_input, input_item_GetURL );
if( psz && *psz )
fprintf( p_file, "\t\t\t<info>%s</info>\n", psz );
free( psz );
psz = input_xml( p_input, input_item_GetArtURL ); psz = input_xml( p_input, input_item_GetArtURL );
if( psz && *psz ) if( psz && *psz )
fprintf( p_file, "\t\t\t<image>%s</image>\n", psz ); fprintf( p_file, "\t\t\t<image>%s</image>\n", psz );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment