summaryrefslogtreecommitdiffstats
path: root/README.md
blob: 8d1012f945e1ce48c0e425d51c016f4d355af808 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# rtv4d-dl: program za prenašanje videoposnetkov iz arhiva TV SLO

## namestitev

### debian/ubuntu

uporabniki `amd64` debian/ubuntu distribucij lahko uporabljajo preprosto
namestitev prek upravitelja paketov `apt`.

```
wget https://sijanec.eu/pgp-key.txt -qO- | sudo apt-key add -
sudo echo deb http://prog.sijanec.eu/ $(lsb_release -sc) main \>\> /etc/apt/sources.list
sudo apt update
sudo apt install rtv4d-dl
```

### druge platforme

za namestitev na druge POSIX platforme si oglejte
[//git.sijanec.eu/sijanec/rtv4d-dl/releases](releases). tam so že prevedene
binarne datoteke za `amd64` arhitekturo.

## legalne stvari
z uporabo programa se strinjate z naslednjimi stavki:  
* avtorja ne boste tožili in se strinjate, da je program povsem legalen.
* program uporabljate na lastno odgovornost.
* če ni kje drugje avtor napisal drugače ali če to ni zakonsko drugače:
	- ne smete distribuirati programa in izdelovali kopij.
		- razlog: da lahko RTV v teoriji zahteva izbris programa iz Interneta
	- smete ga uporabljati samo za zasebno nekomercialno uporabo.
	- ne smete spreminjate izvorne kode
		- razlog: da lahko RTV kadarkoli blokira program prek user-agent niza.

## funkcije  
* prenašanje videoposnetkov iz arhiva kot odklenjene videodatoteke
* z različico 0.0.1 tudi prenašanje avdioposnetkov!
* z različico 0.0.3 tudi prenašanje televizijskih prenosov v živo
* z različico 0.0.4 tudi prenašanje v živo iz tujine
* z različico 0.1.0 tudi namestitveni paket za debian/ubuntu

## možnosti uporabe programa  
* prenos oddaje: `rtv4d-dl oddaja <URL/ID oddaje> [izhodna datoteka]`
	- primer: `rtv4d-dl oddaja 4d.rtvslo.si/arhiv/vreme/89614963`
	-	primer: `rtv4d-dl oddaja 89614963 89614963.mp4`
* prenos metapodatkov oddaje: `rtv4d-dl meta-oddaja <URL> [datoteka]`
	- primer: `rtv4d-dl meta-oddaja 89614963 89614963.txt`
	- opomba: nekateri metapodatki veljajo omejeno časa (video URL)
* prenos sličice oddaje: `rtv4d-dl slicica-oddaja <URL> [datoteka]`
	- primer: `rtv4d-dl slicica-oddaja 89614963 89614963.jpg`
* prenos zadnjih dveh ur prenosa v živo: `rtv4d-dl živo [2] [3] [4] [5]`
	- primer: `rtv4d-dl živo slo1 slo1 9999999 9999999` (prenese vse)
	- argument 2 je program, 3 je izhodni direktorij,
		4 je število sekund v preteklost, 5 je število sekund v prihodnost
* prenos podnapisov oddaje: `rtv4d-dl podnapisi <url> [datoteka]`
	- primer: `rtv4d-dl podnapisi 15486024 15486024.vtt`

# dodatne informacije:  
* pisanje v STDOUT: kot pot datoteke napišite `/dev/stdout`, pri oknih pa `con`
* program se poveže na \*.rtvslo.si, spremenite izvorno kodo za drugo
	infrastrukturo
* **živo**: za možne programe in razlago dolžine glej *dodatno o prenosu v živo*
* če RTV strežnik ne ponuja enotne .mp4 datoteke za oddajo ampak zgolj HLS, se
	bo oddaja shranila kot kosi prenosa v živo (datoteka.mp4 => datoteka/....m3u8)
	- take datoteke lahko kasneje združite z ukazom
		`cat datoteka/*.ts | ffmpeg -i - -c:v copy -c:a copy datoteka.mp4`

# trenutna izdaja programa:  
* program je bil nazadnje ročno testiran 29. januarja 2021 in takrat je DELOVAL.
* različica: 0.1.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.
* 0.0.3 - 24. december 2020: dodano prenašanje VTT podnapisov in prenosov v živo
* 0.0.4 - 30. december 2020: dodani alternativni strežniki za prenos v živo iz
	tujine
* 0.0.5 - 5. januar 2021: dodana podoknica z uporabo cygwin in ignoriranje
	binarnih prevedenih datotek iz git repozitorija - so pod
	[izdajami](releases).
* 0.0.6 - 10. januar 2021: če RTV narobe pošlje gzipano vsebino, se ji program
	izogne, ne bom več gradil okenskih datotek
* 0.1.0 - 11. januar 2021: paket za debian/ubuntu
* 0.1.1 - 11. januar 2021: standardizacija Makefile
* 0.1.2 - 29. januar 2021: dodano nalaganje geoblokiranih datotek prek HLS

# o
* program je spisan 100% v C programskem jeziku
* ne potrebuje nobenih knjižnic, razen seveda standardnih POSIX.
* navodila za grajenje (samo pod *GNU Compiler Collection*): make

## 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*
* narediti mehanizem za avtomatsko posodobitev binarne datoteke
	- namesto HTTP se bo uporabljajo preprosto podpisovanje, BREZ KNJIŽNIC
* ugotoviti mehanizem rotacije/ponovne uporabe identifikatorjev kosov v živo,
	glej [dodatno o prenosu v živo](#dodatno_o_prenosu_v_živo).

## predvajanje v živo
* ker predvajanje v živo na RTVSLO trenutno potrebuje Javascript, bi bilo
	uporabno narediti minimalističen HTTP/RTP strežnik, ki bi delal zahteve na RTV
	in kot izhod uporabniku ponudil pretok.
	- opomba: seveda predvajanje v živo deluje na VLC predvajalniku v formatu m3u8
		+ primer: [https://ž.ga/tvslo1](https://ž.ga/tvslo1) v VLC network stream
* RTV za avdio/radio v živo že ponuja možnost poslušanja brez javascripta, imajo
	namreč icecast2 strežnik na [mp3.rtvslo.si](mp3.rtvslo.si), tako da tega po
	mojem ni potrebno izdelati še v rtv4d-dl.
* RTV4D arhiv ponuja samo videokvalitete do 720p (1280x720 pikslov). Pri
	prenosu v živo pa je maksimalna velikost 1080p (1920x1080 pisklov). Če torej
	hočemo dobiti kvalitetno vsebino, jo moramo posneti, preden gre v arhiv.

### dodatno o prenosu v živo
* ne vemo, koliko sekund posnetkov hrani strežnik, zato predvidevamo, da je
	vsak kos dolg toliko, kot tisti v kazalu, če pa imajo tisti v kazalu različne
	dolžine, pa se izbere najkrajša in se zaokroži na celo sekundo na dol.
*	za avtomatsko pridobitev vseh videoprogramov, ki so na voljo kot prenosi v
	živo, bi bilo potrebno narediti podporo za HTTPS, zato je treba poznati
	kratice programov na pamet: `slo1`, `slo2`, `slo3`, `kp1`, `mb1`, `mmctv`.
* če je število sekund v preteklost večje od vsebine, ki jo ima strežnik v
	kazalu, bo shranjena vsa vsebina, ki je na strežniku za nazaj (~10 ur).
* če je število sekund v prihodnost večje od 0, bo program čakal, da izide nov
	delček pretoka, in ga naložil sproti, vse do izpolnjene kvote.
* program najprej naloži v preteklost, nato v prihodnost, med nalaganjem v
	prihodnost ga sicer lahko prekinete, vendar to naredite med tem, ko poteka
	čakanje na nov segment, ne med nalaganjem segmenta ali tik po nalaganju.
* prenos v živo se shrani kot m3u8 playlist in mpeg ts datoteke. te datoteke
	se lahko normalno združi v eno z ukazom `cat *.ts > zdruzene.ts` in se odpre
	kar zdruzene.ts v VLC predvajalniku. VLC podpira tudi direktno odprtje
	playlist.m3u8 datoteke in branje po kosih.
* če program ni bil prekinjen, bo po končanem prenosu v stdout napisal
	metapodatke pretoka v živo.
* **težava:** vsake toliko časa bo strežnik številko kosa rotiral nazaj. to
	prepreči snemanje neskončno v prihodnost in program bo ostal v krogu.
* za omogočanje snemanja iz tujine se gostiteljska imena pretočnih strežnikov
	zamenjajo s slovenskimi. če slovenski strežniki niso več aktualni, program
	ne bo delal. v tem primeru me kontaktirajte in med prevajanjem (angl.
	*compilation*) nastavite zastavico RTV_NASTAVITEV_BREZ_LOKACIJSKIH_SPREMEMB.