annotate jamendo/sparql-archived/jamendo.pl @ 27:d95e683fbd35 tip

Enable CORS on urispace redirects as well
author Chris Cannam
date Tue, 20 Feb 2018 14:52:02 +0000
parents df9685986338
children
rev   line source
Chris@0 1 :- module(jamendo,[
Chris@0 2 artist/1
Chris@0 3 , artist_name/2
Chris@0 4 , artist_dispname/2
Chris@0 5 , artist_description/2
Chris@0 6 , artist_genre/2
Chris@0 7 , artist_country/2
Chris@0 8 , artist_geo/2
Chris@0 9 , artist_image/2
Chris@0 10 , artist_link/2
Chris@0 11 , artist_homepage/2
Chris@0 12 , album/1
Chris@0 13 , album_name/2
Chris@0 14 , album_description/2
Chris@0 15 , album_artist/2
Chris@0 16 , album_genre/2
Chris@0 17 , album_validationurl/2
Chris@0 18 , album_publicdate/2
Chris@0 19 , album_archiveset/2
Chris@0 20 , album_popularity/2
Chris@0 21 , album_releasedate/2
Chris@0 22 , album_link/2
Chris@0 23 , album_cover/4
Chris@0 24 , album_p2p/4
Chris@0 25 , album_tags/2
Chris@0 26 , album_tag/2
Chris@0 27 , track/1
Chris@0 28 , track_name/2
Chris@0 29 , track_album/2
Chris@0 30 , track_no/2
Chris@0 31 , track_lyrics/2
Chris@0 32 , track_lengths/2
Chris@0 33 , track_licenseurl/2
Chris@0 34 , track_link/2
Chris@0 35 ]).
Chris@0 36
Chris@0 37 /**
Chris@0 38 * A SWI-Prolog module to access Jamendo XML dumps
Chris@0 39 * Yves Raimond, C4DM, Queen Mary, University of London, 2007
Chris@0 40 */
Chris@0 41
Chris@0 42
Chris@0 43
Chris@0 44 %:-import_from(jamendo_xml,parsed_dump/1).
Chris@0 45
Chris@0 46 /**
Chris@0 47 * Jamendo artists
Chris@0 48 */
Chris@0 49 artist(Id) :-
Chris@0 50 parsed_dump([element(_,_,NestedElements)]),
Chris@0 51 member(element('Artists',_,Artists),NestedElements),
Chris@0 52 member(Artist,Artists),
Chris@0 53 Artist=element(artist,ArtistAtt,_),
Chris@0 54 get_attributes([id],ArtistAtt,[Id]).
Chris@0 55 artist_name(Id,Name) :-
Chris@0 56 parsed_dump([element(_,_,NestedElements)]),
Chris@0 57 member(element('Artists',_,Artists),NestedElements),
Chris@0 58 member(Artist,Artists),
Chris@0 59 Artist=element(artist,ArtistAtt,_),
Chris@0 60 get_attributes([name,id],ArtistAtt,[Name,Id]),
Chris@0 61 Name\=''.
Chris@0 62 artist_dispname(Id,DispName) :-
Chris@0 63 parsed_dump([element(_,_,NestedElements)]),
Chris@0 64 member(element('Artists',_,Artists),NestedElements),
Chris@0 65 member(Artist,Artists),
Chris@0 66 Artist=element(artist,ArtistAtt,ArtistNested),
Chris@0 67 get_nested_elts([dispname],ArtistNested,[DispName]),
Chris@0 68 get_attributes([id],ArtistAtt,[Id]),
Chris@0 69 DispName\=''.
Chris@0 70 artist_genre(Id,Genre) :-
Chris@0 71 parsed_dump([element(_,_,NestedElements)]),
Chris@0 72 member(element('Artists',_,Artists),NestedElements),
Chris@0 73 member(Artist,Artists),
Chris@0 74 Artist=element(artist,ArtistAtt,ArtistNested),
Chris@0 75 get_nested_elts([genre],ArtistNested,[Genre]),
Chris@0 76 get_attributes([id],ArtistAtt,[Id]),
Chris@0 77 Genre\=''.
Chris@0 78 artist_description(Id,Description) :-
Chris@0 79 parsed_dump([element(_,_,NestedElements)]),
Chris@0 80 member(element('Artists',_,Artists),NestedElements),
Chris@0 81 member(Artist,Artists),
Chris@0 82 Artist=element(artist,ArtistAtt,ArtistNested),
Chris@0 83 get_nested_elts([description],ArtistNested,[Description]),
Chris@0 84 get_attributes([id],ArtistAtt,[Id]),
Chris@0 85 Description\=''.
Chris@0 86 artist_country(Id,Country) :-
Chris@0 87 parsed_dump([element(_,_,NestedElements)]),
Chris@0 88 member(element('Artists',_,Artists),NestedElements),
Chris@0 89 member(Artist,Artists),
Chris@0 90 Artist=element(artist,ArtistAtt,_),
Chris@0 91 get_attributes([country,id],ArtistAtt,[Country,Id]),
Chris@0 92 Country\=''.
Chris@0 93 artist_image(Id,Image) :-
Chris@0 94 parsed_dump([element(_,_,NestedElements)]),
Chris@0 95 member(element('Artists',_,Artists),NestedElements),
Chris@0 96 member(Artist,Artists),
Chris@0 97 Artist=element(artist,ArtistAtt,_),
Chris@0 98 get_attributes([image,id],ArtistAtt,[Image,Id]),
Chris@0 99 Image\=''.
Chris@0 100 artist_geo(Id,GeoString) :-
Chris@0 101 parsed_dump([element(_,_,NestedElements)]),
Chris@0 102 member(element('Artists',_,Artists),NestedElements),
Chris@0 103 member(Artist,Artists),
Chris@0 104 Artist=element(artist,ArtistAtt,_),
Chris@0 105 get_attributes([geostr1,id],ArtistAtt,[GeoString,Id]),
Chris@0 106 GeoString\=''.
Chris@0 107 artist_link(Id,Link) :-
Chris@0 108 parsed_dump([element(_,_,NestedElements)]),
Chris@0 109 member(element('Artists',_,Artists),NestedElements),
Chris@0 110 member(Artist,Artists),
Chris@0 111 Artist=element(artist,ArtistAtt,_),
Chris@0 112 get_attributes([link,id],ArtistAtt,[Link,Id]),
Chris@0 113 Link\=''.
Chris@0 114 artist_homepage(Id,HomePage) :-
Chris@0 115 parsed_dump([element(_,_,NestedElements)]),
Chris@0 116 member(element('Artists',_,Artists),NestedElements),
Chris@0 117 member(Artist,Artists),
Chris@0 118 Artist=element(artist,ArtistAtt,_),
Chris@0 119 get_attributes([homepage,id],ArtistAtt,[HomePage,Id]),
Chris@0 120 HomePage\=''.
Chris@0 121
Chris@0 122
Chris@0 123 /**
Chris@0 124 * Jamendo albums
Chris@0 125 */
Chris@0 126 album(Id) :-
Chris@0 127 parsed_dump([element(_,_,NestedElements)]),
Chris@0 128 member(element('Albums',_,Albums),NestedElements),
Chris@0 129 member(Album,Albums),
Chris@0 130 Album=element(album,AlbumAtt,_),
Chris@0 131 get_attributes([id],AlbumAtt,[Id]).
Chris@0 132 album_artist(Id,ArtistId) :-
Chris@0 133 parsed_dump([element(_,_,NestedElements)]),
Chris@0 134 member(element('Albums',_,Albums),NestedElements),
Chris@0 135 member(Album,Albums),
Chris@0 136 Album=element(album,AlbumAtt,_),
Chris@0 137 get_attributes([artistID,id],AlbumAtt,[ArtistId,Id]),
Chris@0 138 ArtistId\=''.
Chris@0 139 album_name(Id,DispName) :-
Chris@0 140 parsed_dump([element(_,_,NestedElements)]),
Chris@0 141 member(element('Albums',_,Albums),NestedElements),
Chris@0 142 member(Album,Albums),
Chris@0 143 Album=element(album,AlbumAtt,AlbumNested),
Chris@0 144 get_nested_elts([dispname],AlbumNested,[DispName]),
Chris@0 145 get_attributes([id],AlbumAtt,[Id]),
Chris@0 146 DispName\=''.
Chris@0 147 album_genre(Id,Genre) :-
Chris@0 148 parsed_dump([element(_,_,NestedElements)]),
Chris@0 149 member(element('Albums',_,Albums),NestedElements),
Chris@0 150 member(Album,Albums),
Chris@0 151 Album=element(album,AlbumAtt,AlbumNested),
Chris@0 152 get_nested_elts([genre],AlbumNested,[Genre]),
Chris@0 153 get_attributes([id],AlbumAtt,[Id]),
Chris@0 154 Genre\=''.
Chris@0 155 album_description(Id,Description) :-
Chris@0 156 parsed_dump([element(_,_,NestedElements)]),
Chris@0 157 member(element('Albums',_,Albums),NestedElements),
Chris@0 158 member(Album,Albums),
Chris@0 159 Album=element(album,AlbumAtt,AlbumNested),
Chris@0 160 get_nested_elts([description],AlbumNested,[Description]),
Chris@0 161 get_attributes([id],AlbumAtt,[Id]),
Chris@0 162 Description\=''.
Chris@0 163 album_validationurl(Id,ValidationURL) :-
Chris@0 164 parsed_dump([element(_,_,NestedElements)]),
Chris@0 165 member(element('Albums',_,Albums),NestedElements),
Chris@0 166 member(Album,Albums),
Chris@0 167 Album=element(album,AlbumAtt,_),
Chris@0 168 get_attributes([validationURL,id],AlbumAtt,[ValidationURL,Id]),
Chris@0 169 ValidationURL\=''.
Chris@0 170 album_publicdate(Id,PublicDate) :-
Chris@0 171 parsed_dump([element(_,_,NestedElements)]),
Chris@0 172 member(element('Albums',_,Albums),NestedElements),
Chris@0 173 member(Album,Albums),
Chris@0 174 Album=element(album,AlbumAtt,_),
Chris@0 175 get_attributes([publicDate,id],AlbumAtt,[PublicDate,Id]),
Chris@0 176 PublicDate\=''.
Chris@0 177 album_archiveset(Id,ArchiveSet) :-
Chris@0 178 parsed_dump([element(_,_,NestedElements)]),
Chris@0 179 member(element('Albums',_,Albums),NestedElements),
Chris@0 180 member(Album,Albums),
Chris@0 181 Album=element(album,AlbumAtt,_),
Chris@0 182 get_attributes([archiveSet,id],AlbumAtt,[ArchiveSet,Id]),
Chris@0 183 ArchiveSet\=''.
Chris@0 184 album_popularity(Id,Popularity) :-
Chris@0 185 parsed_dump([element(_,_,NestedElements)]),
Chris@0 186 member(element('Albums',_,Albums),NestedElements),
Chris@0 187 member(Album,Albums),
Chris@0 188 Album=element(album,AlbumAtt,_),
Chris@0 189 get_attributes([popularity,id],AlbumAtt,[Popularity,Id]),
Chris@0 190 Popularity\=''.
Chris@0 191 album_releasedate(Id,ReleaseDate) :-
Chris@0 192 parsed_dump([element(_,_,NestedElements)]),
Chris@0 193 member(element('Albums',_,Albums),NestedElements),
Chris@0 194 member(Album,Albums),
Chris@0 195 Album=element(album,AlbumAtt,_),
Chris@0 196 get_attributes([releaseDate,id],AlbumAtt,[ReleaseDate,Id]),
Chris@0 197 ReleaseDate\=''.
Chris@0 198 album_link(Id,Link) :-
Chris@0 199 parsed_dump([element(_,_,NestedElements)]),
Chris@0 200 member(element('Albums',_,Albums),NestedElements),
Chris@0 201 member(Album,Albums),
Chris@0 202 Album=element(album,AlbumAtt,_),
Chris@0 203 get_attributes([link,id],AlbumAtt,[Link,Id]),
Chris@0 204 Link\=''.
Chris@0 205 album_cover(Id,Res,No,Cover) :-
Chris@0 206 parsed_dump([element(_,_,NestedElements)]),
Chris@0 207 member(element('Albums',_,Albums),NestedElements),
Chris@0 208 member(Album,Albums),
Chris@0 209 Album=element(album,Att,AlbumAtt),
Chris@0 210 member(id=Id,Att),
Chris@0 211 member(element('Covers',_,Covers),AlbumAtt),
Chris@0 212 member(element(cover,[res=Res,no=No],[Cover]),Covers).
Chris@0 213 album_p2p(Id,AudioEncoding,Network,Link) :-
Chris@0 214 parsed_dump([element(_,_,NestedElements)]),
Chris@0 215 member(element('Albums',_,Albums),NestedElements),
Chris@0 216 member(Album,Albums),
Chris@0 217 Album=element(album,Att,AlbumAtt),
Chris@0 218 member(id=Id,Att),
Chris@0 219 member(element('P2PLinks',_,P2PLinks),AlbumAtt),
Chris@0 220 member(element(p2plink,LinkAtt,[Link]),P2PLinks),
Chris@0 221 member(audioEncoding=AudioEncoding,LinkAtt),
Chris@0 222 member(network=Network,LinkAtt).
Chris@0 223 album_tag(Id,Tag) :-
Chris@0 224 album_tags(Id,Tags),
Chris@0 225 concat_atom(TagList,' ',Tags),
Chris@0 226 member(Tag,TagList).
Chris@0 227 album_tags(Id,Tags) :-
Chris@0 228 parsed_dump([element(_,_,NestedElements)]),
Chris@0 229 member(element('Albums',_,Albums),NestedElements),
Chris@0 230 member(Album,Albums),
Chris@0 231 Album=element(album,Att,AlbumNested),
Chris@0 232 get_nested_elts([tags],AlbumNested,[Tags]),
Chris@0 233 member(id=Id,Att),
Chris@0 234 Tags\=''.
Chris@0 235
Chris@0 236 /**
Chris@0 237 * Jamendo tracks
Chris@0 238 */
Chris@0 239 track(Id) :-
Chris@0 240 parsed_dump([element(_,_,NestedElements)]),
Chris@0 241 member(element('Tracks',_,Tracks),NestedElements),
Chris@0 242 member(Track,Tracks),
Chris@0 243 Track=element(track,TrackAtt,_),
Chris@0 244 get_attributes([id],TrackAtt,[Id]).
Chris@0 245 track_album(Id,AlbumId) :-
Chris@0 246 parsed_dump([element(_,_,NestedElements)]),
Chris@0 247 member(element('Tracks',_,Tracks),NestedElements),
Chris@0 248 member(Track,Tracks),
Chris@0 249 Track=element(track,TrackAtt,_),
Chris@0 250 get_attributes([albumID,id],TrackAtt,[AlbumId,Id]),
Chris@0 251 AlbumId\=''.
Chris@0 252 track_no(Id,TrackNo) :-
Chris@0 253 parsed_dump([element(_,_,NestedElements)]),
Chris@0 254 member(element('Tracks',_,Tracks),NestedElements),
Chris@0 255 member(Track,Tracks),
Chris@0 256 Track=element(track,TrackAtt,_),
Chris@0 257 get_attributes([trackno,id],TrackAtt,[TrackNo,Id]),
Chris@0 258 TrackNo\=''.
Chris@0 259 track_name(Id,Name) :-
Chris@0 260 parsed_dump([element(_,_,NestedElements)]),
Chris@0 261 member(element('Tracks',_,Tracks),NestedElements),
Chris@0 262 member(Track,Tracks),
Chris@0 263 Track=element(track,TrackAtt,TrackNested),
Chris@0 264 get_attributes([id],TrackAtt,[Id]),
Chris@0 265 get_nested_elts([dispname],TrackNested,[Name]),
Chris@0 266 Name\=''.
Chris@0 267 track_lyrics(Id,Lyrics) :-
Chris@0 268 parsed_dump([element(_,_,NestedElements)]),
Chris@0 269 member(element('Tracks',_,Tracks),NestedElements),
Chris@0 270 member(Track,Tracks),
Chris@0 271 Track=element(track,TrackAtt,TrackNested),
Chris@0 272 get_attributes([id],TrackAtt,[Id]),
Chris@0 273 get_nested_elts([lyrics],TrackNested,[Lyrics]),
Chris@0 274 Lyrics\=''.
Chris@0 275 track_lengths(Id,Lengths) :-
Chris@0 276 parsed_dump([element(_,_,NestedElements)]),
Chris@0 277 member(element('Tracks',_,Tracks),NestedElements),
Chris@0 278 member(Track,Tracks),
Chris@0 279 Track=element(track,TrackAtt,_),
Chris@0 280 get_attributes([lengths,id],TrackAtt,[Lengths,Id]),
Chris@0 281 Lengths\=''.
Chris@0 282 track_licenseurl(Id,LicenseURL) :-
Chris@0 283 parsed_dump([element(_,_,NestedElements)]),
Chris@0 284 member(element('Tracks',_,Tracks),NestedElements),
Chris@0 285 member(Track,Tracks),
Chris@0 286 Track=element(track,TrackAtt,_),
Chris@0 287 get_attributes([licenseURL,id],TrackAtt,[LicenseURL,Id]),
Chris@0 288 LicenseURL\=''.
Chris@0 289 track_link(Id,Link) :-
Chris@0 290 parsed_dump([element(_,_,NestedElements)]),
Chris@0 291 member(element('Tracks',_,Tracks),NestedElements),
Chris@0 292 member(Track,Tracks),
Chris@0 293 Track=element(track,TrackAtt,_),
Chris@0 294 get_attributes([link,id],TrackAtt,[Link,Id]),
Chris@0 295 Link\=''.
Chris@0 296
Chris@0 297 /**
Chris@0 298 * XML parsing tools
Chris@0 299 */
Chris@0 300 get_attributes([],_,[]).
Chris@0 301 get_attributes([AttName|T1],AttList,[Att|T2]) :-
Chris@0 302 member(AttName=Att,AttList),
Chris@0 303 get_attributes(T1,AttList,T2).
Chris@0 304
Chris@0 305 get_nested_elts([],_,[]).
Chris@0 306 get_nested_elts([EltName|T1],NestedElements,[EltText|T2]):-
Chris@0 307 (member(element(EltName,_,[EltText]),NestedElements);EltText=''),
Chris@0 308 get_nested_elts(T1,NestedElements,T2).