X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fmisc%2Flua%2Fvlc.c;h=dc499033b36f68eb3db2a5b3b0f5707b8a4b6a90;hb=2d5d004768fa322a36b95524a05f0f52e7822469;hp=7e9c701ee42513ede3f78eba053cc639f83d208f;hpb=05492281965ed211badf7e1f4c2220be720d3356;p=vlc diff --git a/modules/misc/lua/vlc.c b/modules/misc/lua/vlc.c index 7e9c701ee4..dc499033b3 100644 --- a/modules/misc/lua/vlc.c +++ b/modules/misc/lua/vlc.c @@ -63,6 +63,18 @@ vlc_module_begin () set_capability( "art finder", 10 ) set_callbacks( FindArt, NULL ) + add_submodule () + set_shortname( N_( "Lua Meta Fetcher" ) ) + set_description( N_("Fetch meta data using lua scripts") ) + set_capability( "meta fetcher", 10 ) + set_callbacks( FetchMeta, NULL ) + + add_submodule () + set_shortname( N_( "Lua Meta Reader" ) ) + set_description( N_("Read meta data using lua scripts") ) + set_capability( "meta reader", 10 ) + set_callbacks( ReadMeta, NULL ) + add_submodule () add_shortcut( "luaplaylist" ) set_category( CAT_INPUT ) @@ -73,22 +85,33 @@ vlc_module_begin () set_callbacks( Import_LuaPlaylist, Close_LuaPlaylist ) add_submodule () - add_shortcut( "luaintf" ) + set_description( N_("Lua Interface Module (shortcuts)") ) add_shortcut( "luarc" ) - /* add_shortcut( "rc" ) */ + add_shortcut( "rc" ) + set_capability( "interface", 25 ) + set_callbacks( Open_LuaIntf, Close_LuaIntf ) + + add_submodule () + set_description( N_("Lua Interface Module") ) + add_shortcut( "luaintf" ) + add_shortcut( "luahttp" ) + add_shortcut( "http" ) + add_shortcut( "luatelnet" ) + add_shortcut( "telnet" ) add_shortcut( "luahotkeys" ) /* add_shortcut( "hotkeys" ) */ - add_shortcut( "luatelnet" ) - /* add_shortcut( "telnet" ) */ - add_shortcut( "luahttp" ) - /* add_shortcut( "http" ) */ - set_description( N_("Lua Interface Module") ) set_capability( "interface", 0 ) add_string( "lua-intf", "dummy", NULL, - INTF_TEXT, INTF_LONGTEXT, false ); + INTF_TEXT, INTF_LONGTEXT, false ) add_string( "lua-config", "", NULL, - CONFIG_TEXT, CONFIG_LONGTEXT, false ); + CONFIG_TEXT, CONFIG_LONGTEXT, false ) set_callbacks( Open_LuaIntf, Close_LuaIntf ) + + add_submodule () + set_shortname( N_("Lua Extension") ) + add_shortcut( "luaextension" ) + set_capability( "extension", 1 ) + set_callbacks( Open_Extension, Close_Extension ) vlc_module_end () /***************************************************************************** @@ -105,10 +128,10 @@ static int file_compare( const char **a, const char **b ) return strcmp( *a, *b ); } -int vlclua_dir_list( const char *luadirname, char **ppsz_dir_list ) +int vlclua_dir_list( vlc_object_t *p_this, const char *luadirname, char **ppsz_dir_list ) { int i = 0; - char *datadir = config_GetUserDataDir(); + char *datadir = config_GetUserDir( VLC_DATA_DIR ); if( datadir == NULL ) return VLC_ENOMEM; @@ -121,25 +144,26 @@ int vlclua_dir_list( const char *luadirname, char **ppsz_dir_list ) free( datadir ); i++; + char *psz_datapath = config_GetDataDir( p_this ); # if defined(__APPLE__) || defined(SYS_BEOS) || defined(WIN32) { - const char *psz_vlcpath = config_GetDataDir(); if( asprintf( &ppsz_dir_list[i], "%s" DIR_SEP "lua" DIR_SEP "%s", - psz_vlcpath, luadirname ) < 0 ) + psz_datapath, luadirname ) < 0 ) return VLC_ENOMEM; i++; if( asprintf( &ppsz_dir_list[i], "%s" DIR_SEP "share" DIR_SEP "lua" DIR_SEP "%s", - psz_vlcpath, luadirname ) < 0 ) + psz_datapath, luadirname ) < 0 ) return VLC_ENOMEM; i++; } # else if( asprintf( &ppsz_dir_list[i], "%s" DIR_SEP "lua" DIR_SEP "%s", - config_GetDataDir (), luadirname ) < 0 ) + psz_datapath, luadirname ) < 0 ) return VLC_ENOMEM; i++; # endif + free( psz_datapath ); return VLC_SUCCESS; } @@ -169,7 +193,7 @@ int vlclua_scripts_batch_execute( vlc_object_t *p_this, char *ppsz_dir_list[] = { NULL, NULL, NULL, NULL }; char **ppsz_dir; - i_ret = vlclua_dir_list( luadirname, ppsz_dir_list ); + i_ret = vlclua_dir_list( p_this, luadirname, ppsz_dir_list ); if( i_ret != VLC_SUCCESS ) return i_ret; i_ret = VLC_EGENERIC; @@ -317,7 +341,7 @@ void __vlclua_read_custom_meta_data( vlc_object_t *p_this, lua_State *L, psz_meta_category, psz_meta_name, psz_meta_value ); input_item_AddInfo( p_input, psz_meta_category, - psz_meta_name, psz_meta_value ); + psz_meta_name, "%s", psz_meta_value ); } lua_pop( L, 1 ); /* pop item */ /* ... item meta key value key2 */ @@ -436,6 +460,7 @@ int __vlclua_playlist_add_internal( vlc_object_t *p_this, lua_State *L, p_input = input_item_NewExt( p_playlist, psz_path, psz_name, i_options, (const char **)ppsz_options, + VLC_INPUT_OPTION_TRUSTED, i_duration ); lua_pop( L, 3 ); /* pop "path name item" */ /* playlist key item */ @@ -448,11 +473,13 @@ int __vlclua_playlist_add_internal( vlc_object_t *p_this, lua_State *L, /* Append item to playlist */ if( p_parent ) /* Add to node */ - input_item_AddSubItem( p_parent, p_input ); + { + input_item_PostSubItem( p_parent, p_input ); + } else /* Play or Enqueue (preparse) */ /* FIXME: playlist_AddInput() can fail */ playlist_AddInput( p_playlist, p_input, - PLAYLIST_APPEND | + PLAYLIST_APPEND | ( b_play ? PLAYLIST_GO : PLAYLIST_PREPARSE ), PLAYLIST_END, true, false ); i_count ++; /* increment counter */