:- use_module([library(lists),library(charsio)]). :- discontiguous playing/1. get_name:- showList(List), fix_list(List,[],X), print_ans(X). fix_list([],L,L). fix_list([First|Xs],Tmp,Ans):- arg(4,First,Info), length(Info,Length), ( Length > 6 -> Info = [title(Tit),artist(Grp)|_], append(Tmp,[Grp-Tit],T) ; Info = [title(Chan)|_], append(Tmp,[Chan],T) ), fix_list(Xs,T,Ans). %get_info([], print_ans([]). print_ans([X|Xs]):- format("~w\n",[X]), print_ans(Xs). %%% name(X,LL), %%% append(Title,[32,45,32|Group],LL), %%% name(TitleN,Title), %%% name(GroupN,Group), %%% rem_last_whs(TitleN,Tit), %%% rem_first_whs(GroupN,Grp). showList([item('(05:27) stalker - Covenant', 327, '/home/andreas/music/covenant/stalker.mp3', [title(stalker), artist('Covenant'), album(''), track(32), playTime(327), samplingRate(44100), bitRate(160000)]), item('(05:19) Leviathan - Covenant' , 319, '/home/andreas/music/covenant/leviathan.mp3', [title('Leviathan' ), artist('Covenant' ), album('Europa' ), genre('Electronic'), track(32), playTime(319), samplingRate(44100), bitRate(128000)]) ]). showList([item('(03:25) Trust U', 205, '/home/andreas/music/mesh/trust_you.mp3', [title('Trust U'), artist('Mesh'), album(1), genre('(None)'), track(1), playTime(205), samplingRate(44100), bitRate(320000)]), item('(04:54) Valentina - Komputer', 294, '/home/andreas/music/komputer/valentina.mp3', [title('Valentina'), artist('Komputer'), album('The World of Tomorrow'), genre(misc), track(4), playTime(294), samplingRate(44100), bitRate(128000)]), item('DigitalGunfire.com - [Industrial:EBM:Futurepop] Long Range, Hard Hitting!', -1, 'http://129.16.159.166:8000', [title('DigitalGunfire.com - [Industrial:EBM:Futurepop] Long Range, Hard Hitting!'), genre('industrial ebm electronic'), track(-1), playTime(0), samplingRate(44100), bitRate(128000)]) ]). findAlbums( Artist, Albums ):- ( setof(Album, NotUsed^Not2^post(Artist,Album,NotUsed,Not2), AlbumList )%% albums == list of lists -> nice_atom(AlbumList,Albums) ; Albums = '' ). findArtistsSong( Song, Artists ):- ( findall(Artist, (post(Artist,_,SongList,_),member(Song,SongList)), ArtistList ) -> nice_atom(ArtistList,Artists) ; Artists = '' ). findArtistsAlbum( Album, Artists ):- ( setof(Artist, N^NN^post(Artist,Album,N,NN), ArtistList ) -> nice_atom(ArtistList,Artists) ; Artists = '' ). findSongsArtist( Artist, Songs ):- ( setof(Song, Not^N2^post(Artist,Not,Song,N2), SongList), findall(Song2, (post(best_of,Not,List),member(Song2-Artist,List) ), SongList2) -> nice_song_atom(SongList,Songs1), nice_atom(SongList2,Songs2), atom_concat(Songs1,',',TmpSongs), atom_concat(TmpSongs,Songs2,Songs), ! ; findall(Song2, (post(best_of,Not,List),member(Song2-Artist,List) ), SongList2), nice_atom(SongList2,Songs), ! ; Songs = '' ). post( [spock], [single], [ [romulan,ale] ], _genre ). %%% songs that will be added to local disc soon... post( [dia,psalma], [gryningstid], [ [alla,�lskar,dig],[hon,f�r],[tro,r�tt,tro,fel],[den,som,spar], [emelie],[kalla,sinnen],[grytfot],[gryningsvisa,i,d,moll], [sol,�ver,oss] ], _genre ). post( [ebba,gr�n], ['1978','1982'], [ [profit],[ung,och,s�nkt],[tyst,f�r,fan],[mona,tumbas,slim,club], [vad,skall,du,bli],[h�ng,gud],[totalv�gra],[bev�pna,er], [det,m�ste,vara,radion],[pervers,politiker],[staten,och,kapitalet], [ung,och,k�t],['800',grader],[mamma,pappa,barn],[mental,istid], [flyktsoda],[uppg�ng,och,fall],[tittar,p�,tv], [nu,sl�cks,tusen,m�nniskoliv] ], _genre ). %%% specialpost f�r samlingsalbum... %%% post( ?X, ?Title, ?ListWithSong-Group) post( best_of, [topp,hits], [ [se,p�,mig]-[jan,johansen], [det,vackraste]-[cecilia,vennersten], [dina,f�rger,var,bl�]-[tommy,nilsson], [tess]-[peter,lemarc], [vad,du,ser,�r,vad,du,f�r]-[lisa,nilsson], [emelie]-[spock], [g�r,ut,med,mig,sj�lv]-[mauro,scocco], [n�r,v�garna,lockar]-[malin,julia] ] ). nice_song_atom( [NiceAtom], SongsAtom ):- nice_atom(NiceAtom,SongsAtom). %%% om lista med listor av listor %%% artist har gjort flera album nice_song_atom( [SongList|Rest], SongsAtom ):- nice_song_atom([SongList],Tmp), nice_song_atom(Rest,Tmp2), atom_concat(Tmp,',',T), atom_concat(T,Tmp2,SongsAtom). make_name(List,Atom):- make_name(List,[],Atom), !. make_name([],_,''). make_name([Last],_,Atom):- atom_concat('',Last,Atom). make_name([First|Rest],Temp,Atom):- make_name(Rest,Temp,A2), atom_concat(First,'_',Atom2), atom_concat(Atom2,A2,Atom). nice_atom( [], '' ). nice_atom( [AlbumNameList|Xs], AlbumsAtom ):- make_name(AlbumNameList,TempAtom), nice_atom(Xs,Temp2Atom), ( Temp2Atom = '' -> AlbumsAtom = TempAtom ; atom_concat(TempAtom,',',T2), atom_concat(T2,Temp2Atom,AlbumsAtom) ). get_name2(X):- playing(List), fix_list2(List,X). fix_list2([whatIsPlaying(L)],Tit-Grp):- arg(1,L,X),%% == formatted name name(X,LL), append(Title,[32,45,32|Group],LL), name(TitleN,Title), name(GroupN,Group), rem_last_whs(TitleN,Tit), rem_first_whs(GroupN,Grp). playing([whatIsPlaying(item('(07:08) Warsaw Ghetto - Nitzer Ebb', 428, '/home/andreas/music/nitzer_ebb/warsaw_ghetto.mp3', [title('Warsaw Ghetto'), artist('Nitzer Ebb'), album(_), track(32), playTime(428), samplingRate(44100), bitRate(112000) ] ) ) ]). playing( [whatIsPlaying(item('DigitalGunfire.com - [Industrial:EBM:Futurepop] Long Range, Hard Hitting!', -1, 'http://129.16.159.166:8000', [title('DigitalGunfire.com - [Industrial:EBM:Futurepop] Long Range, Hard Hitting!'), genre('industrial ebm electronic'), track(-1), playTime(0), samplingRate(44100), bitRate(128000)])) ]). rem_first_whs(Name,Res):- name(Name,Codes), r1(Codes,R1), name(Res,R1). rem_last_whs(Name,Res):- name(Name,Codes), %%% reverse(R2,R1), %%% r1(R1,Res1), %%% reverse(Res1,Res2), r2(Codes,R2), name(Res,R2). r1([X|Xs],A):- X \= 32, A = [X|Xs]. r1([X|Xs],Res):- X = 32, r1(Xs,Res). r2(List,A):- append(_,[X],List), X \= 32, A = List. r2(List,Res):- append(Ls,[X],List), X = 32, r2(Ls,Res).