Changeset ecdf0f1a2575e80d1303106973d5f45e73567e10
- Timestamp:
- 09/30/06 19:08:48
(2 years ago)
- Author:
- Clément Stenac <zorglub@videolan.org>
- git-committer:
- Clément Stenac <zorglub@videolan.org> 1159636128 +0000
- git-parent:
[b3b71030d8799237a448021f1054d20ea34b2504]
- git-author:
- Clément Stenac <zorglub@videolan.org> 1159636128 +0000
- Message:
Re-enable art fetching when in "ALL" mode
Todo: we should recheck cache just before downloading in case it has been downloaded while we were in the queue
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| rde9d74a |
recdf0f1 |
|
| 51 | 51 | |
|---|
| 52 | 52 | vlc_module_begin(); |
|---|
| 53 | | /* set_category( CAT_INTERFACE ); |
|---|
| 54 | | set_subcategory( SUBCAT_INTERFACE_CONTROL );*/ |
|---|
| 55 | 53 | set_shortname( N_( "Folder" ) ); |
|---|
| 56 | 54 | set_description( _("Folder meta data") ); |
|---|
| … | … | |
| 64 | 62 | static int FindMeta( vlc_object_t *p_this ) |
|---|
| 65 | 63 | { |
|---|
| 66 | | meta_engine_t *p_me = (meta_engine_t *)p_this; |
|---|
| 67 | | input_item_t *p_item = p_me->p_item; |
|---|
| | 64 | playlist_t *p_playlist = (playlist_t *)p_this; |
|---|
| | 65 | input_item_t *p_item = (input_item_t *)(p_playlist->p_private); |
|---|
| 68 | 66 | vlc_bool_t b_have_art = VLC_FALSE; |
|---|
| 69 | 67 | uint32_t i_meta; |
|---|
| 70 | 68 | |
|---|
| | 69 | int i = 0; |
|---|
| | 70 | struct stat a; |
|---|
| | 71 | char psz_filename[MAX_PATH]; |
|---|
| | 72 | char *psz_dir = strdup( p_item->psz_uri ); |
|---|
| | 73 | char *psz_buf = strrchr( psz_dir, '/' ); |
|---|
| | 74 | |
|---|
| 71 | 75 | if( !p_item->p_meta ) return VLC_EGENERIC; |
|---|
| | 76 | if( psz_buf ) |
|---|
| | 77 | { |
|---|
| | 78 | psz_buf++; |
|---|
| | 79 | *psz_buf = '\0'; |
|---|
| | 80 | } |
|---|
| | 81 | else |
|---|
| | 82 | { |
|---|
| | 83 | *psz_dir = '\0'; |
|---|
| | 84 | } |
|---|
| 72 | 85 | |
|---|
| | 86 | for( i = 0; b_have_art == VLC_FALSE && i < 3; i++ ) |
|---|
| | 87 | { |
|---|
| | 88 | switch( i ) |
|---|
| | 89 | { |
|---|
| | 90 | case 0: |
|---|
| | 91 | /* Windows Folder.jpg */ |
|---|
| | 92 | snprintf( psz_filename, MAX_PATH, |
|---|
| | 93 | "file://%sFolder.jpg", psz_dir ); |
|---|
| | 94 | break; |
|---|
| 73 | 95 | |
|---|
| 74 | | if( p_me->i_mandatory & VLC_META_ENGINE_ART_URL |
|---|
| 75 | | || p_me->i_optional & VLC_META_ENGINE_ART_URL ) |
|---|
| 76 | | { |
|---|
| 77 | | int i = 0; |
|---|
| 78 | | struct stat a; |
|---|
| 79 | | char psz_filename[MAX_PATH]; |
|---|
| 80 | | char *psz_dir = strdup( p_item->psz_uri ); |
|---|
| 81 | | char *psz_buf = strrchr( psz_dir, '/' ); |
|---|
| | 96 | case 1: |
|---|
| | 97 | /* Windows AlbumArtSmall.jpg == small version of Folder.jpg */ |
|---|
| | 98 | snprintf( psz_filename, MAX_PATH, |
|---|
| | 99 | "file://%sAlbumArtSmall.jpg", psz_dir ); |
|---|
| | 100 | break; |
|---|
| 82 | 101 | |
|---|
| 83 | | if( psz_buf ) |
|---|
| 84 | | { |
|---|
| 85 | | psz_buf++; |
|---|
| 86 | | *psz_buf = '\0'; |
|---|
| 87 | | } |
|---|
| 88 | | else |
|---|
| 89 | | { |
|---|
| 90 | | *psz_dir = '\0'; |
|---|
| | 102 | case 2: |
|---|
| | 103 | /* KDE (?) .folder.png */ |
|---|
| | 104 | snprintf( psz_filename, MAX_PATH, |
|---|
| | 105 | "file://%s.folder.png", psz_dir ); |
|---|
| | 106 | break; |
|---|
| 91 | 107 | } |
|---|
| 92 | 108 | |
|---|
| 93 | | for( i = 0; b_have_art == VLC_FALSE && i < 3; i++ ) |
|---|
| | 109 | if( utf8_stat( psz_filename+7, &a ) != -1 ) |
|---|
| 94 | 110 | { |
|---|
| 95 | | switch( i ) |
|---|
| 96 | | { |
|---|
| 97 | | case 0: |
|---|
| 98 | | /* Windows Folder.jpg */ |
|---|
| 99 | | snprintf( psz_filename, MAX_PATH, |
|---|
| 100 | | "file://%sFolder.jpg", psz_dir ); |
|---|
| 101 | | break; |
|---|
| 102 | | |
|---|
| 103 | | case 1: |
|---|
| 104 | | /* Windows AlbumArtSmall.jpg == small version of Folder.jpg */ |
|---|
| 105 | | snprintf( psz_filename, MAX_PATH, |
|---|
| 106 | | "file://%sAlbumArtSmall.jpg", psz_dir ); |
|---|
| 107 | | break; |
|---|
| 108 | | |
|---|
| 109 | | case 2: |
|---|
| 110 | | /* KDE (?) .folder.png */ |
|---|
| 111 | | snprintf( psz_filename, MAX_PATH, |
|---|
| 112 | | "file://%s.folder.png", psz_dir ); |
|---|
| 113 | | break; |
|---|
| 114 | | } |
|---|
| 115 | | |
|---|
| 116 | | if( utf8_stat( psz_filename+7, &a ) != -1 ) |
|---|
| 117 | | { |
|---|
| 118 | | vlc_meta_SetArtURL( p_item->p_meta, psz_filename ); |
|---|
| 119 | | b_have_art = VLC_TRUE; |
|---|
| 120 | | } |
|---|
| | 111 | vlc_meta_SetArtURL( p_item->p_meta, psz_filename ); |
|---|
| | 112 | b_have_art = VLC_TRUE; |
|---|
| 121 | 113 | } |
|---|
| 122 | | |
|---|
| 123 | | free( psz_dir ); |
|---|
| 124 | 114 | } |
|---|
| 125 | 115 | |
|---|
| 126 | | i_meta = input_CurrentMetaFlags( p_item->p_meta ); |
|---|
| 127 | | p_me->i_mandatory &= ~i_meta; |
|---|
| 128 | | p_me->i_optional &= ~i_meta; |
|---|
| 129 | | if( p_me->i_mandatory ) |
|---|
| 130 | | return VLC_EGENERIC; |
|---|
| 131 | | else |
|---|
| 132 | | return VLC_SUCCESS; |
|---|
| | 116 | free( psz_dir ); |
|---|
| | 117 | |
|---|
| | 118 | return b_have_art ? VLC_SUCCESS : VLC_EGENERIC; |
|---|
| 133 | 119 | } |
|---|
| r9a128b5 |
recdf0f1 |
|
| 163 | 163 | meta_engine_t *p_me = (meta_engine_t *)p_this; |
|---|
| 164 | 164 | input_item_t *p_item = p_me->p_item; |
|---|
| 165 | | int i_ret = GetData( VLC_OBJECT(p_me), p_item, VLC_FALSE ); |
|---|
| | 165 | int i_ret = GetData( VLC_OBJECT(p_me), p_item, |
|---|
| | 166 | p_me->i_mandatory & VLC_META_ENGINE_ART_URL ); |
|---|
| 166 | 167 | |
|---|
| 167 | 168 | if( !i_ret ) |
|---|
| … | … | |
| 177 | 178 | static int FindArt( vlc_object_t *p_this ) |
|---|
| 178 | 179 | { |
|---|
| 179 | | playlist_t *p_playlist; |
|---|
| 180 | | input_item_t *p_item = (input_item_t *)p_playlist->p_private; |
|---|
| | 180 | playlist_t *p_playlist = (playlist_t *)p_this; |
|---|
| | 181 | input_item_t *p_item = (input_item_t *)(p_playlist->p_private); |
|---|
| 181 | 182 | assert( p_item ); |
|---|
| 182 | 183 | |
|---|
| 183 | | return GetData( p_playlist, p_item, VLC_TRUE ); |
|---|
| | 184 | return GetData( VLC_OBJECT(p_playlist), p_item, VLC_TRUE ); |
|---|
| 184 | 185 | } |
|---|
| r7ea9e5c |
recdf0f1 |
|
| 1048 | 1048 | |
|---|
| 1049 | 1049 | ADD_META_BOX( title, "nam" ); |
|---|
| 1050 | | ADD_META_BOX( author, "aut" ); |
|---|
| 1051 | 1050 | ADD_META_BOX( artist, "ART" ); |
|---|
| 1052 | 1051 | ADD_META_BOX( genre, "gen" ); |
|---|
| rbd3484b |
recdf0f1 |
|
| 2250 | 2250 | |
|---|
| 2251 | 2251 | GET_META( title, "meta-title" ); |
|---|
| 2252 | | GET_META( author, "meta-author" ); |
|---|
| 2253 | 2252 | GET_META( artist, "meta-artist" ); |
|---|
| 2254 | 2253 | GET_META( genre, "meta-genre" ); |
|---|
| ra0cbc6e |
recdf0f1 |
|
| 103 | 103 | { |
|---|
| 104 | 104 | msg_Dbg( p_playlist, "unable to find art" ); |
|---|
| | 105 | PL_UNLOCK; |
|---|
| 105 | 106 | return VLC_EGENERIC; |
|---|
| 106 | 107 | } |
|---|
| 107 | 108 | module_Unneed( p_playlist, p_module ); |
|---|
| 108 | 109 | p_playlist->p_private = NULL; |
|---|
| | 110 | PL_UNLOCK; |
|---|
| 109 | 111 | |
|---|
| 110 | 112 | if( !p_item->p_meta->psz_arturl || !*p_item->p_meta->psz_arturl ) |
|---|
| … | … | |
| 142 | 144 | if( utf8_stat( psz_filename+7, &a ) == 0 ) |
|---|
| 143 | 145 | { |
|---|
| 144 | | msg_Dbg( p_playlist, "album art %s already exists in cache" |
|---|
| 145 | | , psz_filename ); |
|---|
| 146 | 146 | vlc_meta_SetArtURL( p_item->p_meta, psz_filename ); |
|---|
| 147 | 147 | return VLC_SUCCESS; |
|---|
| … | … | |
| 212 | 212 | fclose( p_file ); |
|---|
| 213 | 213 | stream_Delete( p_stream ); |
|---|
| 214 | | msg_Dbg( p_playlist, "Album art saved to %s\n", psz_filename ); |
|---|
| | 214 | msg_Dbg( p_playlist, "album art saved to %s\n", psz_filename ); |
|---|
| 215 | 215 | free( p_item->p_meta->psz_arturl ); |
|---|
| 216 | 216 | p_item->p_meta->psz_arturl = strdup( psz_filename ); |
|---|
| … | … | |
| 229 | 229 | |
|---|
| 230 | 230 | CHECK( title, TITLE ) |
|---|
| 231 | | CHECK( author, AUTHOR ) |
|---|
| 232 | 231 | CHECK( artist, ARTIST ) |
|---|
| 233 | 232 | CHECK( genre, GENRE ) |
|---|
| rde9d74a |
recdf0f1 |
|
| 566 | 566 | input_MetaFetch( p_playlist, p_item ); |
|---|
| 567 | 567 | p_item->p_meta->i_status |= ITEM_META_FETCHED; |
|---|
| | 568 | var_SetInteger( p_playlist, "item-change", p_item->i_id ); |
|---|
| | 569 | /* Fetch right now */ |
|---|
| | 570 | if( var_GetInteger( p_playlist, "album-art" ) == ALBUM_ART_ALL ) |
|---|
| | 571 | { |
|---|
| | 572 | vlc_mutex_lock( &p_obj->object_lock ); |
|---|
| | 573 | preparse_item_t p; |
|---|
| | 574 | p.p_item = p_item; |
|---|
| | 575 | p.b_fetch_art = VLC_TRUE; |
|---|
| | 576 | INSERT_ELEM( p_playlist->p_secondary_preparse->p_waiting, |
|---|
| | 577 | p_playlist->p_secondary_preparse->i_waiting, |
|---|
| | 578 | 0, p ); |
|---|
| | 579 | vlc_mutex_unlock( &p_obj->object_lock ); |
|---|
| | 580 | } |
|---|
| | 581 | else |
|---|
| | 582 | vlc_gc_decref( p_item ); |
|---|
| 568 | 583 | } |
|---|
| 569 | 584 | else |
|---|
| … | … | |
| 571 | 586 | input_ArtFetch( p_playlist, p_item ); |
|---|
| 572 | 587 | p_item->p_meta->i_status |= ITEM_ART_FETCHED; |
|---|
| 573 | | } |
|---|
| 574 | | var_SetInteger( p_playlist, "item-change", p_item->i_id ); |
|---|
| 575 | | vlc_gc_decref( p_item ); |
|---|
| | 588 | vlc_gc_decref( p_item ); |
|---|
| | 589 | } |
|---|
| 576 | 590 | } |
|---|
| 577 | 591 | vlc_mutex_lock( &p_obj->object_lock ); |
|---|