Pirate Netflix: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 1: Line 1:
[[Category:Programmeerimine CSharp keeles (2016)]]
[[Category:Programmeerimine CSharp keeles (2016)]]
= Analüüs =
= Analüüs =
== Millega on tegu? ==
== Millega on tegu? ==
Netflix'i sarnane Windowsi töölaua rakendus, mis võimaldab tasuta rootsi veebipoest alla laetud filme ja seriaale enda arvutis kiiresti ja mugavalt vaadata. Kui film on meie serveris olemas, saab seda kohe vaatama hakata, vastasel juhul laetakse see enne peer-to-peer failijagamisteenust kasutades serverisse ning siis striimitakse kasutajale.
Meie projektiks on Windowsi töölaua rakendus, mille abil saab kasutaja enda isiklikus arvutis vaadata filme ning seriaale mugavalt ja kiiresti. Meie rakendus sobib inimesele kellel normaalne interneti ühendus ning soovib kokku hoida kõvaketta ruumi. Filmid ja seriaalid mida kasutaja soovib vaadata asuvad meie serveris ja streamitakse sealt maha kasutades PirateNetflix rakendust. Kui filmi meie serveris ei eksisteeri, siis laetakse see enne peer-to-peer failijagamisteenust kasutades serverisse ning siis streamitakse kasutajale. Kasutajale kuvatakse rakenduse käivitades soovitatavad filmid, mis asuvad meie serveris, et kokku hoida aega mis kuluks filmi alla laadimisele. Kasutaja saab erinevate filtrite (filmi nimi, žanr, IMDb reiting, filmi ilmumise aasta) järgi filme otsida ning kuvada. Saab enne filmi käima panemist trailerit vaadata, et olla valikus kindel. Trailer mängitakse maha internetist youtube abil. PirateNetflix töötab ainult internetiühenduse olemasolul.
Kasutaja saab erinevate filtrite (filmi nimi, žanr, IMDb reiting, filmi ilmumise aasta) järgi filme otsida ning kuvada. Saab enne filmi käima panemist trailerit vaadata, et olla valikus kindel.
 
 
 


== Meeskond ja rollid ==
== Meeskond ja rollid ==
* Mihkel Vajak - projektijuht. UI/UX disain.
* Mihkel Vajak - projektijuht. UI/UX disain.
* Arti Zirk - devops. Meie serveri ja andmebaaside kohandamine, serveri liidestus WPF rakendusega.
* Arti Zirk - devops. Meie serveri ja andmebaaside kohandamine, serveri liidestus WPF rakendusega.
* Janno Oolo - Filmide mängimiseks player. Embedded Youtube player trailerite mängimiseks, installeri loomine.
* Janno Oolo - Rakenduse sisene filmide player. Embedded Youtube player trailerite mängimiseks, installeri loomine.
* Joosep Voolmaa - YTS.ag REST API liidestus WPF rakendusega.
* Joosep Voolmaa - YTS.ag REST API liidestus WPF rakendusega ja muu.
 
 
 


== Funktsionaalsus ==
== Funktsionaalsus ==
=== Must have ===
=== Must have ===
* Saadaval olevate filmide nimekirja kuvamine
* Saadaval olevate filmide nimekirja (List<Movie>) kuvamine<br>Vaikimisi kuvatakse esilehel olevas filmide nimekirjas kõige uuemaid KaruMedia ja YTS.ag filme.
* Saadaval olevate filmide otsing
* Saadaval olevate filmide otsing<br>WPF rakenduses oleva TextBoxi ja selle kõrval oleva otsingu nupu vajutamisel kuvatakse otsingule vastavad filmid all olevas Listboxis. Filmide otsingu päring saadetakse samaaegselt välja kõigisse toetatud teenustesse, milleks antud juhul on KaruMedia ja YTS.ag leheküljed.
* Filmide sorteerimine, žanri, aasta, IMDb hinnangu alusel
* Filmide sorteerimine žanri, aasta, IMDb hinnangu alusel<br>WPF rakenduses filmide nimekirja kõrval on nupud kuvatavate filmide sorteerimiseks.
* mp4 ja avi vormingus video striimimine media serverist (Windows Media Player)
* mp4 ja avi vormingus video striimimine media serverist (Windows Media Player)<br>KaruMediaService klassi poolt tagastatud Movie objekt sisaldab endas HTTP video faili URL-i, mida on võimalik voogedastuse abil taasesitada.
=== Nice to have ===   
=== Nice to have ===   
* Kui film pole media serveris olemas siis selle torrenti alla laadimine media serveri
* Kui film pole media serveris olemas, siis selle torrenti alla laadimine media serverissse<br>KaruMedia server on ka nii-öelda torrent seed box, mis võimaldab meil Yts.ag ja teistelt sarnastelt lehtedelt saadaolevad torrenteid alla laadida KaruMedia serveri.
* Suvalises vormingus video striimi mahamängimine (embedded vlc)
* Suvalises vormingus video striimi mahamängimine (embedded vlc)<br>Enimlevinud videovormingutes filmide ja seriaalide jaoks on tänapäeval mp4 h.264 kodeering, mida Windows Media Player 12 (Windows 7 ja uuemad) oskab ilma probleemideta maha mängida. Probleemiks on aga *.mkv faili vorming, mida kasutatakse tavaliselt kõrgekvaliteedilise video konteinerina. Windows Media Player ei oska *.mkv vormingus videoid taasesitada, küll aga oskab seda teha VLC media player.
* Kasutaja poolt vaadatud filmide ja pooleliolevate filmide info salvestamine.
* Kasutaja poolt vaadatud filmide ja pooleliolevate filmide info salvestamine.<br>Kasutaja kogemuse vaatenurgas oleks väga hea kuvada filme, mida kasutaja on juba  kasutajaliideses  filmidest, mida kasutaja pole veel näinud.
* Vahemälu kasutajaliidese ja serveri päringute vahele, et kiirendada kasutajale info kuvamist
* Vahemälu kasutajaliidese ja serveri päringute vahele, et kiirendada kasutajale info kuvamist.<br>Olenevalt kasutaja interneti kiirusest ja serveri koormusest võivad päringud võtta kasutaja jaoks liiga kaua aega.
* Seriaalide otsing ja nende vaatamine
* Seriaalide otsing ja nende vaatamine<br>KaruMedia server hoiustab endas peale filmide ka mingi koguse seriaale, oleks hea ka neid lasta otsida ning maha mängida kasutajal.
* Kogumike loomine ja muutmine filmidest ja/või seriaalidest
* Kogumike loomine ja muutmine filmidest ja/või seriaalidest<br>Ehk siis esitusloendite loomine.
* Kasutaja kohalike seadistuste ja andmete sünkroniseerimine erinevate PirateNetflix klientide vahel.<br>Vajab KaruMedia serveri tarkvara täiustamist üsna suures osas.
 
== Võimalikud probleemid ==
== Võimalikud probleemid ==
* Video striimimine ja üldiselt playeri osa
* Video striimimine ja üldiselt playeri osa <br>Kuna see on üks tähtsamaid komponente, siis kõik probleemid, mis on sellega seotud, on kriitilised. Kuna meil on selle kohta hetkel olemas vaid visioon ja konkreetne tehnoloogiline lahendus puudub, võib see tekitada meile palju probleeme.
* Team Foundation Serveri kasutamine  
* Team Foundation Serveri kasutamine <br>Kuna see on meie kõigi jaoks esimene kogemus Team Foundationiga, siis on oodata sealt palju probleeme. Kõige suuremaks probleemiks siiani on olnud kui kaks inimest teevad sama klassi, siis tekivad merge probleemid, millest veel ei ole aru saanud.
 
* Ajaline puudus <br>Kuna projekt on meil mahukas ja meil kõigil on veel teised ained /töö, on tihti raske leida hetke, kus saaksime koos teha või arutada projektiga seonduvaid asjaolusid. On oht, et me ei jõua oma projektiga päris sinna kuhu me esialgsete plaanide kohaselt tahaksime jõuda.
* Lahkarvamused <br> Kuna me teeme projekti neljakesi ja kõik tahavad sellega tegeleda 100%-liselt, siis on tavaliselt ka meil neli visiooni, kuidas võiks see rakendus välja näha ja töötada. Peame leidma kompromisse ja tegema nii, nagu see oleks meie projektile parim.
* Ettenägematud probleemid <br> Iga projektiga peab varuma natuke  just in case aega, sest alati juhtub mingi selline probleem, millega ei ole arvestatud.
* Fundamentaalsed ja loogika vead <br> Igas projektis on oht, et tekivad valed arusaamad. Kui need valed arusaamad tekivad projekti algusfaasis ja tulevad välja alles lõppfaasis, võib tekkida suuri probleeme.
* Serveri maht<br>Antud hetkel on KaruMedia serveri ressursid üsna piiratud (põhiliselt andmeedastus kiirus) ning mitme samaaegse kasutaja puhul võib tekkida teenuses tõrkeid.
* Sõltuvus teistest teenustest (YTS, karumeedia jne) <br> Meie rakendus sõltub üpris palju teistele teenustele. Kui need teenused peaksid mingil põhjusel maas olema, siis ei tööta ka meie rakendus.


== Tehnoloogia ==
== Tehnoloogia ==
Line 44: Line 42:
* Windows Media Player
* Windows Media Player
* Team Foundation ja Git
* Team Foundation ja Git


== Tehnoloogiline ülesehitus ==
== Tehnoloogiline ülesehitus ==
* PirateNetflixSolution
* PirateNetflixSolution
** PirateNetflixServices<br>Suhtlus media ja yts serveritega üle REST api ja ka kohalik andmebaas, kui selleni jõuame.
** PirateNetflixServices<br>Suhtlus media ja yts serveritega üle REST api ja ka kohalik andmebaas, kui see vajalikuks osutub.
*** BO
*** BO
**** Movie<br>Filmi olem, mis hoiab endas filmi infot
**** Movie<br>Objekt, mis hoiab endas filmi infot
*** KaruMediaService<br>REST API abstraktsioon Karu Media serveri tarvis
*** KaruMediaService<br>REST API abstraktsioon Karu Media serveri tarvis
*** YtsService<br>REST API abstraktsioon YTS lehe vahel
*** YtsService<br>REST API abstraktsioon YTS lehe vahel
** PirateNetflixWPF<br>GUI Rakendus
** PirateNetflixWPF<br>GUI Rakendus
** PirateNetflixTests<br>Erinevad Pirate Netflix testid
** PirateNetflixTests<br>Erinevad Pirate Netflix testid

Revision as of 21:59, 1 November 2016

Analüüs

Millega on tegu?

Meie projektiks on Windowsi töölaua rakendus, mille abil saab kasutaja enda isiklikus arvutis vaadata filme ning seriaale mugavalt ja kiiresti. Meie rakendus sobib inimesele kellel normaalne interneti ühendus ning soovib kokku hoida kõvaketta ruumi. Filmid ja seriaalid mida kasutaja soovib vaadata asuvad meie serveris ja streamitakse sealt maha kasutades PirateNetflix rakendust. Kui filmi meie serveris ei eksisteeri, siis laetakse see enne peer-to-peer failijagamisteenust kasutades serverisse ning siis streamitakse kasutajale. Kasutajale kuvatakse rakenduse käivitades soovitatavad filmid, mis asuvad meie serveris, et kokku hoida aega mis kuluks filmi alla laadimisele. Kasutaja saab erinevate filtrite (filmi nimi, žanr, IMDb reiting, filmi ilmumise aasta) järgi filme otsida ning kuvada. Saab enne filmi käima panemist trailerit vaadata, et olla valikus kindel. Trailer mängitakse maha internetist youtube abil. PirateNetflix töötab ainult internetiühenduse olemasolul.

Meeskond ja rollid

  • Mihkel Vajak - projektijuht. UI/UX disain.
  • Arti Zirk - devops. Meie serveri ja andmebaaside kohandamine, serveri liidestus WPF rakendusega.
  • Janno Oolo - Rakenduse sisene filmide player. Embedded Youtube player trailerite mängimiseks, installeri loomine.
  • Joosep Voolmaa - YTS.ag REST API liidestus WPF rakendusega ja muu.

Funktsionaalsus

Must have

  • Saadaval olevate filmide nimekirja (List<Movie>) kuvamine
    Vaikimisi kuvatakse esilehel olevas filmide nimekirjas kõige uuemaid KaruMedia ja YTS.ag filme.
  • Saadaval olevate filmide otsing
    WPF rakenduses oleva TextBoxi ja selle kõrval oleva otsingu nupu vajutamisel kuvatakse otsingule vastavad filmid all olevas Listboxis. Filmide otsingu päring saadetakse samaaegselt välja kõigisse toetatud teenustesse, milleks antud juhul on KaruMedia ja YTS.ag leheküljed.
  • Filmide sorteerimine žanri, aasta, IMDb hinnangu alusel
    WPF rakenduses filmide nimekirja kõrval on nupud kuvatavate filmide sorteerimiseks.
  • mp4 ja avi vormingus video striimimine media serverist (Windows Media Player)
    KaruMediaService klassi poolt tagastatud Movie objekt sisaldab endas HTTP video faili URL-i, mida on võimalik voogedastuse abil taasesitada.

Nice to have

  • Kui film pole media serveris olemas, siis selle torrenti alla laadimine media serverissse
    KaruMedia server on ka nii-öelda torrent seed box, mis võimaldab meil Yts.ag ja teistelt sarnastelt lehtedelt saadaolevad torrenteid alla laadida KaruMedia serveri.
  • Suvalises vormingus video striimi mahamängimine (embedded vlc)
    Enimlevinud videovormingutes filmide ja seriaalide jaoks on tänapäeval mp4 h.264 kodeering, mida Windows Media Player 12 (Windows 7 ja uuemad) oskab ilma probleemideta maha mängida. Probleemiks on aga *.mkv faili vorming, mida kasutatakse tavaliselt kõrgekvaliteedilise video konteinerina. Windows Media Player ei oska *.mkv vormingus videoid taasesitada, küll aga oskab seda teha VLC media player.
  • Kasutaja poolt vaadatud filmide ja pooleliolevate filmide info salvestamine.
    Kasutaja kogemuse vaatenurgas oleks väga hea kuvada filme, mida kasutaja on juba kasutajaliideses filmidest, mida kasutaja pole veel näinud.
  • Vahemälu kasutajaliidese ja serveri päringute vahele, et kiirendada kasutajale info kuvamist.
    Olenevalt kasutaja interneti kiirusest ja serveri koormusest võivad päringud võtta kasutaja jaoks liiga kaua aega.
  • Seriaalide otsing ja nende vaatamine
    KaruMedia server hoiustab endas peale filmide ka mingi koguse seriaale, oleks hea ka neid lasta otsida ning maha mängida kasutajal.
  • Kogumike loomine ja muutmine filmidest ja/või seriaalidest
    Ehk siis esitusloendite loomine.
  • Kasutaja kohalike seadistuste ja andmete sünkroniseerimine erinevate PirateNetflix klientide vahel.
    Vajab KaruMedia serveri tarkvara täiustamist üsna suures osas.

Võimalikud probleemid

  • Video striimimine ja üldiselt playeri osa
    Kuna see on üks tähtsamaid komponente, siis kõik probleemid, mis on sellega seotud, on kriitilised. Kuna meil on selle kohta hetkel olemas vaid visioon ja konkreetne tehnoloogiline lahendus puudub, võib see tekitada meile palju probleeme.
  • Team Foundation Serveri kasutamine
    Kuna see on meie kõigi jaoks esimene kogemus Team Foundationiga, siis on oodata sealt palju probleeme. Kõige suuremaks probleemiks siiani on olnud kui kaks inimest teevad sama klassi, siis tekivad merge probleemid, millest veel ei ole aru saanud.
  • Ajaline puudus
    Kuna projekt on meil mahukas ja meil kõigil on veel teised ained /töö, on tihti raske leida hetke, kus saaksime koos teha või arutada projektiga seonduvaid asjaolusid. On oht, et me ei jõua oma projektiga päris sinna kuhu me esialgsete plaanide kohaselt tahaksime jõuda.
  • Lahkarvamused
    Kuna me teeme projekti neljakesi ja kõik tahavad sellega tegeleda 100%-liselt, siis on tavaliselt ka meil neli visiooni, kuidas võiks see rakendus välja näha ja töötada. Peame leidma kompromisse ja tegema nii, nagu see oleks meie projektile parim.
  • Ettenägematud probleemid
    Iga projektiga peab varuma natuke just in case aega, sest alati juhtub mingi selline probleem, millega ei ole arvestatud.
  • Fundamentaalsed ja loogika vead
    Igas projektis on oht, et tekivad valed arusaamad. Kui need valed arusaamad tekivad projekti algusfaasis ja tulevad välja alles lõppfaasis, võib tekkida suuri probleeme.
  • Serveri maht
    Antud hetkel on KaruMedia serveri ressursid üsna piiratud (põhiliselt andmeedastus kiirus) ning mitme samaaegse kasutaja puhul võib tekkida teenuses tõrkeid.
  • Sõltuvus teistest teenustest (YTS, karumeedia jne)
    Meie rakendus sõltub üpris palju teistele teenustele. Kui need teenused peaksid mingil põhjusel maas olema, siis ei tööta ka meie rakendus.

Tehnoloogia

Kasutatav tehnoloogia:

  • C#
  • Windows Presentation Foundation
  • REST API kliendid
  • Windows Media Player
  • Team Foundation ja Git

Tehnoloogiline ülesehitus

  • PirateNetflixSolution
    • PirateNetflixServices
      Suhtlus media ja yts serveritega üle REST api ja ka kohalik andmebaas, kui see vajalikuks osutub.
      • BO
        • Movie
          Objekt, mis hoiab endas filmi infot
      • KaruMediaService
        REST API abstraktsioon Karu Media serveri tarvis
      • YtsService
        REST API abstraktsioon YTS lehe vahel
    • PirateNetflixWPF
      GUI Rakendus
    • PirateNetflixTests
      Erinevad Pirate Netflix testid