]> git.sesse.net Git - vlc/commitdiff
Skeleton for taglib art downloader and tags writer
authorClément Stenac <zorglub@videolan.org>
Sun, 24 Sep 2006 15:20:49 +0000 (15:20 +0000)
committerClément Stenac <zorglub@videolan.org>
Sun, 24 Sep 2006 15:20:49 +0000 (15:20 +0000)
include/vlc_common.h
include/vlc_meta.h
modules/meta_engine/taglib.cpp

index a97bdb74bf9e7ba0fd07559220a3382e7af3da52..00b4462f0138840473630f9f7ef9cbd880393044 100644 (file)
@@ -431,6 +431,7 @@ typedef struct vlm_schedule_t vlm_schedule_t;
 
 /* divers */
 typedef struct vlc_meta_t    vlc_meta_t;
+typedef struct meta_export_t meta_export_t;
 
 /* Stats */
 typedef struct counter_t     counter_t;
index ca59563cda8fc93c6ce240f87991c4c2b9d7c7bf..5a6a88dd32bf4190da899d24e09f599d9291c348 100644 (file)
@@ -185,4 +185,10 @@ enum {
     ALBUM_ART_WHEN_PLAYED,
     ALBUM_ART_ALL };
 
+struct meta_export_t
+{
+    input_item_t *p_item;
+    const char *psz_file;
+};
+
 #endif
index bab9eb2d4e1d1ec4a943606e517a77f5c0574c03..62ad579919f1ab41e658f9e89c4e677dc905813c 100644 (file)
 #include <mpegfile.h>
 #include <flacfile.h>
 
-static int  ReadMeta ( vlc_object_t * );
+static int  ReadMeta    ( vlc_object_t * );
+static int  DownloadArt ( vlc_object_t * );
+static int  WriteMeta   ( vlc_object_t * );
 
 vlc_module_begin();
     set_capability( "meta reader", 1000 );
     set_callbacks( ReadMeta, NULL );
+    add_submodule();
+        set_capability( "art downloader", 50 );
+        set_callbacks( DownloadArt, NULL );
+    add_submodule();
+        set_capability( "meta writer", 50 );
+        set_callbacks( WriteMeta, NULL );
 vlc_module_end();
 
 static bool checkID3Image( const TagLib::ID3v2::Tag *tag )
@@ -101,3 +109,29 @@ static int ReadMeta( vlc_object_t *p_this )
     }
     return VLC_EGENERIC;
 }
+
+static int WriteMeta( vlc_object_t *p_this )
+{
+    playlist_t *p_playlist = (playlist_t *)p_this;
+
+    meta_export_t *p_export = (meta_export_t *)p_playlist->p_private;
+    input_item_t *p_item = p_export->p_item;
+
+    TagLib::FileRef f( p_export->psz_file );
+    if( !f.isNull() && f.tag() )
+    {
+        TagLib::Tag *tag = f.tag();
+        tag->setArtist( p_item->p_meta->psz_artist );
+        f.save();
+        return VLC_SUCCESS;
+    }
+    return VLC_EGENERIC;
+}
+
+static int DownloadArt( vlc_object_t *p_this )
+{
+    /* We need to be passed the file name
+     * Fetch the thing from the file, save it to the cache folder
+     */
+    return VLC_EGENERIC;
+}