Sei sulla pagina 1di 6

Progetto TPA: TV Shows

Obbiettivo
Il software TV Shows (da ora TVS) si pone come obbiettivo quello di aiutare la visualizzazione delle proprie serie tv preferite, americane e non, fornendo, quando possibile, informazioni sugli episodi quali un giudizio espresso tramite voto, sottotitoli in italiano (quando presenti su ItalianSubs), trailer (quando presenti su PrimeTVSeries) e la trama (se presente su TVRage).

Tecnologie utilizzate
Il software scritto completamente in Java e non utilizza librerie esterne. Utilizza Swing per creare l'interfaccia grafica, event-listener per la gestione di eventi quali la pressione di bottoni, threads per rendere il programma pi interattivo, consentendo all'utente di effettuare altre operazioni mentre altre sono ancora in esecuzione, XML (tramite DOM) per ricavare informazioni dai service provider.

Service provider
ItalianSubs.net: tramite le API di questo sito si cercano i sottotitoli delle serie cercate. TVRage.com: tramite le API di questo sito vengono cercate le serie tv e le relative informazioni quali lista degli episodi, giudizi, immagini, data della messa in onda, etc... PrimeTVSeries.com: tramite l'analisi del contenuto di questo sito, si cercano i video degli episodi (circa 250 serie tv)

Giuseppe Elefante. Matricola 0512100701. e-mail: g.elefante7@studenti.unisa.it Pagina: 1

Descrizione dell'interfaccia
L'interfaccia grafica dell'applicazione costituita da due frame: un frame principale in cui si trovano tutte le informazioni delle serie e un secondo frame che viene visualizzato soltanto durante il download dei video. Il frame principale diviso in due zone: la parte superiore e la parte centrale che a sua volta si divide in tre parti. La parte superiore contiene un campo di ricerca per cercare le serie

La parte centrale contiene tutte le informazioni della serie selezionata

e si suddivide in tre parti: la parte sinistra che mostra la copertina della serie (se non presente mostra la scritta COPERTINA NON DISPONIBILE)

Giuseppe Elefante. Matricola 0512100701. e-mail: g.elefante7@studenti.unisa.it Pagina: 2

la parte centrale che mostra le stagioni e i relativi episodi.

Ogni episodio ha un tasto

che compila i campi della parte destra

Giuseppe Elefante. Matricola 0512100701. e-mail: g.elefante7@studenti.unisa.it Pagina: 3

che contiene informazioni generali sulla serie, un'immagine dell'episodio selezionato, il titolo dell'episodio, la data di messa in onda e tre bottoni: Vai che apre la pagina di TVRage relativa all'episodio, Sottotitolo che apre la pagina di download dei sottotitoli in italiano dell'episodio (se disponibili) e Trailer che cerca i video dell'episodio e se presenti li scarica, mostrando un frame che contiene i download (vedi immagine sottostante)

Ogni video viene scaricato separatamente dagli altri (cio non vengono scaricati uno per volta). La parte centrale del frame contiene i download che sono in corso (o che sono stati completati). Ogni download ha una barra di progresso che viene aggiornata ogni secondo. Inoltre sono presenti due tasti: Play che viene abilitato appena il download stato completato, serve per avviare il video nel player di sistema X che ferma il download del video e rimuove il video dalla coda. La parte inferiore del frame contiene un bottone per rimuovere tutti i video (sia completati che in corso di scaricamento) e due opzioni: Autoplay fa si che il video sia aperto automaticamente alla fine del download Rimozione automatica (abilitato solo se l'autoplay attivo) fa si che un download appena completato venga rimosso automaticamente dalla schermata di download.

Giuseppe Elefante. Matricola 0512100701. e-mail: g.elefante7@studenti.unisa.it Pagina: 4

UML

Giuseppe Elefante. Matricola 0512100701. e-mail: g.elefante7@studenti.unisa.it Pagina: 5

Utilizzo dei thread


Package: programma - Main.java : prima che venga avviata l'interfaccia grafica, un thread LoadingResource controlla che i service provider ItalianSubs.net e PrimeTVSeries vengano caricati. Per l'avvio del thread che si occupa dell'interfaccia, si attente che il thread di controllo abbia finito il suo compito. Package: dati - TVShows.java: il metodo instance() crea un thread Instance che si occupa di istanziare i service provider e a sua volta avvia un thread ControlloEsecuzione che si occupa di determinare quando un service provider ha completato il suo lavoro iniziale. - TVRage.java: presente soltanto l'attesa della fine dei thread di download. - Download.java: la classe istanzia un thread Downloader che si occupa di scaricare un file. Il thread viene avviato tramite il metodo avviaDownload(). - Italiansubs.java: la classe utilizza un thread per scaricare e analizzare l'elenco delle serie tv. presenti sul sito - PrimeTVSeries.java: la classe utilizza un thread per scaricare e analizzare l'elenco delle serie presenti su PrimeTVSeries. Vengono avviati 27 thread di questo tipo (26 per le lettere dell'alfabeto e uno per i numeri). - Player.java: la classe contiene due inner-class: ItemPlaylist che al suo interno utilizza un thread di Download e un altro thread per avviare il player video e PanelProgress che implementa l'interfaccia Runnable e crea un thread per aggiornare la barra di download dei video. Package: dati.itasa - SerieTV.java: non utilizza alcun thread, per il metodo getSubID() sincronizzato. Il metodo utilizza un file che alla fine delle operazioni viene cancellato. Quindi sincronizzato per evitare il caso in cui un altro thread invochi lo stesso metodo si trovi con il file cancellato prima della fine delle operazioni. Package: dati.primetvseries - SerieTV: la classe utilizza un thread per analizzare il contenuto della pagina relativa alla serie su PrimeTVSeries oltre a thread per il download. - EpVideo.java: la classe non utilizza thread. Package: dati.tvrage - SerieTV.java: la classe fa uso di thread per il download. - Episodio.java: la classe fa uso di thread per il download. Package: interfaccia - Interfaccia.java: ogni bottone presente nell'interfaccia crea un thread per far si che l'utente posso fare anche altro mentre altre azioni vengano completate.

Giuseppe Elefante. Matricola 0512100701. e-mail: g.elefante7@studenti.unisa.it Pagina: 6

Potrebbero piacerti anche