#include "vlc_playlist.h"
#include "vlc_interface.h"
#include "vlc_interaction.h"
-#include "vlc_meta_engine.h"
#include "charset.h"
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
*
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;
-}