annotate core/magnatagatune/makro_import_magnatagatune.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
rev   line source
wolffd@0 1 % makro_import_magnatatatune
wolffd@0 2
wolffd@0 3 csv2cell('annotations_final.csv','fromfile')
wolffd@0 4 clip_info_final = csv2cell('clip_info_final.csv','fromfile');
wolffd@0 5 comparisons_final = csv2cell('comparisons_final.csv','fromfile');
wolffd@0 6
wolffd@0 7 % tag annotations
wolffd@0 8 annots = strcell2matrix(annotations_final,[1 0],[0 1]);
wolffd@0 9 annots_descripts = {annotations_final{1,:}};
wolffd@0 10 annots_filenames = cat(1,{annotations_final{:,1}},{annotations_final{:,end}})';
wolffd@0 11
wolffd@0 12 % comparison measures
wolffd@0 13 comp = strcell2matrix(comparisons_final,[0 0], [0 3]);
wolffd@0 14 comp_descripts = {comparisons_final{1,:}};
wolffd@0 15
wolffd@0 16 %%
wolffd@0 17 % -----------------------------------------------------------
wolffd@0 18 % ---
wolffd@0 19 % part two: extracting and associating Genre
wolffd@0 20 %
wolffd@0 21 % at first we filter out the relevant positions in clip_info_final-
wolffd@0 22 % ---
wolffd@0 23
wolffd@0 24 % prepare clip_info
wolffd@0 25 info_ids = {clip_info_final{:,1}};
wolffd@0 26 info_ids = strcell2matrix(info_ids);
wolffd@0 27
wolffd@0 28 % ---
wolffd@0 29 % CAUTION: a offset because of table header is added
wolffd@0 30 % ---
wolffd@0 31 info_ids = info_ids(2:end);
wolffd@0 32
wolffd@0 33 % prepare file annots
wolffd@0 34 file_ids = {annots_filenames{:,1}};
wolffd@0 35 file_ids = strcell2matrix(file_ids);
wolffd@0 36 file_ids = file_ids(2:end);
wolffd@0 37
wolffd@0 38 % intersect ids
wolffd@0 39 [c, ia, ib] = intersect(file_ids, info_ids);
wolffd@0 40
wolffd@0 41 % and save into proper
wolffd@0 42 clip_info_proper_names = clip_info_final(1,:);
wolffd@0 43 clip_info_proper = clip_info_final(ib+1,:);
wolffd@0 44
wolffd@0 45 % clean proper for mysterious beginnings
wolffd@0 46 for i = 1:size(clip_info_proper,1)
wolffd@0 47 % leave out first row;
wolffd@0 48 for j = 2:size(clip_info_proper,2)
wolffd@0 49 clip_info_proper{i,j} = clip_info_proper{i,j}(2:end);
wolffd@0 50 end
wolffd@0 51 end
wolffd@0 52
wolffd@0 53 % ---
wolffd@0 54 % % GENRE extraction
wolffd@0 55 %
wolffd@0 56 % now, we load the new file and search for the information on the
wolffd@0 57 % actual excerpts we have
wolffd@0 58 % ---
wolffd@0 59 tmp = csv2cell('song_info.csv','fromfile');
wolffd@0 60
wolffd@0 61 %%
wolffd@0 62 % these are for keeping book of missing items
wolffd@0 63 not_found = [];
wolffd@0 64 man_album_name = {};
wolffd@0 65
wolffd@0 66 rel_cols = [6,7];
wolffd@0 67 % make header
wolffd@0 68 clip_info_extra_names = {'clip_id',tmp{1,rel_cols}};
wolffd@0 69 clip_info_extra = {};
wolffd@0 70
wolffd@0 71 for i = 1:size(clip_info_proper,1)
wolffd@0 72 % ---
wolffd@0 73 % search by url
wolffd@0 74 % ---
wolffd@0 75 % convert search string
wolffd@0 76 s = char(clip_info_proper{i,9});
wolffd@0 77 idx = strcellfind(tmp(:,9),s);
wolffd@0 78
wolffd@0 79 % we'll have to loosen the search
wolffd@0 80 if idx < 1
wolffd@0 81 warning(sprintf('! %s, album %s, artist %s!',clip_info_proper{i,1},...
wolffd@0 82 clip_info_proper{i,5},clip_info_proper{i,4}));
wolffd@0 83
wolffd@0 84 % make note ...
wolffd@0 85 not_found = cat(1,not_found,[str2num(clip_info_proper{i,1}), 0]);
wolffd@0 86
wolffd@0 87 not_found(end,2) = 1;
wolffd@0 88 % ---
wolffd@0 89 % ok, no problem, lets look for the album!
wolffd@0 90 % ---
wolffd@0 91 s = char(clip_info_proper{i,5});
wolffd@0 92 idx = strcellfind(tmp(:,3),s);
wolffd@0 93
wolffd@0 94 if idx < 1
wolffd@0 95
wolffd@0 96 not_found(end,2) = 2;
wolffd@0 97 % ---
wolffd@0 98 % search for artist
wolffd@0 99 % ---
wolffd@0 100 s = char(clip_info_proper{i,4});
wolffd@0 101 idx = strcellfind(tmp(:,1),s);
wolffd@0 102 end
wolffd@0 103
wolffd@0 104 if idx < 1
wolffd@0 105
wolffd@0 106 not_found(end,2) = 3;
wolffd@0 107 % ---
wolffd@0 108 % this is the last try to get hold of such artists
wolffd@0 109 % they may be noted as a trackname or description substring in a compilation
wolffd@0 110 % ---
wolffd@0 111 s = char(clip_info_proper{i,4});
wolffd@0 112 idx = substrcellfind(tmp(:,2),s);
wolffd@0 113 end
wolffd@0 114
wolffd@0 115 if idx < 1
wolffd@0 116
wolffd@0 117 warning(sprintf(' - %s, %s \n',clip_info_proper{i,1},clip_info_proper{i,4}));
wolffd@0 118 newinfo = {''};
wolffd@0 119
wolffd@0 120 % reset suspected success
wolffd@0 121 not_found(end,2) = 0;
wolffd@0 122 else
wolffd@0 123
wolffd@0 124 warning(sprintf(' + associated album %s, artist %s \n',tmp{idx,3},tmp{idx,1}));
wolffd@0 125
wolffd@0 126 % get relevant data
wolffd@0 127 newinfo = {tmp{idx,[3 1 12]}};
wolffd@0 128
wolffd@0 129 % ---
wolffd@0 130 % save genre
wolffd@0 131 % ---
wolffd@0 132 clip_info_extra = cat(1,clip_info_extra,{clip_info_proper{i,1},tmp{idx,rel_cols}});
wolffd@0 133 end
wolffd@0 134
wolffd@0 135 % report new location/info of album
wolffd@0 136 s = char(clip_info_proper{i,5});
wolffd@0 137 if isempty(man_album_name) || strcellfind(man_album_name(:,1),s) == -1 ;
wolffd@0 138 man_album_name = cat(1, man_album_name, {clip_info_proper{i,5},newinfo{:}});
wolffd@0 139 end
wolffd@0 140
wolffd@0 141 else
wolffd@0 142 % ---
wolffd@0 143 % save genre
wolffd@0 144 % ---
wolffd@0 145 clip_info_extra = cat(1,clip_info_extra,{clip_info_proper{i,1},tmp{idx,rel_cols}});
wolffd@0 146 end
wolffd@0 147 end
wolffd@0 148
wolffd@0 149 clear('newinfo','i','j','idx','s','ia','ib','rel_cols')
wolffd@0 150
wolffd@0 151
wolffd@0 152
wolffd@0 153
wolffd@0 154