summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md19
-rwxr-xr-xrtv4d-dlbin35272 -> 35272 bytes
-rw-r--r--rtv4d-dl.c38
-rw-r--r--tcp.c2
4 files changed, 50 insertions, 9 deletions
diff --git a/README.md b/README.md
index eb6b81c..35e762f 100644
--- a/README.md
+++ b/README.md
@@ -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*
diff --git a/rtv4d-dl b/rtv4d-dl
index 2413e2f..e2343a1 100755
--- a/rtv4d-dl
+++ b/rtv4d-dl
Binary files differ
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);
diff --git a/tcp.c b/tcp.c
index 4d9418e..df49c30 100644
--- a/tcp.c
+++ b/tcp.c
@@ -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;