* Split download function in find/download
authorClément Stenac <zorglub@videolan.org>
Sun, 24 Sep 2006 17:11:25 +0000 (17:11 +0000)
committerClément Stenac <zorglub@videolan.org>
Sun, 24 Sep 2006 17:11:25 +0000 (17:11 +0000)
* Put meta related functions in src/input/meta.c
* Merge vlc_meta_engine.h and vlc_meta.h

Album art stuff is still broken, but I need to go now :)

include/vlc_input.h
include/vlc_meta.h
include/vlc_meta_engine.h [deleted file]
include/vlc_symbols.h
src/Makefile.am
src/input/input.c
src/input/meta.c [new file with mode: 0644]
src/misc/objects.c
src/playlist/engine.c

index ad59938..bf67e6e 100644 (file)
@@ -467,14 +467,16 @@ VLC_EXPORT( input_thread_t *, __input_CreateThread, ( vlc_object_t *, input_item
 VLC_EXPORT( input_thread_t *, __input_CreateThread2, ( vlc_object_t *, input_item_t *, char * ) );
 #define input_Preparse(a,b) __input_Preparse(VLC_OBJECT(a),b)
 VLC_EXPORT( int, __input_Preparse, ( vlc_object_t *, input_item_t * ) );
-#define input_SecondaryPreparse(a,b) __input_SecondaryPreparse(VLC_OBJECT(a),b)
-VLC_EXPORT( int, __input_SecondaryPreparse, ( vlc_object_t *, input_item_t * ) );
 
 #define input_Read(a,b,c) __input_Read(VLC_OBJECT(a),b, c)
 VLC_EXPORT( int, __input_Read, ( vlc_object_t *, input_item_t *, vlc_bool_t ) );
 VLC_EXPORT( void,             input_StopThread,     ( input_thread_t * ) );
 VLC_EXPORT( void,             input_DestroyThread,  ( input_thread_t * ) );
 
+
+#define input_MetaFetch(a,b) __input_MetaFetch(VLC_OBJECT(a),b)
+VLC_EXPORT( int, __input_MetaFetch, ( vlc_object_t *, input_item_t * ) );
+
 enum input_query_e
 {
     /* input variable "position" */
index 5a6a88d..7f97fcb 100644 (file)
@@ -191,4 +191,38 @@ struct meta_export_t
     const char *psz_file;
 };
 
+#define VLC_META_ENGINE_TITLE           0x00000001
+#define VLC_META_ENGINE_AUTHOR          0x00000002
+#define VLC_META_ENGINE_ARTIST          0x00000004
+#define VLC_META_ENGINE_GENRE           0x00000008
+#define VLC_META_ENGINE_COPYRIGHT       0x00000010
+#define VLC_META_ENGINE_COLLECTION      0x00000020
+#define VLC_META_ENGINE_SEQ_NUM         0x00000040
+#define VLC_META_ENGINE_DESCRIPTION     0x00000080
+#define VLC_META_ENGINE_RATING          0x00000100
+#define VLC_META_ENGINE_DATE            0x00000200
+#define VLC_META_ENGINE_URL             0x00000400
+#define VLC_META_ENGINE_LANGUAGE        0x00000800
+
+#define VLC_META_ENGINE_ART_URL         0x00001000
+
+#define VLC_META_ENGINE_MB_ARTIST_ID    0x00002000
+#define VLC_META_ENGINE_MB_RELEASE_ID   0x00004000
+#define VLC_META_ENGINE_MB_TRACK_ID     0x00008000
+#define VLC_META_ENGINE_MB_TRM_ID       0x00010000
+
+typedef struct meta_engine_sys_t meta_engine_sys_t;
+
+struct meta_engine_t
+{
+    VLC_COMMON_MEMBERS
+
+    module_t *p_module;
+
+    uint32_t i_mandatory; /**< Stuff which we really need to get */
+    uint32_t i_optional; /**< Stuff which we'd like to have */
+
+    input_item_t *p_item;
+};
+
 #endif
diff --git a/include/vlc_meta_engine.h b/include/vlc_meta_engine.h
deleted file mode 100644 (file)
index f7211e3..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*****************************************************************************
- * vlc_meta_engine.h: meta engine module.
- *****************************************************************************
- * Copyright (C) 2006 the VideoLAN team
- * $Id$
- *
- * Authors: Antoine Cellerier <dionoea A videolan D org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#ifndef _VLC_META_ENGINE_H
-#define _VLC_META_ENGINE_H
-
-#include "vlc_meta.h"
-
-#define VLC_META_ENGINE_TITLE           0x00000001
-#define VLC_META_ENGINE_AUTHOR          0x00000002
-#define VLC_META_ENGINE_ARTIST          0x00000004
-#define VLC_META_ENGINE_GENRE           0x00000008
-#define VLC_META_ENGINE_COPYRIGHT       0x00000010
-#define VLC_META_ENGINE_COLLECTION      0x00000020
-#define VLC_META_ENGINE_SEQ_NUM         0x00000040
-#define VLC_META_ENGINE_DESCRIPTION     0x00000080
-#define VLC_META_ENGINE_RATING          0x00000100
-#define VLC_META_ENGINE_DATE            0x00000200
-#define VLC_META_ENGINE_URL             0x00000400
-#define VLC_META_ENGINE_LANGUAGE        0x00000800
-
-#define VLC_META_ENGINE_ART_URL         0x00001000
-
-#define VLC_META_ENGINE_MB_ARTIST_ID    0x00002000
-#define VLC_META_ENGINE_MB_RELEASE_ID   0x00004000
-#define VLC_META_ENGINE_MB_TRACK_ID     0x00008000
-#define VLC_META_ENGINE_MB_TRM_ID       0x00010000
-
-typedef struct meta_engine_sys_t meta_engine_sys_t;
-
-struct meta_engine_t
-{
-    VLC_COMMON_MEMBERS
-
-    module_t *p_module;
-
-    uint32_t i_mandatory; /**< Stuff which we really need to get */
-    uint32_t i_optional; /**< Stuff which we'd like to have */
-
-    input_item_t *p_item;
-};
-
-#endif
index 601b3d8..a228d85 100644 (file)
@@ -538,11 +538,12 @@ struct module_symbols_t
     void (*aout_EnableFilter_inner) (vlc_object_t *, const char *, vlc_bool_t);
     void (*playlist_NodesPairCreate_inner) (playlist_t *, char *, playlist_item_t **, playlist_item_t **, vlc_bool_t);
     char * (*aout_VisualChange_inner) (vlc_object_t *, int);
-    int (*__input_SecondaryPreparse_inner) (vlc_object_t *, input_item_t *);
+    void *__input_SecondaryPreparse_deprecated;
     void (*input_ItemAddOption_inner) (input_item_t *, const char *);
     char * (*input_ItemGetInfo_inner) (input_item_t *p_i, const char *psz_cat,const char *psz_name);
     int (*input_ItemAddInfo_inner) (input_item_t *p_i, const char *psz_cat, const char *psz_name, const char *psz_format, ...);
     void (*input_ItemAddOptionNoDup_inner) (input_item_t *, const char *);
+    int (*__input_MetaFetch_inner) (vlc_object_t *, input_item_t *);
 };
 # if defined (__PLUGIN__)
 #  define aout_FiltersCreatePipeline (p_symbols)->aout_FiltersCreatePipeline_inner
@@ -1012,11 +1013,11 @@ struct module_symbols_t
 #  define aout_EnableFilter (p_symbols)->aout_EnableFilter_inner
 #  define playlist_NodesPairCreate (p_symbols)->playlist_NodesPairCreate_inner
 #  define aout_VisualChange (p_symbols)->aout_VisualChange_inner
-#  define __input_SecondaryPreparse (p_symbols)->__input_SecondaryPreparse_inner
 #  define input_ItemAddOption (p_symbols)->input_ItemAddOption_inner
 #  define input_ItemGetInfo (p_symbols)->input_ItemGetInfo_inner
 #  define input_ItemAddInfo (p_symbols)->input_ItemAddInfo_inner
 #  define input_ItemAddOptionNoDup (p_symbols)->input_ItemAddOptionNoDup_inner
+#  define __input_MetaFetch (p_symbols)->__input_MetaFetch_inner
 # elif defined (HAVE_DYNAMIC_PLUGINS) && !defined (__BUILTIN__)
 /******************************************************************
  * STORE_SYMBOLS: store VLC APIs into p_symbols for plugin access.
@@ -1489,11 +1490,11 @@ struct module_symbols_t
     ((p_symbols)->aout_EnableFilter_inner) = aout_EnableFilter; \
     ((p_symbols)->playlist_NodesPairCreate_inner) = playlist_NodesPairCreate; \
     ((p_symbols)->aout_VisualChange_inner) = aout_VisualChange; \
-    ((p_symbols)->__input_SecondaryPreparse_inner) = __input_SecondaryPreparse; \
     ((p_symbols)->input_ItemAddOption_inner) = input_ItemAddOption; \
     ((p_symbols)->input_ItemGetInfo_inner) = input_ItemGetInfo; \
     ((p_symbols)->input_ItemAddInfo_inner) = input_ItemAddInfo; \
     ((p_symbols)->input_ItemAddOptionNoDup_inner) = input_ItemAddOptionNoDup; \
+    ((p_symbols)->__input_MetaFetch_inner) = __input_MetaFetch; \
     (p_symbols)->net_ConvertIPv4_deprecated = NULL; \
     (p_symbols)->vlc_input_item_GetInfo_deprecated = NULL; \
     (p_symbols)->vlc_input_item_AddInfo_deprecated = NULL; \
@@ -1546,6 +1547,7 @@ struct module_symbols_t
     (p_symbols)->__intf_IntfProgressUpdate_deprecated = NULL; \
     (p_symbols)->__intf_IntfProgress_deprecated = NULL; \
     (p_symbols)->streaming_ChainToPsz_deprecated = NULL; \
+    (p_symbols)->__input_SecondaryPreparse_deprecated = NULL; \
 
 # endif /* __PLUGIN__ */
 #endif /* __VLC_SYMBOLS_H */
index b047a3c..22eced9 100644 (file)
@@ -275,6 +275,7 @@ SOURCES_libvlc_common = \
        input/demux.c \
        input/es_out.c \
        input/input.c \
+       input/meta.c \
        input/input_internal.h \
        input/stream.c \
        input/mem_stream.c \
index b7da2ed..e0c9e4c 100644 (file)
@@ -39,7 +39,6 @@
 #include "vlc_playlist.h"
 #include "vlc_interface.h"
 #include "vlc_interaction.h"
-#include "vlc_meta_engine.h"
 
 #include "charset.h"
 
@@ -349,47 +348,6 @@ int __input_Preparse( vlc_object_t *p_parent, input_item_t *p_item )
     return VLC_SUCCESS;
 }
 
-int __input_SecondaryPreparse( vlc_object_t *p_parent, input_item_t *p_item )
-{
-    struct meta_engine_t *p_me;
-
-    /* FIXME: don't launch any module if we already have all the needed
-     * info. Easiest way to do this would be to add a dummy module.
-     * I'll do that later */
-
-    p_me = vlc_object_create( p_parent, VLC_OBJECT_META_ENGINE );
-    p_me->i_flags |= OBJECT_FLAGS_NOINTERACT;
-    p_me->i_mandatory =   VLC_META_ENGINE_TITLE
-                        | VLC_META_ENGINE_ARTIST;
-    p_me->i_optional = 0;
-/*
-    if( var_CreateGetInteger( p_parent, "album-art" ) != ALBUM_ART_NEVER )
-    {
-        p_me->i_mandatory |= VLC_META_ENGINE_ART_URL;
-    }
-    else
-    {
-        p_me->i_optional |= VLC_META_ENGINE_ART_URL;
-    }
-*/
-    p_me->p_item = p_item;
-    p_me->p_module = module_Need( p_me, "meta fetcher", 0, VLC_FALSE );
-    vlc_object_attach( p_me, p_parent );
-    if( !p_me->p_module )
-    {
-        msg_Err( p_parent, "no suitable meta engine module" );
-        vlc_object_detach( p_me );
-        vlc_object_destroy( p_me );
-        return VLC_EGENERIC;
-    }
-
-    module_Unneed( p_me, p_me->p_module );
-
-    vlc_object_destroy( p_me );
-
-    return VLC_SUCCESS;
-}
-
 /**
  * Request a running input thread to stop and die
  *
@@ -2529,96 +2487,3 @@ vlc_bool_t input_AddSubtitles( input_thread_t *p_input, char *psz_subtitle,
 
     return VLC_TRUE;
 }
-
-#ifndef MAX_PATH
-#   define MAX_PATH 250
-#endif
-int input_DownloadAndCacheArt( vlc_object_t *p_parent, input_item_t *p_item )
-{
-    char *psz_artist;
-    char *psz_album;
-    char *psz_type;
-    char *psz_filename;
-    int i_status = VLC_EGENERIC;
-    int i_ret;
-    struct stat a;
-
-    if( !p_item->p_meta
-        || !p_item->p_meta->psz_arturl
-        || !*p_item->p_meta->psz_arturl )
-    {
-        return VLC_EGENERIC;
-    }
-    if( !strncmp( p_item->p_meta->psz_arturl, "file", 4 ) )
-    {
-        return VLC_SUCCESS;
-    }
-
-    psz_artist = p_item->p_meta->psz_artist;
-    psz_album = p_item->p_meta->psz_album;
-    psz_type = strrchr( p_item->p_meta->psz_arturl, '.' );
-    psz_filename = (char *)malloc( MAX_PATH );
-
-
-    snprintf( psz_filename, MAX_PATH,
-              "file://%s" DIR_SEP CONFIG_DIR DIR_SEP "art"
-              DIR_SEP "%s" DIR_SEP "%s" DIR_SEP "art%s",
-              p_parent->p_libvlc->psz_homedir,
-              psz_artist, psz_album, psz_type );
-    msg_Dbg( p_parent, "Saving album art to %s", psz_filename );
-
-    /* Check if file exists */
-    i_ret = utf8_stat( psz_filename+7, &a );
-    if( i_ret == 0 )
-    {
-        msg_Dbg( p_parent, "Album art %s already exists", psz_filename );
-    }
-    else
-    {
-        //if( i_ret == -1 && errno == ENOTDIR )
-        {
-            /* GRUIKKKKKKKKKK (make sure that all the directories exist) */
-            char *psz_dir = malloc( MAX_PATH );
-            snprintf( psz_dir, MAX_PATH, "%s" DIR_SEP CONFIG_DIR,
-                      p_parent->p_libvlc->psz_homedir );
-            utf8_mkdir( psz_dir );
-            snprintf( psz_dir, MAX_PATH, "%s" DIR_SEP CONFIG_DIR DIR_SEP "art",
-                      p_parent->p_libvlc->psz_homedir );
-            utf8_mkdir( psz_dir );
-            snprintf( psz_dir, MAX_PATH, "%s" DIR_SEP CONFIG_DIR DIR_SEP
-                      "art" DIR_SEP "%s",
-                      p_parent->p_libvlc->psz_homedir, psz_artist );
-            utf8_mkdir( psz_dir );
-            snprintf( psz_dir, MAX_PATH, "%s" DIR_SEP CONFIG_DIR DIR_SEP
-                      "art" DIR_SEP "%s" DIR_SEP "%s",
-                      p_parent->p_libvlc->psz_homedir,
-                      psz_artist, psz_album );
-            utf8_mkdir( psz_dir );
-            free( psz_dir );
-        }
-
-        stream_t *p_stream = stream_UrlNew( p_parent,
-                                            p_item->p_meta->psz_arturl );
-
-        if( p_stream )
-        {
-            void *p_buffer = malloc( 1<<16 );
-            long int l_read;
-            FILE *p_file = utf8_fopen( psz_filename+7, "w" );
-            while( ( l_read = stream_Read( p_stream, p_buffer, 1<<16 ) ) )
-            {
-                fwrite( p_buffer, l_read, 1, p_file );
-            }
-            free( p_buffer );
-            fclose( p_file );
-            stream_Delete( p_stream );
-            msg_Dbg( p_parent, "Album art saved to %s\n", psz_filename );
-            free( p_item->p_meta->psz_arturl );
-            p_item->p_meta->psz_arturl = strdup( psz_filename );
-            i_status = VLC_SUCCESS;
-        }
-    }
-    free( psz_filename );
-
-    return i_status;
-}
diff --git a/src/input/meta.c b/src/input/meta.c
new file mode 100644 (file)
index 0000000..33cca2e
--- /dev/null
@@ -0,0 +1,183 @@
+/*****************************************************************************
+ * meta.c : Metadata handling
+ *****************************************************************************
+ * Copyright (C) 1998-2004 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Antoine Cellerier <dionoea@videolan.org>
+ *          Clément Stenac <zorglub@videolan.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#include <vlc/vlc.h>
+#include <vlc/input.h>
+#include <vlc_meta.h>
+#include "vlc_playlist.h"
+#include "charset.h"
+
+#ifdef HAVE_SYS_STAT_H
+#   include <sys/stat.h>
+#endif
+
+int __input_MetaFetch( vlc_object_t *p_parent, input_item_t *p_item )
+{
+    struct meta_engine_t *p_me;
+
+    /* FIXME: don't launch any module if we already have all the needed
+     * info. Easiest way to do this would be to add a dummy module.
+     * I'll do that later */
+
+    p_me = vlc_object_create( p_parent, VLC_OBJECT_META_ENGINE );
+    p_me->i_flags |= OBJECT_FLAGS_NOINTERACT;
+    p_me->i_mandatory =   VLC_META_ENGINE_TITLE
+                        | VLC_META_ENGINE_ARTIST;
+    p_me->i_optional = 0;
+/*
+    if( var_CreateGetInteger( p_parent, "album-art" ) != ALBUM_ART_NEVER )
+    {
+        p_me->i_mandatory |= VLC_META_ENGINE_ART_URL;
+    }
+    else
+    {
+        p_me->i_optional |= VLC_META_ENGINE_ART_URL;
+    }
+*/
+    p_me->p_item = p_item;
+    p_me->p_module = module_Need( p_me, "meta fetcher", 0, VLC_FALSE );
+    vlc_object_attach( p_me, p_parent );
+    if( !p_me->p_module )
+    {
+        msg_Err( p_parent, "no suitable meta engine module" );
+        vlc_object_detach( p_me );
+        vlc_object_destroy( p_me );
+        return VLC_EGENERIC;
+    }
+
+    module_Unneed( p_me, p_me->p_module );
+
+    vlc_object_destroy( p_me );
+
+    return VLC_SUCCESS;
+}
+
+#ifndef MAX_PATH
+#   define MAX_PATH 250
+#endif
+int input_FindArt( vlc_object_t *p_parent, input_item_t *p_item )
+{
+    char *psz_artist;
+    char *psz_album;
+    char *psz_type;
+    char psz_filename[MAX_PATH];
+    int i_ret;
+    struct stat a;
+
+    if( !p_item->p_meta ) return VLC_EGENERIC;
+
+    psz_artist = p_item->p_meta->psz_artist;
+    psz_album = p_item->p_meta->psz_album;
+
+    //FIXME !!!!!
+    psz_type = strdup( "jpg" );
+
+    snprintf( psz_filename, MAX_PATH,
+              "file://%s" DIR_SEP CONFIG_DIR DIR_SEP "art"
+              DIR_SEP "%s" DIR_SEP "%s" DIR_SEP "art%s",
+              p_parent->p_libvlc->psz_homedir,
+              psz_artist, psz_album, psz_type );
+
+    /* Check if file exists */
+    i_ret = utf8_stat( psz_filename+7, &a );
+    if( i_ret == 0 )
+    {
+        msg_Dbg( p_parent, "album art %s already exists in cache"
+                         , psz_filename );
+        return VLC_SUCCESS;
+    }
+    else
+    {
+        /* Use a art finder module to find the URL */
+        return VLC_EGENERIC;
+    }
+}
+
+/**
+ * Download the art using the URL or an art downloaded
+ * This function should be called only if data is not already in cache
+ */
+int input_DownloadAndCacheArt( vlc_object_t *p_parent, input_item_t *p_item )
+{
+    int i_status = VLC_EGENERIC;
+    int i_ret;
+    struct stat a;
+    stream_t *p_stream;
+    char psz_filename[MAX_PATH], psz_dir[MAX_PATH];
+    char *psz_artist;
+    char *psz_album;
+    char *psz_type;
+    psz_artist = p_item->p_meta->psz_artist;
+    psz_album = p_item->p_meta->psz_album;
+
+    /* You dummy ! How am I supposed to download NULL ? */
+    if( !p_item->p_meta || !p_item->p_meta->psz_arturl
+                        || !*p_item->p_meta->psz_arturl )
+        return VLC_EGENERIC;
+
+    /* Todo: get a helper to do this */
+    snprintf( psz_filename, MAX_PATH,
+              "file://%s" DIR_SEP CONFIG_DIR DIR_SEP "art"
+              DIR_SEP "%s" DIR_SEP "%s" DIR_SEP "art%s",
+              p_parent->p_libvlc->psz_homedir,
+              psz_artist, psz_album, psz_type );
+
+    snprintf( psz_dir, MAX_PATH, "%s" DIR_SEP CONFIG_DIR,
+              p_parent->p_libvlc->psz_homedir );
+    utf8_mkdir( psz_dir );
+    snprintf( psz_dir, MAX_PATH, "%s" DIR_SEP CONFIG_DIR DIR_SEP "art",
+              p_parent->p_libvlc->psz_homedir );
+    utf8_mkdir( psz_dir );
+    snprintf( psz_dir, MAX_PATH, "%s" DIR_SEP CONFIG_DIR DIR_SEP
+              "art" DIR_SEP "%s",
+                 p_parent->p_libvlc->psz_homedir, psz_artist );
+    utf8_mkdir( psz_dir );
+    snprintf( psz_dir, MAX_PATH, "%s" DIR_SEP CONFIG_DIR DIR_SEP
+              "art" DIR_SEP "%s" DIR_SEP "%s",
+                      p_parent->p_libvlc->psz_homedir,
+                      psz_artist, psz_album );
+    utf8_mkdir( psz_dir );
+
+    /* Todo: check for stuff that needs a downloader module */
+    p_stream = stream_UrlNew( p_parent, p_item->p_meta->psz_arturl );
+
+    if( p_stream )
+    {
+        void *p_buffer = malloc( 1<<16 );
+        long int l_read;
+        FILE *p_file = utf8_fopen( psz_filename+7, "w" );
+        while( ( l_read = stream_Read( p_stream, p_buffer, 1<<16 ) ) )
+        {
+            fwrite( p_buffer, l_read, 1, p_file );
+        }
+        free( p_buffer );
+        fclose( p_file );
+        stream_Delete( p_stream );
+        msg_Dbg( p_parent, "Album art saved to %s\n", psz_filename );
+        free( p_item->p_meta->psz_arturl );
+        p_item->p_meta->psz_arturl = strdup( psz_filename );
+        i_status = VLC_SUCCESS;
+    }
+    return i_status;
+}
index cca0fbe..e25ac1b 100644 (file)
@@ -56,7 +56,7 @@
 #include "vlc_tls.h"
 #include "vlc_xml.h"
 #include "vlc_osd.h"
-#include "vlc_meta_engine.h"
+#include "vlc_meta.h"
 
 /*****************************************************************************
  * Local prototypes
index efbec73..b360bfe 100644 (file)
@@ -532,7 +532,7 @@ void playlist_SecondaryPreparseLoop( playlist_preparse_t *p_obj )
         vlc_mutex_unlock( &p_obj->object_lock );
         if( p_current )
         {
-            input_SecondaryPreparse( p_playlist, p_current );
+            input_MetaFetch( p_playlist, p_current );
             p_current->p_meta->i_status |= ITEM_META_FETCHED;
             var_SetInteger( p_playlist, "item-change", p_current->i_id );
             vlc_gc_decref( p_current );