» »

Maco se igra

Maco se igra

BluPhenix ::

Kot ste že ugotovili, ugotavljanje kateri program je boljši ni debata za tukaj, zato je ne nadaljujte.
Podpisa ni več, ker so me poskušali asimilirati.

MaCoFaCo ::

@sverde21: sem dodal komentarje k izvorni kodi :)

Glede AJAX-a in počasnosti: iz dneva v dan je več obiskov na strani, na strežniku kjer gostujem pa so še druge web aplikacije. Zaenkrat še ne morem iti v nakup dedicated strežnika, saj to stane vsaj dva tisoč eurov :)

Drugače pa moram povedati, da meni deluje dokaj hitro vse skupaj.

MaCoFaCo ::

Na prvo stran sem dodal osnutek dokumentacije, ki bo s časom rasla. Če slučajno koga zanima orodje s katerim je generirana dokumentacija: Sandcastle.

MaCoFaCo ::

Samostojna aplikacija (v razvoju):



-komunikacija s strežnikom poteka s pomočjo spletnih servisov (XML komunikacija)
-načeloma bi morala delovati tudi z Mono projektom na Linuxu in drugih operacijskih sistemih
-v prihodnosti bo mogoče implementiran autoupdate aplikacije

MaCoFaCo ::

MaCoFaCo ::

Objava podnapisov in nekatere nove opcije na vmesniku:
-izbira video datoteke in izračun unikatnega deskriptorja
-možnost samodejnega polnjenja IMDB polja
-dodatni naslovi (alternativni naslovi filma za bolj učinkovito iskanje)
-možnost določanja več različic za objavljeni podnapis

bluefish ::

odličen napredek. Poleg tega pa je baza podnapisov iz dneva v dan večja.
Pri programu pa bi bilo res dobro, da bi vključil autoupdate ali pa vsaj prikaz obvestila, ki sporoča, da je izšla nova verzija prrograma.

edit: pa še manjši error


stvar pa se prikaže, če v času ko se nalaga Komentar, klikneš na Nastavitve oz. na katero koli drugo sekcijo.

Zgodovina sprememb…

  • spremenil: bluefish ()

MaCoFaCo ::

@blueFish: hvala, bom pogledal če lahko kaj storim glede tega errorja.

----------------------

Razmišljam o algoritmu, ki bo izračunal deskriptor video datoteke. Moja prva ideja je variabilni deskriptor, ki video datoteko razbije na kose. Pri datotekah večjih od 650 MB bi bili kosi veliki npr. 150 MB.
Za vsak kos bi se izračunal MD5 hash. To bi omogočalo, da se najde pravi podnapis tudi če je kakšen bit/bajt v video datoteki pokvarjen/napačen in se ne ujema 100% z referenčnim zapisom na spletni strani.

Deskriptor bi bil torej tak:

4 B - informacija o velikosti datoteke v MB
16 B - MD5 hash prvih 128 MB
16 B - MD5 hash drugih 128 MB
...
16 B - MD5 hash zadnjih 128 MB

Ima kdo kak predlog?

Zgodovina sprememb…

Tody ::

O čem ti to ? ČE misliš gostovat video datoteke potem good luck :)

Podnapisi pa nevem če so tok velki

MaCoFaCo ::

Narobe smo se razumeli :)

Želim izpopolniti sistem za samodejni prenos podnapisov. Ti boš na svojem računalniku izbral video datoteko, program bo izračunal nek hash in povprašal na spletni strani če ima ustrezne podnapise za izbrani video.

Podobno kot npr. deluje freedb za audio CD-je: http://www.freedb.org/en/faq.3.html#11

Jaz sedaj iščem ustrezen algoritem, ki bo izračunal ta hash.

Upam da sem bil bolj jasen :)

Zgodovina sprememb…

  • spremenilo: MaCoFaCo ()

Tody ::

JA je približno jasno ampak nimam pojma kako bi ti pomagal :8)

MaCoFaCo ::

blueFish: lahko prosim poskušaš ponoviti napako (nekaj sem dopolnil)

----------------------

Verjetno se bom odločil za naslednjo varianto:

Primer izračunanega hash-a neke video datoteke: 0f95 00002bbcc000 a18558fb 7af919f8 af280ffd (skupaj 20 B)

Pomen je sledeč:
0f95 ............ video traja 3989 sekund (2 B)
00002bbcc000 .... datoteka je dolga 733.790.208 B (6 B)
a18558fb ........ crc32 prvih 128 KB datoteke (4 B)
7af919f8 ........ crc32 128 KB datoteke na sredini (4 B)
af280ffd ........ crc32 zadnjih 128 KB datoteke (4 B)

Na podlagi teh informacij bo spletni servis znal zanesljivo vrniti ustrezne podnapise.
(trenutno je implementiran samodejni prenos podnapisov glede na ime različice, kar pa ni toliko zanesljivo)

Zgodovina sprememb…

  • spremenilo: MaCoFaCo ()

sverde21 ::

Pomoje je bolje, da pustiš prenašanje podnapisov glede na ime, ker drugače bo moral uporabnik pri nalaganju podnapisov obvezno imeti ta program, to bi pa pomoje odbijalo nalagalce (vsaj nekatere), saj se mu nebi splačalo za en podnapis vlečt program dol, in preden program potegne dol, potem še ugotovi da rabi .NET Framework 2.0 in da še tistega downloadat,.... ga bo že minilo veselje do nalaganja in bo raje naložil h konkurenci.
<?php echo `w`; ?>

MaCoFaCo ::

@sverde21: samodejni prenos podnapisov bo le dodatek za tiste, ki bodo to hoteli :) Klasično iskanje, objavljanje novih podnapisov in prenašanje preko spletnega vmesnika bo vedno funkcioniralo.

Glede .NET frameworka pa tako: večina ljudi ga že ima, če še nima pa bo :) V Visti naprimer je že po defaultu .NET framework 3.0, kar pomeni da bi takšna aplikacija tam že v štartu delala.

Osebno se mi zdi podpora samodejnim podnapisom zelo pomembna, ker to lahko nekemu laiku zelo poenostavi prenos podnapisov (imel bo že vse servirano :). Tudi meni, kot naprednejšemu uporabniku bo to zelo uporabno, ker bom prihranil na času, ki bi ga drugače porabil za ročno iskanje.

bluefish ::

napaka se pojavi še zmeraj, vendar le v primeru, da sem prijavljen. Če pa nisem, pa gre vse lepo.

MaCoFaCo ::

Mi lahko še poveš kateri brskalnik uporabljaš in verzijo.

bluefish ::

Firefox 2.0.0.4
Sicer pa se mi zdi, da se problem pojavi le v primeru dolgega nalaganja strani. Prej sem namreč testiral ob vklopljenem P2P prometu, po izklopu (ko se Komentarji naložijo takoj) pa napake nisem mogel ponoviti. Res pa je, da v najnovejši Operi te napake ne dobim v nobenem primeru.
Skratka, bolj se mi zdi, da napaka ni v sami strani, ampak v brskalniku in njegovem načinu nalaganja strani.

Zgodovina sprememb…

  • spremenil: bluefish ()

CaqKa ::

macofaco, meni se zdi ideja o iskanju podanapisa s hashom super :) zelo inovativno razmišljanje
lahko se namreč tudi zgodi, da ima kdo film poimenovan kar nekak... :)
itak na spletu ostane še vedno ista funkcionalnost kot je sedaj.
predlagal bi edino to, da aplikacija po defaultu išče po imenu, oziroma da vpraša ali želi iskati po 'prstnem odtisu' datoteke in šele takrat vklopi tale napredni sistem.
ker seveda bo ta sistem potreboval ene tri minute da bo hash naredil.

nevem če obstaja source za tole ampak morda ti bo koristilo:
http://www.beeblebrox.org/hashtab/index...

Zgodovina sprememb…

  • spremenil: CaqKa ()

MaCoFaCo ::

Hvala za link, vendar algoritem za računanje hash-a imam že implementiran :)

Lahko povem tudi kako hiter je: 8.8 sekund je porabil za "indeksiranje" 24.66 GB video datotek (47 datotek) oziroma 2.8 GB na sekundo (s tem da sem meril v debug načinu, disk na prenosniku pa zmore le 4.200 rpm).

Algoritem je pa v mojem zgornjem postu opisan.

opomba: 24.66 GB = 24.66 gigabajtov = 197.28 gigabitov

CaqKa ::

a ni tak da moreš za hash prebrat vsak bit?

MaCoFaCo ::

Za čist pravi hash ja, samo ne bi bilo praktično (počasnost, plus beri dalje). Verjetnost, da bi pri dveh filmih dobili enak crc32 na vseh treh mestih je zelo zelo zelo majhna :) Če pa ga že dobimo pa imamo še informacijo o dolžini filma in velikosti.

Poleg visoke hitrosti indeksiranja pa bi ta algoritem znal najti podnapis za film, ki ni 100% enak referenčnemu hashu (pri kakšnem pokvarjenem bitu). Če bi delal en sam full hash pa bi en spremenjen bit vplival na celoten crc32 in podnapisa za takšen film ne bi mogel najti.

Algoritem je po mojem čisto sprejemljiv.

Zgodovina sprememb…

  • spremenilo: MaCoFaCo ()

CaqKa ::

>>> Verjetnost, da bi pri dveh filmih dobili enak crc32 na vseh treh mestih je zelo zelo zelo majhna :) Če pa ga že dobimo pa imamo še informacijo o dolžini filma in velikosti.

sicer nisem programer ins e na te stvari ne spoznam tako natančno, ampak ni ideja crcja in vseh hashev ravno v tem da boš dobil enak hash? sej razumem da se kak bitek med kakim prenosom porazgubi... nisem še slišal da bi se jih dosti porazgubilo...
no jaz bi tak naredil da bi pogledal malo statistiko, kolko se jih dejansko porazgubi.. potem pa bi fajl razdelil na xx megabajtov in za vsakega računal hash. če se jih y(>statistično pokvarjenih bitov) ujema lahko z neko zagotovostjo trdiš da se gre za enaki datoteki.

če se pa gre za neke datoteke, kjer je nekdo začetek in konec porezal... potem pa vsaj po mojem mnenju brez primerjave slik ne moreš na podlagi golih bitov ugotovit ali gre za enak film ali ne...(filename odštet)

MaCoFaCo ::

Identični bitni zapis da vedno enak hash, to je jasno. En sam spremenjen bit v vhodnem zapisu povzroči čisto drugi hash.

Zaradi tega bi izračunal hashe iz treh koščkov video datoteke - 128 KB na začetku, sredini in koncu. Če bi bila napaka/napake na enem kosu, bi lahko še vedno ugotovil pravi podnapis iz preostalih dveh hashev. Če pa so napake na vseh treh kosih mi preostaneta samo še dolžina filma in velikost datoteke (za napako se šteje tudi zamik - tudi če je ta le en bajt).

Bolj zanesljiva bi seveda bila dejanska analiza videa/slik oziroma zvoka. Je pa to veliko bolj komplicirano in bi se bilo potrebno bolj poglobiti v zadevo (da ne govorimo o temu koliko časa bi takšna analiza vzela). Če pa ima mogoče kdo kak dober link na to temo pa naj kar prilepi.

To bi mogoče lahko bila ena dobra tema za kakšno diplomsko nalogo :)

zile ::

Media player classic ima možnost poizvedovanja za podnapis, če nastaviš pravilni url v nastavitvah.
Zdej me pa neki zanima. Recimo, da imam neko avi datoteko, ki jo zaženem z MPC, ta gre avtomatsko poizvedovat na tvojo stran za podnapisom in če najde match, mi ga avtomatsko naloži. Ali je to izvedljio, oz če ni, ali bo v bodoče ?

CaqKa ::

macofaco.. kako pa boš določil kje je sredina filma? :)

MaCoFaCo ::

@zile: mišljeno je tako kot si napisal. S tem, da bom jaz pripravil primer aplikacije kako se to naredi oz. uporablja, v MPC pa bo to vgradil kdo drugi.

Zadevo se bo lahko vgradilo v katerokoli video aplikacijo na katerikoli platformi (.NET framework za to ni potreben, le web servise je potrebno znati klicati).

Stvar je torej čisto izvedljiva. Če bi zunanji DivX predvajalniki imeli povezavo do interneta bi stvar lahko delovala tudi tam :)

@CaqKa: (velikost datoteke / 2) - 64 KB, kjer je velikost datoteke >= 128 KB, pri manjših datotekah pa bo hash preprosto izračunan nad celotno datoteko.

Bom objavil tu algoritem v C#.

CaqKa ::

tisto deljenje z 2 me bega.
kodo pa ni treba objavit.. bo dovolj če daš kak link do kode če ti je želja. le opozorit želim na kakšen problem ki ga vidim pri zadevi.

MaCoFaCo ::

Kje vidiš problem? Ko veliksot ne bo deljiva z 2?

sverde21 ::

@MaCoFaCo: tale tvoj sistem tud mene malo bega. Pomoje bi blo najbolje, da narediš md5 hash celega filma in to je to, ker tisto z deli je mal čudn (če manjka nekaj filma na koncu bo sredina drugje!!). Itaq pa imajo vsi torrent odjemalci preverjanje prenešene vsebine, tako da se ti z parimi pokvarjenimi biti ni treba ukvarjat, pač v primeru, da se hash ne ujema preveriš še film po naslovu, FPS ipd. to pa pomoje nebi bilo tako težko implementirati.

Torej na kratko, ne kompliciri z 10imi hashi ampak naredi md5 ali sha1 (malce počasnejše) filma in to je to. Možnosti za napako med prenosom je zelooo malo pri današnji tehnologiji prenosa podatkov.
<?php echo `w`; ?>

mare_ ::

Problem bo, če bo kdo odrezal oz. kakorkoli spreminjal film, ker potem hash ne bo več isti. Edina prednost tega pred recimo md5 hashem celega filma (ali pa morda celo samo prvih par MB) je potem res samo, če je par bitov vmes drugačnih, velikost datoteke je pa še vedno ista. To se pa verjetno ne dogaja ravno pogosto, ali? :) Kaj pa če res vzameš samo prvih par mb in njihov md5? Hitreje bo izračunano, na ime datoteke je itak neobčutljivo, ravno tako pa tudi na spremembe po tistem začetku (recimo odrezan konec - če kdo odreže špico npr), nad katerim računaš hash. Verjetno pa tudi ni kaj dosti filmov, ki bi imeli identične začetke :P

MaCoFaCo ::

Sem zdaj za test naredil MD5 na celotni datoteki, ki je velika 700 MB. Potreboval je celih 48 sekund kar je logično, saj je moral prebrati čisto vsak bajt. Da bi torej delal MD5 nad celotno datoteko odpade.

To, da se dela hash samo na začetku pa niti ni tako slabo, ker (kot je povedal mare_) lahko konec režemo pa bo vseeno. Zdaj je samo še vprašanje koliko podatkov naj vzamemo za izračun hasha :) Po mojem bi bila dovolj že zelo majhna količina, ne škodi pa, če vzamemo nekoliko več, recimo 5 MB. Na testu je potreboval približno 93 milisekund za izračun MD5 hasha za 5 MB veliko datoteko, kar je sprejemljivo.

MaCoFaCo ::

Primer izračunanega hasha po novem: 000f9500002bbcc00018d5d8c1747b005aaa2800a18e81de9711

Dump kode

Dump kode sem dal v drugo temo zaradi širjenja oken. Za v naprej bi te prosil, če lahko po oddaji pogledaš ali koda kaj raztegne okno, še boljše, če jo daš na kakšen strežnik in linkaš v temo. Hvala. - BluPhenix

Zgodovina sprememb…

MaCoFaCo ::

Na web sem dal novo verzijo, ki na seznamu podnapisov prikazuje manj podrobnosti, zato bi se moralo lepše prikazovati na zaslonih z resolucijo 1024x768.

Kontrola za seznam podnapisov je sedaj tudi pripravljena za več različic.

p.s. če bo seznam prvič izgledal nekoliko "čudno" naredite refresh strani, da se naloži nova .css datoteka

MaCoFaCo ::

Objavljena je verzija 0.9.4, ki omogoča dodajanje več različic k posameznemu podnapisu. Novo različico k podnapisu lahko doda vsak uporabnik, ki se predhodno prijavi v sistem z uporabniškim imenom in geslom.

Dodajanje nove različice:


Primer podnapisa z dvema različicama:

MaCoFaCo ::

Iz firbca sem si še jaz inštaliral beta verzijo Safari brskalnika, da vidim kako prikaže mojo stran (in kako se razume z Ajax-om in raznimi javascripti, ki jih imam na strani kar veliko).

Zadeva funkcionira! Na seznam podprtih brskalnikov lahko tako prištejem še enega. Big success :)

MaCoFaCo ::

Razvoj samostojne aplikacije še vedno poteka je pa razvito do te mere, da osnovno iskanje že deluje.

Web vmesnik:


Enako iskanje na Windows vmesniku:


Prednost samostojne aplikacije je med drugim tudi manjši pretok podatkov med strežnikom in klientom (HTML pri web vmesniku (oblika + podatki) proti čistemu XML-ju pri samostojni aplikaciji (samo podatki)).

Tale moj projekt je tudi lep primer večnivojske arhitekture:

mare_ ::

Pri naprednem iskanju, ko je kurzor v polju za vpis sezone/epizode, ne dela enter. Tečno ;) In pa tudi če se odpre tisti meni s predlogi - če ne izbereš nobenega predloga, meni ni izgine, tudi ko se prikažejo rezultati iskanja in zakriva del vsebine. Tudi tečno ;)

Zgodovina sprememb…

  • spremenil: mare_ ()

MaCoFaCo ::

Evo, mam enega pridnega testerja :P Bo popravljeno :)

mare_ ::

Ko boš obogatel s to stranjo, glej, da dobim delež :P

alum ::

Zakaj enostavno ne pobereš podnapisov z drugih strani in jih naložiš na svojo?

S tem bi bila tvoja stran veliko bolj konkurenčna. Načeloma so avtorji podnapisov zapisani znotraj samega podnapisa. Pa tudi, če niso, te pravno za to ne bo nihče preganjal (v najslabešm primeru jih boš moral sneti). Če se motim naj me kdo popravi.

Kot kaže tudi druge strani delujejo tako (razen, če je jazsor na strani podnapisi.net prevedel 20913 podnapisov).

MaCoFaCo ::

Bil sem na dopustu, zato se oglašam šele zdaj :)

@mare_: sem popravil

@wakum: potem bi imel prevelik obisk :P

Nekaj razlogov:
-s takšnim programom bi lahko preobremenil tuje strežnike, kar bi povzročilo nezadovoljstvo uporabnikov/administratorjev tistega strežnika

-ne bi utegnil preveriti tolikšne količine podnapisov (podvojeni podnapisi, nekvalitetni podnapisi, ...) -> potreba po moderatorjih

-diskovni prostor na strežniku imam trenutno omejen

-večje je povpraševanje po novejših podnapisih, zato je (trenutno) bolj pomembno da smo na tekočem z novejšimi podnapisi (starejši podnapisi se prenašajo le tu pa tam in so bolj arhivskega pomena)

-aplikacija še ni dokončno razvita, zato je večja prioriteta na razvoju kot na čem drugem

roli ::

Še posebno podnapisi za kako starejšo serijo ti manjkajo.

Ker mi gredo podnapisi.net že prav na k*****.Skoraj vsakič,ko tam iščem podnapise so ob strani slike popolnoma golih žensk.Včasih je še kaj drugega ampak ponavadi so slike tega.Res je, da gre za oglaševanje ampak na stran kjer so podnapisi pa to ne spada. Tam je sicer tudi več oglasov kot podnapisov.
http://www.r00li.com

VASkO ::

mene pa zanima a je server down ali zakaj webservisi ne vracajo nic? movielauncherja sem si malo predelal, dodal sem opcijo GOM playerja pa z debuggerjem sel skoz in servis ne vraca rezultata za noben naslov, tudi ce ga rocno nastavim, npr. "88 minutes", ki pa je preverjeno na strezniku.

MaCoFaCo ::

@rolihandrej: jao, kaj se buniš :P

@VASkO:
Me veseli, da se nekdo igra tudi s tem :)

MovieLauncher uporablja metodo "DownloadByRelease", ki podnapise prenese na podlagi različice filma oz. po domače - po imenu datoteke (in ne po naslovu filma).

Če na strani poiščeš podnapise za 88 minutes boš na seznamu zadetkov videl ime različice. Če bi želel, da ti MovieLauncher samodejno prenese te podnapise bi video datoteko moral imeti poimenovano tako kot je ime različice (na koncu je še seveda .avi končnica). Če se torej različica kliče "film.dvdrip.krneki" se mora datoteka imenovati "film.dvdrip.krneki.avi" (število sličic na sekundo, ki se izpiše v oklepaju zraven ni del različice).

To je pač najbolj primitiven način samodejnega prenosa podnapisov. Naprednejša varijanta bo uporabaljala funkciji "SearchByHash", ki vrne seznam ustreznih podnapisov za film (ne glede na ime datoteke) in "DownloadByID", ki prenese enega izmed teh podnapisov (glej tudi dokument http://www.subtitles-on.net/Development.aspx).

Če imaš še kakšno vprašanje povej.

MaCoFaCo ::

Objavljena je nova verzija, ki prinaša uporabno novost: podnapisom oz. filmom lahko dodajamo alternativne naslove (npr. angleškemu naslovu lahko dodamo slovenski naslov), kar iskanje podnapisov dodatno olajša.
Dodatne naslove lahko vnašajo le prijavljeni uporabniki, uporabljajo pa jih lahko vsi.

Za primer sem nadaljevanki Lost dodal slovenski naslov in nato uporabil iskanje:


V podrobnostih podnapisa so vidni vsi dodatni naslovi:


Prijavljeni uporabniki lahko dodajajo nove naslove oz. naredijo prijavo neustreznega naslova:


Dodajanje novega naslova je zelo enostavno:

MaCoFaCo ::

Glede na to, da je stran stabilna sem se odločil za naslednji korak - prevod uporabniškega vmesnika v druge jezike. V praksi to pomeni prevod ene same XML datoteke in stvar je že pripravljena :)

Angleška različica (ni še javno objavljeno):

MaCoFaCo ::

Objavljena je verzija 0.9.6 ( klik za podrobnosti).

Pripravljena je tudi stran "Prevodi", kjer bodo na voljo datoteke s prevodi. Nekaj zadev sicer moram še "prevesti" v slovenščino, kdor pa bi želel pomagati pri prevodu v kakšen drug jezik naj me kontaktira (angleščino že imam).

Primer trenutne datoteke za slovenščino: klik

gzibret ::

Maco - pohvalno, da si dal med povezave tudi ST7U :D

Samo vseeno nekaj - zakaj je desno zgoraj klik na jezik, ko pa lahko izbiraš le med slovenščino?
Vse je za neki dobr!

MaCoFaCo ::

Trenutno je res malo glupo, vendar sem vseeno pustil tako, ker:
-je tako bolj očitno, da bo aplikacija večjezična
-nočem delati izjem pri enem jeziku (prihranil sem en if stavek -> optimizacija :P)

Pri dveh jezikih izgleda malo lepše:

CaqKa ::

govora je o tem da je nesmiselno imeti izbiro če pa je ni.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

podnapisi.net (strani: 1 2 3 )

Oddelek: Izdelava spletišč
13336099 (4428) donvito
»

Sublight - program za samodejni prenos podnapisov (strani: 1 2 3 49 10 11 12 )

Oddelek: Zvok in slika
579110157 (14761) Morison
»

Podnapisi.net - kak je možno, da ni angleških podnapisov, hrvaški pa so?

Oddelek: Loža
91856 (1311) gregor_m
»

Linki s podnapisi za filme (strani: 1 2 )

Oddelek: Zvok in slika
50178416 (55612) Dead_Meat
»

Program za avto download podnapisov (strani: 1 2 3 4 5 )

Oddelek: Zvok in slika
21730718 (17225) KontraCepec

Več podobnih tem