summaryrefslogtreecommitdiffstats
path: root/rtv4d-dl.c
diff options
context:
space:
mode:
Diffstat (limited to 'rtv4d-dl.c')
-rw-r--r--rtv4d-dl.c38
1 files changed, 32 insertions, 6 deletions
diff --git a/rtv4d-dl.c b/rtv4d-dl.c
index 83c053c..69442e0 100644
--- a/rtv4d-dl.c
+++ b/rtv4d-dl.c
@@ -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);