diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/magnatagatune/makro_import_magnatagatune.m	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,154 @@
+% makro_import_magnatatatune
+
+csv2cell('annotations_final.csv','fromfile')
+clip_info_final = csv2cell('clip_info_final.csv','fromfile');
+comparisons_final = csv2cell('comparisons_final.csv','fromfile');
+
+% tag annotations
+annots = strcell2matrix(annotations_final,[1 0],[0 1]);
+annots_descripts = {annotations_final{1,:}};
+annots_filenames = cat(1,{annotations_final{:,1}},{annotations_final{:,end}})';
+
+% comparison measures
+comp = strcell2matrix(comparisons_final,[0 0], [0 3]);
+comp_descripts = {comparisons_final{1,:}};
+
+%%
+% -----------------------------------------------------------
+% ---
+% part two: extracting and associating Genre
+% 
+% at first we filter out the relevant positions in clip_info_final-
+% ---
+
+% prepare clip_info
+info_ids = {clip_info_final{:,1}};
+info_ids = strcell2matrix(info_ids);
+
+% ---
+% CAUTION: a offset because of table header is added
+% ---
+info_ids = info_ids(2:end);
+
+% prepare file annots
+file_ids = {annots_filenames{:,1}};
+file_ids = strcell2matrix(file_ids);
+file_ids = file_ids(2:end);
+
+% intersect ids
+[c, ia, ib] = intersect(file_ids, info_ids);
+
+% and save into proper
+clip_info_proper_names = clip_info_final(1,:);
+clip_info_proper = clip_info_final(ib+1,:);
+
+% clean proper for mysterious beginnings
+for i = 1:size(clip_info_proper,1)
+    % leave out first row;
+    for j = 2:size(clip_info_proper,2)
+        clip_info_proper{i,j} = clip_info_proper{i,j}(2:end);
+    end
+end
+
+% ---
+%  % GENRE extraction
+%
+% now, we load the new file and search for the information on the 
+% actual excerpts we have
+% ---
+tmp = csv2cell('song_info.csv','fromfile');
+
+%%
+% these are for keeping book of missing items
+not_found = [];
+man_album_name = {};
+
+rel_cols = [6,7];
+% make header
+clip_info_extra_names = {'clip_id',tmp{1,rel_cols}};
+clip_info_extra = {};
+
+for i = 1:size(clip_info_proper,1)
+    % ---
+    % search by url
+    % ---
+    % convert search string 
+    s = char(clip_info_proper{i,9});
+    idx = strcellfind(tmp(:,9),s);
+    
+    % we'll have to loosen the search
+    if idx < 1
+        warning(sprintf('! %s, album %s, artist %s!',clip_info_proper{i,1},...
+            clip_info_proper{i,5},clip_info_proper{i,4}));
+        
+        % make note ...
+        not_found = cat(1,not_found,[str2num(clip_info_proper{i,1}), 0]);
+        
+        not_found(end,2) = 1;
+        % ---
+        % ok, no problem, lets look for the album!
+        % ---
+        s = char(clip_info_proper{i,5});
+        idx = strcellfind(tmp(:,3),s);
+    
+        if idx < 1
+            
+            not_found(end,2) = 2;
+            % ---
+            % search for artist
+            % ---
+            s = char(clip_info_proper{i,4});
+            idx = strcellfind(tmp(:,1),s);
+        end
+
+        if idx < 1
+            
+            not_found(end,2) = 3;
+            % ---
+            % this is the last try to get hold of such artists
+            % they may be noted as a trackname or description substring in a compilation
+            % ---
+            s = char(clip_info_proper{i,4});
+            idx = substrcellfind(tmp(:,2),s);
+        end
+        
+        if idx < 1 
+            
+            warning(sprintf(' - %s, %s \n',clip_info_proper{i,1},clip_info_proper{i,4}));
+            newinfo = {''};
+            
+            % reset suspected success
+            not_found(end,2) = 0;
+        else
+            
+            warning(sprintf(' + associated album %s, artist %s \n',tmp{idx,3},tmp{idx,1}));
+            
+            % get relevant data
+            newinfo = {tmp{idx,[3 1 12]}};
+            
+            % ---
+            % save genre
+            % ---
+            clip_info_extra = cat(1,clip_info_extra,{clip_info_proper{i,1},tmp{idx,rel_cols}});
+        end
+        
+        % report new location/info of album
+        s = char(clip_info_proper{i,5});
+        if isempty(man_album_name) || strcellfind(man_album_name(:,1),s) == -1 ;
+            man_album_name = cat(1, man_album_name, {clip_info_proper{i,5},newinfo{:}});
+        end
+        
+    else
+        % ---
+        % save genre
+        % ---
+        clip_info_extra = cat(1,clip_info_extra,{clip_info_proper{i,1},tmp{idx,rel_cols}});
+    end    
+end
+
+clear('newinfo','i','j','idx','s','ia','ib','rel_cols')
+    
+
+
+        
+    
\ No newline at end of file