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 |