diff options
author | sijanec <sijanecantonluka@gmail.com> | 2020-12-13 18:54:32 +0100 |
---|---|---|
committer | sijanec <sijanecantonluka@gmail.com> | 2020-12-13 18:54:32 +0100 |
commit | 66da3e3728bb45599916304da9b398cb4c84ddb3 (patch) | |
tree | 604ec78287afed15e87c0c5605c91a922654ed0f /rtv4d-dl.c | |
parent | obvestila, da dela samo na GNU OS (diff) | |
download | rtv4d-dl-66da3e3728bb45599916304da9b398cb4c84ddb3.tar rtv4d-dl-66da3e3728bb45599916304da9b398cb4c84ddb3.tar.gz rtv4d-dl-66da3e3728bb45599916304da9b398cb4c84ddb3.tar.bz2 rtv4d-dl-66da3e3728bb45599916304da9b398cb4c84ddb3.tar.lz rtv4d-dl-66da3e3728bb45599916304da9b398cb4c84ddb3.tar.xz rtv4d-dl-66da3e3728bb45599916304da9b398cb4c84ddb3.tar.zst rtv4d-dl-66da3e3728bb45599916304da9b398cb4c84ddb3.zip |
Diffstat (limited to 'rtv4d-dl.c')
-rw-r--r-- | rtv4d-dl.c | 38 |
1 files changed, 32 insertions, 6 deletions
@@ -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); |