Pirate Netflix

From ICO wiki
Jump to navigationJump to search

Analüüs

Millega on tegu?

Meie projektiks on Windowsi töölaua rakendus, mille abil saab kasutaja enda isiklikus arvutis vaadata videosid mugavalt ja kiiresti. Meie rakendus sobib inimesele kellel on normaalne interneti ühendus ning soovib kokku hoida kõvaketta ruumi. Videod, mida kasutaja soovib vaadata asuvad meie serveris ja streamitakse sealt maha kasutades PirateNetflix rakendust. Kui videot meie serveris ei eksisteeri, siis laetakse see enne peer-to-peer failijagamisteenust kasutades serverisse ning siis streamitakse kasutajale. Kasutajale kuvatakse rakenduse käivitades soovitatavad videod, mis asuvad meie serveris, et kokku hoida aega mis kuluks video alla laadimisele. Kasutaja saab erinevate filtrite (video nimi, žanr, video ilmumise aasta) järgi videosid otsida ning kuvada. Samuti on pikemate videote jaoks olemas ka selle lühitutvustusvideo, mida saab eelnevalt vaadata, et olla valikus kindel. Lühitutvustusvideo 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 videote player. Embedded Youtube player lühitutvustusvideote mängimiseks, installeri loomine.
  • Joosep Voolmaa - YTS.ag REST API liidestus WPF rakendusega ja muu.

Funktsionaalsus

Must have

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

Nice to have

  • Kui soovitud video pole media serveris olemas, siis selle torrenti alla laadimine media serverisse
    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 videovormingute 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 videote ja pooleliolevate videote info salvestamine.
    Kasutaja kogemuse vaatenurgas oleks väga hea kuvada videoid, mida kasutaja on juba vaadanud kasutajaliideses eraldi Library vaatena. Samuti oleks hea salvestada faili vaatamise katkestamise hetk, et hiljem oleks võimalik samast kohast edasi vaadata.
  • 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.
  • Kogumike loomine ja muutmine videotest
    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 olukord, kus kui kaks inimest teevad sama klassi, siis tekivad merge probleemid, millest veel ei ole aru saanud.
  • Ajaline puudus
    Kuna projekt on 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 tihti tekib mingi 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 teistest teenustest. Kui need 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/VLC ActiveX
  • Team Foundation ja Git
  • MVW (Model View Whatever)

Tehnoloogiline ülesehitus

  • PirateNetflixSolution
    • PirateNetflix
      Klassiteek
      • BusinessObjects
        Siin on vajalikud BO'd(nt. MovieBO)
      • PirateNetflixServices
        Suhtlus media ja yts serveritega üle REST api (ja vajadusel suhtlus andmebaasiga)
        • Models
          • Movie
            Klass, Movie, mis hoiab endas filmi infot
        • KaruMediaService
          REST API abstraktsioon Karu Media serveri tarvis
        • YtsService
          REST API abstraktsioon YTS lehe vahel
      • Domain
        Andmebaas (kui vaja)
    • PirateNetflixWPF
      GUI Rakendus
      • ViewModels
        Vaatemudelid
      • Views
        Vaated(XAML kood ja selle codebehind)
    • PirateNetflixTests
      Erinevad Pirate Netflix testid