Differences between revisions 36 and 37
Revision 36 as of 2020-06-30 11:47:23
Size: 23479
Editor: tikola
Comment:
Revision 37 as of 2020-06-30 11:47:56
Size: 23480
Editor: tikola
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Ohje on kokoelma nm:n aloittamasta Ubuntu-fi-foorumilla julkaistusta säikeestä: http://forum.ubuntu-fi.org/index.php?topic=29787.0,jonne keskustelu tästä wikistä voidaan keskittää. Tämän ohjeen alkuosa perustuu pääosin tikola:n viimeaikojen kokemuksin VDR:n asentamisesta erilaisiin Ubuntu versioihin. Nyt viimeisimpänä ohjetta on päivitetty Ubuntu 20.04 ympäristöön tehdyn asennuksen perusteella, jossa käytettiin mahdollisimman paljon Ubuntun omia pakettilähteitä. On myös mahdollista käyttää ulkopuolisia epävirallisia lähteitä tai kääntää jopa ohjelma itse, mutta perustoiminnot toimivat kyllä Ubuntun omalla paketoinnilla erinomaisesti, eikä muulle ole tarvetta, kuin joidenkin harvinaisempien VDR laajennusosien takia. Tällä hetkellä VDR versio Ubuntun pakettilähteissä on 2.4.x. Ohje on kokoelma nm:n aloittamasta Ubuntu-fi-foorumilla julkaistusta säikeestä: http://forum.ubuntu-fi.org/index.php?topic=29787.0 ,jonne keskustelu tästä wikistä voidaan keskittää. Tämän ohjeen alkuosa perustuu pääosin tikola:n viimeaikojen kokemuksin VDR:n asentamisesta erilaisiin Ubuntu versioihin. Nyt viimeisimpänä ohjetta on päivitetty Ubuntu 20.04 ympäristöön tehdyn asennuksen perusteella, jossa käytettiin mahdollisimman paljon Ubuntun omia pakettilähteitä. On myös mahdollista käyttää ulkopuolisia epävirallisia lähteitä tai kääntää jopa ohjelma itse, mutta perustoiminnot toimivat kyllä Ubuntun omalla paketoinnilla erinomaisesti, eikä muulle ole tarvetta, kuin joidenkin harvinaisempien VDR laajennusosien takia. Tällä hetkellä VDR versio Ubuntun pakettilähteissä on 2.4.x.

VDR:n asentaminen Ubuntu (20.04)

Ohje on kokoelma nm:n aloittamasta Ubuntu-fi-foorumilla julkaistusta säikeestä: http://forum.ubuntu-fi.org/index.php?topic=29787.0 ,jonne keskustelu tästä wikistä voidaan keskittää. Tämän ohjeen alkuosa perustuu pääosin tikola:n viimeaikojen kokemuksin VDR:n asentamisesta erilaisiin Ubuntu versioihin. Nyt viimeisimpänä ohjetta on päivitetty Ubuntu 20.04 ympäristöön tehdyn asennuksen perusteella, jossa käytettiin mahdollisimman paljon Ubuntun omia pakettilähteitä. On myös mahdollista käyttää ulkopuolisia epävirallisia lähteitä tai kääntää jopa ohjelma itse, mutta perustoiminnot toimivat kyllä Ubuntun omalla paketoinnilla erinomaisesti, eikä muulle ole tarvetta, kuin joidenkin harvinaisempien VDR laajennusosien takia. Tällä hetkellä VDR versio Ubuntun pakettilähteissä on 2.4.x.

Kiitokset keskusteluun osallistujille ja nm:lle, että antoi luvan jatkojulkaista alkuperäiset ohjeensa myös täällä wikissä.

Tämän ohjeen loppuosa sisältää vanhan ohjeen osia ja siellä käsitellään esim. lomituksenpoistoa, jonka tarve on nähdäkseni kadonnut TV:n digitalisoitumisen ja littunäyttöjen myötä.

Esitietoa VDR:stä

VDR (Video Disk Recorder) on Klaus Schmidingerin kehittämä ja ylläpitämä digitv-ohjelmisto Linuxille. Itse VDR-ohjelman kehitystyö etenee Schmidingerin omien päämäärien mukaan, mutta VDR:llä on Euroopassa laajahko käyttäjäyhteisö, joka on luonut ohjelmaan lukuisia liitännäisiä. Lisää tietoa VDR:stä saa mm. seuraavilta sivuilta:

  1. http://linux.fi/wiki/VDR

  2. http://www.linuxtv.org/vdrwiki/index.php/Main_Page

  3. https://www.vdr-portal.de/

  4. http://linuxtv.fi/

VDR-paketoinnista Ubuntussa

Ubuntussa vdr-paketti sisältää kaikki ohjelman keskeisimmät toiminnot peruskäyttäjälle, VDR:ään saa X-ikkunoinnissa toimivan edustaohjelman asentamalla vdr-plugin-xineliboutput paketin ja Ubuntu Software sovelluskaupassa olevan VDR clientin. Tässä ohjeessa tähdätään siihen, että käyttäjä pystyy katsomaan salaamatonta antenni- tai kaapelilähetystä Ubuntun työpöydällä.

Muita yleishyödyllisiä liitännäisiä:

  • vdr-plugin-live - selaimen kautta toimiva web-käyttöliittymä

  • vdr-plugin-epgsearch - hakuajastustoimintoja mm. live-liitännäiselle

  • vdr-plugin-streamdev-server - tarjoaa suoran lähetyksen lähiverkon (tai Internetin) yli mediasoittimiin. VLC osaa näyttää tekstitykset streamdevin MPEG-TS-lähetteestä.

Lisäksi tarvitaan dvb-apps-paketti, jossa on scan-työkalu kanavien hakemista varten. Tätä tarvitaan periaatteessa vain kerran. Kun VDR saa oikeat tiedot edes yhdestä kanavasta, se osaa itse lukea muiden kanavien ja kanavanippujen tiedot. Automaattista kanavatietojen päivitystä voi halutessaan säätää VDR:n asetuksista.

Varsinaiseen asennukseen

Oletamme, että olet jo asentanut Ubuntun ja se toimii ilman isompia murheita. Ongelmiin saa apua esimerkiksi Ubuntu Suomen keskustelualueilta.

Lisäksi tarvitset Ubuntussa toimivan oman antennisignaalisi mukaisen DVB-T/C/S virittimen. Se voi olla sekä USB että PCI/x liitäntäinen. https://linuxtv.org/wiki/index.php/Hardware_Device_Information

Laitteita on Ubuntun kannalta eri tavoin käyttöönotettavia. Helpoimmillaan laiteohjaimet löytyvät suoraan Ubuntun kernelistä ja laite alkaa toimia heti kun sen laittaa kiinni koneeseen. Tyypillinen tapaus on omalla firmware tiedostolla varustettu laite, jossa kyseinen .fw tiedosto pitää tallettaa /lib/firmware/ hakemistoon ennen koneen käynnistämistä. Yksi vaihtoehto on valmistaan omilla ajureilla ajettava kortti, johon löytyy ohjeet valmistajan sivulta ja varmaan on olemassa sellaisiakin kortteja, joita ei saa Ubuntussa toimimaan millään konstilla. Kannattaa lukea edellinen laitewiki tarkasti, ennen kuin päättää minkä virittimen valitsee.

VDR:n asentaminen

Tämän ohjeen paketti asennukset tehdään Synaptic pakettihallintaa käyttäen. Sen saa asennettua Ubuntu Software ohjelmakaupasta. Toki samat asennukset onnistuvat myös komentoriviltä, mutta koska tämä ohje on tehty ensiasentajaa varten koetetaan tehdä homma mahdollisimman helpoksi.

Asenna Synapticillä vdr paketti. Jos et ole varma mitä muuta tarvitset kannattaa samalla asentaa vdr-plugin-xineliboutput, vdr-plugin-epgsearch ja vdr-plugin-live paketit. Saat näillä perus VDR palvelun lisäksi toimimaan Ubuntu Desktopilla näkyvän VDR clientin. nettiselaimessa pyörivän VDR Live hallinnointipalvelun ja siihen liittyvät EPG hakutoiminnot.

vdr paketin asennuksen aikana asennus kysyy tehdäänkö tallenteille hakemisto /var/lib/video.00. Se kannattaa hyväksyä, jos sijainti käy (eli juuriosiolla on tilaa).

Asennus kysyy, vastaanotetaanko satelliitti- vai antenniverkon lähetyksiä ja luo valinnan mukaan kanavamääritystiedoston /var/lib/vdr/channels.conf, jossa on esitäytettynä yleisiä kanavia. Käytännössä tästä voi olla hyötyä vain satelliittivastaanotossa. Kotimaiset antenni/kaapeli kanavat on joka tapauksessa skannattava itse.

VDR:n riippuvuutena asentuu mm. LIRC (Linux Infrared Remote Control), jonka asennusskripti kysyy kaukosäätimistä. Jos käytössäsi on kaukosäädin ja vastaanotin, valitse oikea laite listalta. Muuten voit valita None. Valinnat voi tehdä uudestaan milloin tahansa myöhemminkin komennolla sudo dpkg-reconfigure lirc Edellä mainitut asennuksen oletusasetukset saa muutettua, muokkaamalla /etc/vdr/conf.d/00-vdr.conf tiedostoa. Ennen muokkauksia pitää pysäyttää VDR, jos se sattui käynnistymään suoraan pakettiasennuksesta. VDR pysäytetään komennolla

sudo service vdr stop

Em. asennuksen oletuksia muokataan komennolla:

sudo nano /etc/vdr/conf.d/00-vdr.conf

Itse muokkaan tyypillisesti tallennushakemiston haluamakseni ja otan pois –lirc rivin. Tällä järjestelmä logiin tulee huomattavasti vähemmän LIRC virheilmoituksia, jos kaukosäätimiä ei ole tarkoituskaan käyttää. Talllennushakemiston osalta on huolehdittava, että hakemiston omistaja ja ryhmä on vdr tai että kaikilla käyttäjillä on kaikki oikeudet k.o. tiedostoon.

Tallenna etc/vdr/conf.d/00-vdr.conf tiedosto näppäinyhdistelmällä CTRL+O ja sulje editori CTRL+X:llä.

Ryhmä saadaan annettua esimerkiksi komennolla

sudo chown -R vdr:vdr /home/kayttaja/tallennushakemisto

Joudut lisäksi antamaan suoritusoikeudet kotihakemistoosi ja recording-hakemistoon kaikille käyttäjille, jotta VDR pääsee lukemaan niiden alla olevaa tallennehakemistoaan:

sudo chmod a+X /home/kayttaja /home/kayttaja/tallennushakemisto

VDR X-Frontendin asentaminen

Asenna VDR Ubuntu Software ohjelmakaupasta. Tämä tuo Ubuntu käyttöliittymässä toimivan VDR xineliboutput clientin, josta näet TV lähetyksen Ubuntun työpöydällä

Kopioi Xineliboutputin esimerkkinäppäinkartta VDR:n remote.conf-tiedostoon, jotta VDR:ää voi ohjata näppäimistöllä vdr-sxfe:n kautta

Päätteessä:

sudo cp /usr/share/doc/vdr-plugin-xineliboutput/examples/remote.conf.example /var/lib/vdr/remote.conf

Skannaa kanavat

Initial-tuning-tiedosto /usr/share/dvb/dvb-t/fi-Espoo sisältää Espoon lähettimen kanavanippujen keskitaajuudet. Valitse oikea tiedosto lähetysverkon tyypin ja sijainnin perusteella. Esimerkiksi TTV:n kaapeliverkon tiedosto on /usr/share/dvb/dvb-c/fi-TTV. Syötä valitsemasi tai muokkaamasi tiedosto scan-työkalulle:

Päätteessä:

cd ~
scan -o vdr -p -e 4 /usr/share/dvb/dvb-t/fi-Espoo > channels.conf
sudo cp channels.conf /var/lib/vdr/

Tarkista skannauksen jälkeen, että channels.confissa on kaikki saatavilla olevat kanavat. Jos jokin kanavanippu puuttuu kokonaan, tarkista että sen taajuus on scanille annetussa initial-tuning-tiedostossa. Oikeat taajuudet saa yleensä operaattorin nettisivulta (DVB-T: http://www.digitv.fi, Welho DVB-C: http://dvb.swelcom.fi/).

Vaihtoehtoisesti skannauksen voi tehdä w_scan-ohjelmalla, joka skannaa koko taajuusalueen läpi, eikä vaadi esimääriteltyjä kanavanippuja. Asennus:

sudo apt-get install w-scan

Antenniverkon skannaus:

cd ~
w_scan -ft -c FI > channels.conf
sudo cp channels.conf /var/lib/vdr/

Kaapeliverkon skannaus:

cd ~
w_scan -fc -c FI > channels.conf
sudo cp channels.conf /var/lib/vdr/

Käynnistä VDR

Nyt kaiken pitäisi olla valmiina VDR:n käyttöön ja nyt sen pitäisi pystyä näyttämään tavallisimpia salaamattomia TV kanavia Ubuntun työpöydällä VDR sovelluksella. Varmuuden vuoksi koneen uudelleenkäynnistys ei tässä vaiheessa haittaa, koska se varmistaa, että kaikki laajennokset on ehditty ladata valmiiksi ja kaiken pitäisi käynnistyä oikeassa järjestyksessä VDR:n käynnistymisen yhetydessä.

Päätteessä:

sudo service vdr start

Tässä on viimeisimmissä versioissa ollut haastetta ja käynnistyminen on tyssännyt virheilmoitukseen:

vdr.service: Failed at step EXEC spawning /usr/sbin/runvdr: No such file or directory

Jos näin käy vika on todennäkäisesti runvdr skriptin väärässä sijainnissa, eli itselläni tämä ongelma on toistunut 18.04 versiosta saakka. Homma korjataan siirtämällä/kopioimalla runvdr skripti /usr/var/lib/vdr/ hakemistosta /usr/sbin/ hakemistoon.

VDR Live web-käyttöliittymä

Tässä vaiheessa voit avata selaimeen Live-liitännäisen sivun: http://localhost:8008 (käyttäjätunnus: admin, salasana: live) Kirjautumisen saat pois Liven asetuksista. Ottaessasi yhteyden joltain toiselta koneelta, on localhostin sijaan tietysti käytettävä VDR-koneen ulkoista IP-osoitetta tai nimeä.

Jos Live toimii ja näyttää ohjelmatiedot, ollaan jo loppusuoralla. Jos taas ohjelmatietoja ja kanavia ei näy, jokin on pielessä. Ongelmaa kannattaa lähteä purkamaan tutkimalla järjestelmälokin loppupäätä: sudo cat /var/log/syslog | tail -100 Sinne siellä on typillisesti tietoja VDR:n käynnistymisen jälkeen esim. käynnistyneistä laajennoksista ja erilaisista VDR:n antamista virheilmoituksista. Erityisesti kun hakee sanoilla vdr ja error pitäisi päästä käsiksi mahdollisiin ohjelmiston käynnistyvien estäviin ongelmiin.

Katselu Xineliboutputilla

Xineliboutputin X-frontend käynnistyy komennolla vdr-sxfe (jos ei toimi, kokeile antaa myös osoite: vdr-sxfe xvdr://localhost:37890).

Ohjelma sulkeutuu Esc-näppäimellä. F1 avaa päävalikon ja F2-F5 hoitavat värinäppäinten virkaa. Kuvaruutunäytön alareunassa näkyy värinäppäimiin liitetyt toiminnot, jotka vaihtuvat käyttöliittymän tilan mukaan. Kanavat vaihtuvat suoraan numeroilla tai Ylös/Alas-nuolinäppäimillä (valikon ollessa auki Page Up/Down -näppäimillä). Hiiren kaksoisnäpäytys suurentaa ikkunan kokoruutuun tai takaisin pieneksi. Vdr-sxfe:n saa kokoruutuun käynnitettäessä paramerilla -f.

Koska osa TV-lähetyksistä on lomitettua videota, vdr-sxfe:n kanssa on hyvä käyttää lomituksenpoistosuodinta. Tavallisella xv-ulostulolla se onnistuu parhaiten näin:

vdr-sxfe --post=tvtime:method=Greedy2Frame,enabled=1,framerate_mode=full,cheap_mode=0

Komennon voi sijoittaa skriptiin tai pikakäynnistimeen. Jos tuntuu, ettei koneen teho riitä tai näytönohjaimen ajuri on hidas, aseta framerate_mode=half. Suorittimen käyttöastetta ja eri prosessien aiheuttamaa kuormaa kannattaa seurata ajon aikana Järjestelmän valvonnalla (Jäjestelmä -> Ylläpito -> Järjestelmän valvonta) tai päätteessä top- tai htop-ohjelmalla.

Katso myös Xineliboutputin ohjetiedosto: /usr/share/doc/vdr-plugin-xineliboutput/README.gz

Lisäohjeistusta VDR:n käyttöliittymän hallintaan on käyttöoppaassa: http://www.linuxtv.org/vdrwiki/index.php/VDR_User's_Manual

Xineliboutput ja VDPAU

VDPAU-rautapurun saa käyttöön seuraavilla parametreilla, näytönohjaimen ajurin puitteissa:

vdr-sxfe --video vdpau --post=tvtime:method=use_vo_driver

VDPAU:n tapauksessa lomituksenpoiston parametreja voi säätää vdr-sxfe:n luomassa tiedostossa ~/.xine/config_xineliboutput. Lomituksenpoisto toimii VDPAU:n kautta kunnolla vain Nvidian suljetulla ajurilla. Muut näytönohjaimet ja ajurit tukevat todennäköisesti korkeintaan bob-tasoista lomituksenpoistoa.

nano ~/.xine/config_xineliboutput

Olennaiset kohdat ovat vdpau: HD deinterlace method ja vdpau: SD deinterlace method. Parasta laatua saa asetuksella temporal_spatial, mutta HD-videon kanssa se vaatii alinta budjettiluokkaa tehokkaamman näytönohjaimen. Esimerkiksi Geforce GT 220, 430 tai 630 riittää, kun taas GT 210 ja 520 ovat liian hitaita.

# vdpau: HD deinterlace method
# { bob  half temporal  half temporal_spatial  temporal  temporal_spatial }, default: 3
video.output.vdpau_hd_deinterlace_method:temporal_spatial

# vdpau: disable deinterlacing when progressive_frame flag is set
# bool, default: 0
#video.output.vdpau_honor_progressive:0

# vdpau: SD deinterlace method
# { bob  half temporal  half temporal_spatial  temporal  temporal_spatial }, default: 3
video.output.vdpau_sd_deinterlace_method:temporal_spatial

Tallenna taas muutosten jälkeen tiedosto näppäinyhdistelmällä Ctrl+O ja sulje editori Ctrl+X:llä.

Streamdev-server-liitännäisen asentaminen (ja muut verkkolaajennokset esim. VNSI)

Streamdev-palvelun avulla livelähetyksiä voi streamata VDR:stä lähiverkkoon ja katsella esimerkiksi VLC:llä muilla tietokoneilla tai MX Playerillä Android-laitteissa. Myös muut MPEG-TS:ää tukevat mediatoistimet voivat näyttää lähetykset.

Liitännäisen asennus:

sudo apt-get install vdr-plugin-streamdev-server

Yhteydenotot muilta koneilta on erikseen sallittava muokkaamalla /etc/vdr/plugins/streamdevhosts.conf -tiedostoa:

sudo nano /etc/vdr/plugins/streamdevhosts.conf

Kun lähiverkko on erotettu Internetistä palomuurilla, voidaan kotikäytössä sallia kaikki osoitteet. Poista #-merkki viimeiseltä riviltä:

127.0.0.1             # always accept localhost
#192.168.100.0/24     # any host on the local net
#204.152.189.113      # a specific host
0.0.0.0/0            # any host on any net (USE THIS WITH CARE!)

Tallenna tiedosto ja sulje editori.

Käynnistä VDR uudelleen:

sudo service vdr stop
sudo service vdr start

Nyt voit katsella suoraa lähetystä esimerkiksi VLC:llä. Kanava 4:

vlc http://localhost:3000/TS/4

Tai suuntaa selain osoitteeseen http://localhost:3000 Kanavien streamdev-osoitteet saa myös Liven kautta. Täsmälleen sama logiikka pätee esimerkiksi VNSI pluginiin ja muihin verkkokäytön salliviin laajennoksiin. Jokaiselle on oma allowed_hosts.conf joka on rakenteeltaan sama kuin em. streamdevhosts.conf tiedosto ja sillä hallitaan mitkä IP osoiteaavaruuden osat ovat sallittuja ottamaan VDR palveluun yhteyttä kyseisen laajennoksen kautta. Eli jos jokin verkkolaajennos ei toimi pitää ensin etsiä kyseisen laajennoksen sallimat IP määritykset ja sen muokkauksen jälkeen käynnistää VDR uusiksi. Tämä allowed_hosts yleensä on se tyypillisin laajennoksen toimimattomuuden syy.

Suomenkielisyyden asettaminen EPG-tietoihin

Aluksi päätteen avulla suljemme vdr:n.

sudo service vdr stop

Editoimme tiedostoa /var/lib/vdr/setup.conf

sudo nano /var/lib/vdr/setup.conf

Sieltä muutamme EPGBugfixlevel ja EPGLanguages kohdat seuraavan laiseksi.

EPGBugfixLevel = 0
EPGLanguages = fin

Sitten tallennamme ja poistumme editorista.

Nyt voimme käynnistää VDR:n uudelleen.

sudo service vdr start

VDR:n tiedostojen siirtäminen ja uudelleen nimeäminen

Tässä esitellään yksinkertainen scripti, joka nimeää uudelleen VDR:n tiedostot ja siirtää ne toiseen kansioon VDR:n näkymättömiin jatkokäsittelyä varten. Tätä ei välttämättä tarvitse tehdä, ja tämä toimii varsin ongelmallisesti sarjojen tallennuksena, koska aina uusi sarjan jakso kirjoittaa vanhan päälle.

Aluksi luodaan /usr/local -kansioon copyvdrs-kansio päätteen avulla.

sudo mkdir /usr/local/bin
sudo mkdir /usr/local/bin/copyvdrs

Sitten tehdään upcase-ohjelma:

Aluksi asennetaan kääntämiseen tarvittavat paketit

sudo aptitude install build-essential gcc

sitten kirjoitetaan ohjelma:

nano upcase.c

Sisällöksi seuraavaa...

#include <stdio.h>
#include <string.h>
int main (int count, char **args) {
        char *c;
        int i,j;
        char row[5000];
        char kinoteema[]="T Kino Teema: ";
        char kinokauko[]="T Kino Kauko: ";
        char elokuva[]="T Elokuva: ";
        char toiminta[]="T Toimintatorstai: ";
        row[0]=0;
        if(count>1) {
                i=0;
                j=0;
                if(memcmp(args[1],kinoteema,strlen(kinoteema))==0) j=strlen(kinoteema)-2;
                if(memcmp(args[1],elokuva,strlen(elokuva))==0) j=strlen(elokuva)-2;
                if(memcmp(args[1],kinokauko,strlen(kinokauko))==0) j=strlen(kinokauko)-2;
                if(memcmp(args[1],toiminta,strlen(toiminta))==0) j=strlen(toiminta)-2;
                for (c=args[1]+j;*c!=(char)0;c++) {
                        if(*c!=(char)0xc3) row[i++]=*c;
                        else {
                                c++;
                                if(*c==(char)0xb6) row[i++]='o';//'ö'
                                if(*c==(char)0xa4) row[i++]='a';//'ä'
                                if(*c==(char)0xa5) row[i++]='a';//'ä'
                                if(*c==(char)0x96) row[i++]='O';//'Ö'
                                if(*c==(char)0x84) row[i++]='A';//'Ä'
                                if(*c==(char)0x85) row[i++]='A';//'Å'
                        }
                }
                row[i++]=0;
                row[i]=0;
                i=0;
                for(j=1;row[j]!='\0';j++) {
                        if((row[j]==' ')||(row[j]=='+')
                                ||(row[j]=='-')
                                ||(row[j]==',')
                                ||(row[j]=='.')
                                ||(row[j]==':')
                                ||(row[j]==';')
                                ||(row[j]=='!')
                                ||(row[j]=='?')
                                ||(row[j]=='/')
                                ||(row[j]=='|')
                                ||(row[j]=='#')
                                ||(row[j]=='<')
                                ||(row[j]=='\\')
                                ||(row[j]=='>')) {
                                        while ( ((row[j]<'0')||(row[j]>'9'))&&
                                                ((row[j]<'A')||(row[j]>'Z'))&&
                                                ((row[j]<'a')||(row[j]>'z'))&&
                                                 (row[j]!='\0')&&
                                                 (row[j]!='-')&&
                                                 (row[j]!='!')&&
                                                 (row[j]!='+')) j++;
                                        if((row[j]>='a')&&(row[j]<='z')) row[i++]=row[j]&223;
                                        else row[i++]=row[j];
                        } else {
                                while ( ((row[j]<'0')||(row[j]>'9'))&&
                                        ((row[j]<'A')||(row[j]>'Z'))&&
                                        ((row[j]<'a')||(row[j]>'z'))&&
                                         (row[j]!=0)) j++;
                                row[i++]=row[j];
                                //printf("%i,%i",i,j);
                        }
                }
                row[i]=0;
                printf("%s",row);
        }
        return 0;
}

Tallenna ja lopeta.

Sitten käännetään ohjelma:

sudo gcc upcase.c -o /usr/local/bin/copyvdrs/upcase

Sitten voimmekin testata ohjelman toimivuutta:

/usr/local/bin/copyvdrs/upcase "T Ääliö älä lyö mua"

Kyseisen suorittamisesta pitäisi promptin alkuun tulla seuraavaa...

AalioAlaLyoMua

Jos tuli jotain virheitä kysy neuvoa foorumista.

Kun tuo toimii, voimmekin tehdä voimallisen, mutta lyhyen scriptin tiedostojen siirtämiselle jatkokäsittelyä varten.

sudo nano /usr/local/bin/copyvdrs/copyvdrs.sh

Siihen kirjoitamme seuraavaa (pienin muutoksin).

declare -i i
topath="/home/peran/Videot/elokuvat/"
user="peran"
group="peran"
vanha=`pwd`
service vdr stop
cd /var/lib/video.00
for f in `find -name "info"`;
do
        toname="`cat "$f"|grep "^T "`"
        toname=`/usr/local/bin/copyvdrs/upcase "$toname"`
        #echo "$toname"
        filmfilename="${f%info}0000"
        #echo "$filmfilename"
        i="1"
        echo "$toname"
        if [ "$USER" = "root" ]
        then
                mv "$f" "$topath$toname.info"
                chown $user:$group "$topath$toname.info"
                mv "$filmfilename$i.ts" "$topath$toname.ts"
                #rm "$filmfilename$i.ts"
                #rm "$f"
        else
                cp "$f" "$topath$toname.info"
                chown $user:$group "$topath$toname.info"
                cp "$filmfilename$i.ts" "$topath$toname.ts"
        fi
        i="$i+1"
        while [[ -e "$filmfilename$i.ts" ]]
        do
                #echo "$filmfilename$i.ts"
                cat "$filmfilename$i.ts" >>"$topath$toname.ts"
                if [ "$USER" = "root" ]
                then
                        rm "$filmfilename$i.ts"
                fi
                i="$i+1"
        done
        chown $user:$group "$topath$toname.ts"
done
rm -r *
service vdr start
cd $vanha

Scriptistä tulee muuttaa alussa olevat seuraavat rivit: topath - tämän tilalle tulee lainausmerkkien sisälle kirjoittaa, minne haluat tallettaa elokuvat. user - Oma käyttäjätunnuksesi group - Oma kayttäjätunnuksesi ryhmä cd /var/lib/video.00 - tilalle minkä juuresta löytyy todellisuudessa VDR:n tallentamat tiedostot.

VAROITUS: Scriptissä on rivi 'rm -r *', joka tuhoaa kaiken siinä hakemistossa, jossa on ja sen alahakemistoissa. Tämä käsky vaarallisuuden takia tulee poistaa ennen kuin scriptiä kokeilee. Kun scriptin on saanut toimivaksi voi kyseisen rivin lisätä kyseiseen kohtaan. Huonosti toimiessaan scripti siis saattaa pahimmassa tapauksessa tuhota koko järjestelmän tiedostoineen.

Kun olet tehnyt muutokset, voitkin antaa tiedostolle suoritusoikeudet:

sudo chmod 755 /usr/local/bin/copyvdrs/copyvdrs.sh

Kun haluat kopioida tallennetut tiedostot haluamaasi hakemistoon, voit käskyttää päätteen avulla seuraavasti:

sudo /usr/local/bin/copyvdrs/copyvdrs.sh

Toisaalta, jos mediaPC:si on jatkuvasti auki, kannatta se käsky laittaa sopivaan aikaan suoritettavaksi crontab:ssa.