diff options
-rw-r--r-- | README.md | 19 | ||||
-rwxr-xr-x | rtv4d-dl | bin | 35272 -> 35272 bytes | |||
-rw-r--r-- | rtv4d-dl.c | 38 | ||||
-rw-r--r-- | tcp.c | 2 |
4 files changed, 50 insertions, 9 deletions
@@ -28,8 +28,12 @@ z uporabo programa se strinjate z naslednjimi stavki: infrastrukturo # trenutna izdaja programa: -* program je bil nazadnje ročno testiran 11. decembra 2020 in takrat je DELOVAL. -* različica: 0.0.1 +* program je bil nazadnje ročno testiran 13. decembra 2020 in takrat je DELOVAL. +* različica: 0.0.2 + +## dnevnik sprememb: +* 0.0.2 - 13. december 2020: sedaj pravilno naloži samo največjo kvaliteto, pred + tem se naloži naključna kvaliteta. # o * program je spisan 100% v C programskem jeziku @@ -42,6 +46,17 @@ z uporabo programa se strinjate z naslednjimi stavki: [Cygwin](http://cygwin.com), vendar tega še nisem testiral. če komu uspe, naj mi pošlje `Makefile` +## formatiranje kode +* K&R komentarji +* GNUC +* levi zaviti oklepaj na isti vrstici kot funkcija, desni na svoji vrstici +* vrstica max. 80 znakov, upoštevajoč, da tabulator šteje za dva +* presledek za imenom funkcije in argumenti, vendar le ob deklaraciji +* enojni presledki za spacing so lahko izpuščeni, da nista potrebni dve vrstici +* tabulator za indentacijo, tabulator naj je izrisan kot dva presledka +* IF z enim stavkom naj nima zavitih oklepajev, razen, če je to nujno (f f e e) +* preprocesorske funkcije naj delujejo kot en blok kode, pazi pri aritmetiki () + # še za narediti * dodati podporo za varno povezavo, sedaj gre vsa komunikacija z RTV4D kot HTTP. - nizka prioriteta, bolje obdržati formo *brez knjižnjic* Binary files differ@@ -58,7 +58,7 @@ #define RTV_JWT_SIZEOF 43+1 #define RTV_PREDVAJALNIK_URL "http://4d.rtvslo.si/arhiv/v/%u" #define RTV_PREDVAJALNIK_URL_SIZEOF 32+1 + 12 -#define RTV_VER "0.0.1" +#define RTV_VER "0.0.2" struct meta_oddaja { size_t naslov_sizeof; @@ -240,15 +240,16 @@ int rtv_meta_izpolni(struct meta_oddaja * m) { char * odg; size_t sizeloc; size_t i, j; + unsigned short int nasel_addaptivemedia = 0; /* glej iskanje stream URLja */ char * metakeys[] = {"\"title\"", "\"showId\"", "\"genre\"", \ "\"description\"", "\"showDescription\"", "\"duration\"", "\"jwt\"", \ "\"showName\"", "\"source\"", "\"publishDate\"", "\"mediaType\"", \ "\"orig\"", "\"broadcastDate\"", /* getMedia query: */ "\"http\"", \ - "\"https\"" }; + "\"https\"", "\"addaptiveMedia\"" }; char * cp; #define RTV_META_IZPOLNI_METAKEYS_SIZEOF 13 /* hkrati offset za getMedia */ #define RTV_META_IZPOLNI_METAKEYS_GETMEDIA_FINAL \ - (RTV_META_IZPOLNI_METAKEYS_SIZEOF+1)+1 /* zadnji+1 za getMedia */ + (RTV_META_IZPOLNI_METAKEYS_SIZEOF+3) /* zadnji+1 za getMedia */ #define RTV_META_IZPOLNI_VALUE (odg+i+strlen(metakeys[j])+2) #define RTV_META_IZPOLNI_VALUE_INTERNAL RTV_META_IZPOLNI_VALUE snprintf(m->get_meta_url, RTV_API_META_URL_SIZEOF, RTV_API_META_URL, m->id); @@ -364,6 +365,14 @@ int rtv_meta_izpolni(struct meta_oddaja * m) { goto rtv_meta_izpolni_returncleanly; } fflush(odgstream); + /* + * sedaj pridobimo direktni URL do mp4 datoteke, ki ima keylockhash v GET + * parametru. OPOMBA: treba je najti NAJKVALITETNEJŠO datoteko, ker RTVSLO + * strežnik pošilja zmešan vrstni red JSON parametrov, bo treba najti drug + * način. ugotovil sem, da, če je stream v addaptiveMedia JSON podobjektu, + * bo ta vedno največji, če pa obstaja samo en stream, pa addaptiveMedia + * podobjekta sploh ne bo. torej, če se je string addaptiveMedia pojavil + * tik pred tem URLjem, bo ta najboljši in lahko nehamo. */ for (i = 0; i < ftell(odgstream); i++) { for (j = RTV_META_IZPOLNI_METAKEYS_SIZEOF; j < RTV_META_IZPOLNI_METAKEYS_GETMEDIA_FINAL; j++) { @@ -371,22 +380,39 @@ int rtv_meta_izpolni(struct meta_oddaja * m) { switch (j-RTV_META_IZPOLNI_METAKEYS_SIZEOF) { case 0: /* http */ /* videofile */ RTV_META_IZPOLNI(posnetek_url, RTV_META_IZPOLNI_V, s, '"', char); + if (nasel_addaptivemedia == 1) { + RTV_NAPISI(HROSC, "Izmed več streamov izbral najboljšega."); + goto rtv_meta_izpolni_naselnajboljsistream; + } + nasel_addaptivemedia = 0; break; case 1: /* https */ if (m->posnetek_url[0] == '\0') { - RTV_META_IZPOLNI(posnetek_url, RTV_META_IZPOLNI_V, s, '"', char); + RTV_META_IZPOLNI(posnetek_url, RTV_META_IZPOLNI_V, s, '"', + char); fprintf(stderr, "test: %s\n", m->posnetek_url); memmove((m->posnetek_url)+4, (m->posnetek_url)+5, strlen((m->posnetek_url)+5)+1); RTV_NAPISI(HROSC, "Popravil HTTPS URL na HTTP"); + if (nasel_addaptivemedia == 1) { + RTV_NAPISI(HROSC, "Izmed več streamov izbral najboljšega."); + goto rtv_meta_izpolni_naselnajboljsistream; + } } + nasel_addaptivemedia = 0; + break; + case 2: /* addaptiveMedia */ + nasel_addaptivemedia = 1; + RTV_NAPISI(HROSC, "Naslednji najden pretok bo najboljši."); break; default: - RTV_NAPISI(OPOZORILO, "Doseg nedefinirane kode!"); + RTV_NAPISI(OPOZORILO, "Doseg nedefinirane kode; case=%lu", + j-RTV_META_IZPOLNI_METAKEYS_SIZEOF); } } } - } + } /* endfor: for (i = 0; i < ftell(odgstream); i++) */ + rtv_meta_izpolni_naselnajboljsistream: rtv_meta_izpolni_returncleanly: fclose(odgstream); @@ -13,7 +13,7 @@ #include <string.h> #include <sys/time.h> #define ERR_INET_ADDR "0.9.9.0" -#define TCPC_READ_BUF 1024 +#define TCPC_READ_BUF 1048576 /* en megabajt */ union ip_conv { unsigned char c[4]; struct in_addr in; |