Per maggiori dettagli

Transcript

Per maggiori dettagli
G2Music
Gestione Avanzata dei Dati
Giuseppe Pietravalle, Giuseppe Santaniello, Marco Mannara
IL PROBLEMA
Spesso capita di ascoltare una canzone, di volerne leggere il testo e di volerne
conoscere maggiori dettagli (album di appartenenza, copertina, anno di
pubblicazione) oppure avere informazioni sulla discografia di un artista o
semplicemente ascoltare la propria canzone preferita.
2
G2MUSIC
L’applicazione consente di effettuare vari tipi di ricerche:
• per artista, in questo caso viene mostrata la discografia in ordine cronologico e la lista
delle canzoni più popolari;
• per canzone, viene mostrata una lista di canzoni con il titolo inserito;
• per artista e canzone, viene visualizzato il testo, il video e le informazioni relative alla
canzone.
3
ARCHITETTURA MEDIATOR
User
Mediator
Wrapper
MusixMatch
Wrapper
LastFm
Wrapper
LyricWikia
Wrapper
YouTube
Wrapper
GoogleImage
FONTI
Fonte
Tipo
Grado Volatilità
Musixmatch
SitoWeb
Con cambi periodici
YouTube
API
Con cambi periodici
Google Image
API
Con cambi periodici
LastFm
API
Con cambi periodici
Lyric Wikia
API
Con cambi periodici
5
SCHEMA DATALOG
•
MusixMatch (Artista, Canzone, Testo, ListaCanzoni)
•
YouTube (Artista, Canzone, Video)
•
LastFm (Artista, Canzone, TitoloAlbum, Copertina, Durata,CanzoniAlbum)
•
LyricWikia (Artista, Discografia)
•
GoogleImage (Artista, Foto)
6
WRAPPERS
I wrappers necessari per lo sviluppo del progetto sono cinque:
•
Wrapper MusixMatch
•
Wrapper LastFm
•
Wrapper LyricWikia
•
Wrapper YouTube
•
Wrapper GoogleImage
7
WRAPPER MUSIXMATCH
Viene utilizzato per recuperare: il testo di una canzone, la lista delle canzoni
popolari di un artista e delle canzoni nel cui titolo appare una determinata parola
scelta dall’utente. Si accede a queste informazioni con la tecnica dello
scraping.
XPath
Risultato
//div[@id=‘lyrics’]
Testo canzone
//ul[@class='tracks list’]//h2/a
//ul[@class='tracks list’]//h3
Lista delle canzoni popolari di un
determinato artista
//ul[@class='tracks list’]//h2/a
//ul[@class='tracks list’]//h3
Lista delle canzoni nel cui titolo
compare una determinata parola
8
SCRAPING
•
file_get_contents(): permette di acquisire e memorizzare in una variabile l'intero sorgente di
una pagina web. •
DOMDocument(): Rappresenta un intero documento HTML o XML; serve come radice
dell'albero del documento. •
loadHTML($var): carica l'HTML da una stringa •
Per valutare un'espressione XPath viene definito un oggetto DOMXPath e utilizzato il metodo
query() con l'espressione desiderata.
9
WRAPPER LASTFM
Viene utilizzato per recuperare le informazioni relative ad una determinata canzone (durata, titolo e
copertina dell’album) e per visualizzare la lista delle canzoni di un album.
•
Per ottenere i dati relativi alla canzone cercata, viene effettuata una richiesta alle API di LastFm, in
particolare si utilizza il metodo track.getInfo:
track.getInfo&api_key=YOUR_API_KEY&artist=ARTIST_NAME&track=TRACK_NAME
•
Per ottenere la lista delle canzoni di un album, si è utilizzato il metodo album.getInfo:
album.getInfo&api_key=YOUR_API_KEY&artist=ARTIST_NAME&album=ALBUM_NAME
10
WRAPPER LASTFM
Entrambi i metodi restituiscono un documento XML dal quale estrarre le informazioni di interesse
utilizzando il linguaggio XPath.
XPath
Risultato
//album/title
Titolo di un album
//album/image[@size='medium']
Copertina album
//track/duration
Durata canzone
//album/tracks/track/name
Lista canzoni di un album
11
WRAPPER LYRICWIKIA
Viene utilizzato per recuperare la discografia di un artista. Si effettua una richiesta alle API nel
seguente modo:
http://lyrics.wikia.com/api.php?artist=ARTIST_NAME&fmt=xml
Il risultato è un documento XML da cui vengono estratte informazioni utilizzando il linguaggio XPath.
XPath
Risultato
//albums//album
Titolo di un album
//albums//songs
Lista canzoni di un album
//albums//year
Anno di pubblicazione album
12
WRAPPER YOUTUBE
Viene utilizzato per visualizzare il video di una canzone. In particolare, si sfruttano le YouTube Data
API per ottenere l’id del video relativo alla canzone che si sta cercando e le YouTube Player API per
la visualizzazione del video.
YouTube Data API
13
YOUTUBE PLAYER API
Il codice JavaScript mostrato serve per la creazione,
la gestione delle funzionalità e per impostare la
dimensione del player YouTube.
14
WRAPPER GOOGLEIMAGE
Viene utilizzato per visualizzare la foto di un artista interrogando le Google Image API.
https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=ARTIST_NAME
Il risultato è un file JSON da cui si ottiene il link alla foto dell’artista.
15
SCHEMA GLOBALE
•
Canzone (A, T, Testo,Video,TitoloAlbum, Copertina, Durata): Testo, Video,
Titolo_album, Copertina e Durata della canzone dal titolo T scritta dall’artista A
•
Discografia (A, ListaAlbum,Foto): ListaAlbum e Foto dell’artista A
•
Canzoni (T, ListaCanzoni): ListaCanzoni dal titolo T
16
QUERY SULLO SCHEMA GLOBALE
•
q1(Testo,Video,TitoloAlbum, Copertina, Durata):
Canzone(X,Y,Testo,Video,TitoloAlbum, Copertina, Durata)
•
q2(ListaAlbum,Foto): Discografia(X,ListaAlbum,Foto)
•
q3(ListaCanzoni): Canzoni(Titolo,ListaCanzoni)
17
GAV mapping
GLOBAL-AS-VIEW
Canzone(A, T, Testo,Video,TitoloAlbum, Copertina, Durata) ⊇
MusixMatch (A, T, Testo, ListaCanzoni),
YouTube (A, T, Video),
LastFm (A, T, TitoloAlbum, Copertina, Durata,CanzoniAlbum)
Riformulazione query q1
q’1(Testo,Video, TitoloAlbum,Copertina,Durata):
MusixMatch( X, Y, Testo, _ ),
YouTube (X, Y, Video),
LastFm (X, Y, TitoloAlbum, Copertina, Durata)
18
GLOBAL-AS-VIEW
GAV mapping
Discografia (A, Discografia,Foto)
LyricWikia
⊇
(A, Discografia), GoogleImage (A, Foto)
Riformulazione query q2
q’2(Discografia,Foto): LyricWikia (A, Discografia), GoogleImage (A, Foto)
19
GLOBAL-AS-VIEW
GAV mapping
Canzoni(T,ListaCanzoni) ⊇
MusixMatch (Artista, T, Testo, ListaCanzoni)
Riformulazione query q3
q’3(T,ListaCanzoni): MusixMatch ( _ , T, _ , ListaCanzoni)
20
LOCAL-AS-VIEW
•
MusixMatch (A, T, Testo, ListaCanzoni) ⊆ Canzone(A, T, Testo,Video,TitoloAlbum, Copertina,
Durata), Canzoni(T, ListaCanzoni)
•
YouTube (A, T, Video) ⊆ Canzone(A, T, Testo,Video,TitoloAlbum, Copertina, Durata)
•
LastFm (A, T, TitoloAlbum, Copertina, Durata) ⊆ Canzone(A, T, Testo,Video,TitoloAlbum,
Copertina, Durata)
•
LyricWikia (A, Discografia) ⊆ Discografia (A, Discografia, Foto)
•
GoogleImage (A, Foto) ⊆ Discografia (A, Discografia, Foto)
21
•
•
BUCKET E RIFORMULAZIONE Q1
q1(Testo,Video,TitoloAlbum, Copertina, Durata):
Canzone(X,Y,Testo,Video,TitoloAlbum, Copertina, Durata)
X=Artista Y=Titolo
Bucket ( Canzone(X, Y, Testo,Video,TitoloAlbum, Copertina, Durata))=
{ MusixMatch (X, Y, Testo, ListaCanzoni), YouTube (X, Y, Video), LastFm (X, Y,
TitoloAlbum, Copertina, Durata) }
•
r1(Testo,Video,TitoloAlbum, Copertina, Durata): MusixMatch (X, Y, Testo,
ListaCanzoni)
•
Exp(r1(Testo,Video,TitoloAlbum, Copertina, Durata))= Canzone(X, Y, Testo, Video,
TitoloAlbum, Copertina, Durata)
Exp(r1) ⊆ q1
BUCKET E RIFORMULAZIONE Q2
•
q2(ListaAlbum,Foto): Discografia(X,ListaAlbum,Foto)
•
Bucket ( Discografia(X, ListaAlbum, Foto))= { LyricWikia (X, ListaAlbum),
GoogleImage (X, Foto) }
•
r2(ListaAlbum, Foto): LyricWikia (X, ListaAlbum)
•
Exp(r2(ListaAlbum, Foto))= Discografia(X, ListaAlbum, Foto)
Exp(r2) ⊆ q2
23
BUCKET E RIFORMULAZIONE Q3
•
q3(ListaCanzoni): Canzoni(Titolo,ListaCanzoni)
•
Bucket ( Canzoni(Titolo,ListaCanzoni))= { MusixMatch (Artista, Titolo, Testo,
ListaCanzoni) }
•
r3(ListaCanzoni): MusixMatch (Artista, Titolo, Testo, ListaCanzoni)
•
Exp(r3(ListaCanzoni))= Canzoni(Titolo,ListaCanzoni)
Exp(r3) ⊆ q3
24
TECNOLOGIE UTILIZZATE
•
Eclipse Luna IDE è un ambiente di sviluppo integrato multi-linguaggio e
multipiattaforma.
•
PHP è un linguaggio di programmazione interpretato, originariamente
concepito per la programmazione di pagine web dinamiche. Attualmente è
utilizzato soprattutto per sviluppare applicazioni web lato server. Con il
rilascio della versione 5, PHP dispone di un solido modello OOP.
•
GitHub è un servizio web di hosting per lo sviluppo di progetti software.
Può essere utilizzato anche per la condivisione e la modifica di file.
25
TECNOLOGIE UTILIZZATE
•
JavaScript è un linguaggio di scripting orientato agli oggetti e agli eventi
utilizzato nella programmazione Web lato client.
•
jQuery è una libreria di funzioni Javascript per le applicazioni web, che si
propone come obiettivo quello di semplificare la manipolazione, la gestione
degli eventi e l'animazione delle pagine HTML.
•
HTML5 è un linguaggio di markup per la strutturazione delle pagine web.
•
CSS è un linguaggio usato per definire la formattazione di documenti
HTML.
26
TECNOLOGIE UTILIZZATE
•
XPath è un linguaggio parte della famiglia XML che permette di individuare
i nodi all'interno di un documento XML.
•
XML è un linguaggio di markup, ovvero un linguaggio marcatore basato su
un meccanismo sintattico che consente di definire e controllare il significato
degli elementi contenuti in un documento o in un testo.
•
JSON è un formato adatto per lo scambio dei dati in applicazioni clientserver.
27