Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- #
- # Nimi: UpdateEPG for PlasmaEPG
- # Versio: 0.1
- # Tekijä: kautium
- #
- # Kuvaus: Powershell-skripti EPG-tietojen ajastetuksi noutamiseksi Topfieldin TAP-tuella
- # varustettujen digiboksien (mm. CRP-2401CI+) PlasmaEPG_HD sovellusta varten Windows7-
- # työasemalta, jolta on pääsy verkon yli digiboksiin FTP:llä. Ulkoista lähdettä
- # ohjelmakuvauksille tarvitaan, jos ja kun ohjelmien laajennetut kuvaukset eivät toimi
- # käytetyssä EPG-sovelluksessa automaattisesti. Skriptiä voi soveltaa myös tavalliseen
- # versioon PlasmaEPG:stä ja osittain se on huomioitukin.
- #
- # Huomioitavaa: Skripti ei tee mitään kovin tarkkoja tarkistuksia käyttäjän puolesta, eikä se
- # kirjoita logia, joten käyttäjän tehtävä on varmistaa, että boksi on päällä,
- # yhteys onnistuu ftp:llä ja skriptiä suorittavalla tunnuksella on riittävät oikeudet jne.
- #
- # Nykyisessä PlasmaEPG HD:ssä näyttäisi olevan bugi, jonka vuoksi se kaatuu suurella
- # kanavamäärällä, jos niiden tiedot määritellään noudettavaksi ulkopuolelta.
- #
- # HD-version merkistö poikkeaa aiemmasta, joten kannattaa huomioida mahdolliset ongelmat
- # skandien kanssa.
- #
- # - - - - - - - - - - - - - - - Käyttöohje: - - - - - - - - - - - - - - - - - - - -
- #
- # 1.) Asenna boksiin viimeisin PlasmaEGP HD (osoitteesta http://www.plasmaepg.net/hd/fi/index.html)
- #
- # 2.) Määrittele PlasmaEPG:n asetuksissa, että kanavien taustahaku ja syvähaku eivät ole käytössä), koska
- # käsittääkseni näistä molemmat korvaavat laajennetut ohjelmakuvaukset uudestaan lyhyillä.
- #
- # 3.) Määrittele PlasmaEPG:n asetuksissa kanavat, joiden tiedot noudetaan ulkoisesta lähteestä.
- #
- # 4.) Luo tietojen noutamista varten tunnus osoitteessa http://www.toppy.fi/epg/
- #
- # 5.) Kirjaudu palveluun juuri luomallasi tunnuksella ja valitse kaikki kanavat, joiden haluat olevan mukana
- # noudettavassa tiedostossa (eli samat kanavat kuin kohdassa 3).
- #
- # 5.1) Määrittele "Nimeä valitsemasi kanavat" -sivulla kanavien nimiksi digiboksissa jokaista kanavaa vastaavat
- # loogiset kanavanumerot (LCN). Huomaa, että jos myöhemmin käyttäjän tai operaattorin toimesta muokataan
- # toppyn kanavalistauksia, saattavat myös kanavanumerot muuttua, jolloin tiedot pitää päivittää ajan tasalle
- # myös webbipalvelussa.
- #
- # 5.2) Määrittele "Muut asetukset" -sivulla tiedostoformaatiksi evts ja tallennusformaatiksi zip.
- #
- # 6.) Lataa ja asenna työasemaan "Wget for Windows" (wgetillä noudetaan epg-tiedosto palvelimelta)
- # Asennuspaketti löytyy osoitteesta http://gnuwin32.sourceforge.net/packages/wget.htm
- # Suomeksi kirjoitettuja ohjeita löytyy tarvittaessa mm. osoitteesta http://neko.kapsi.fi/ohje/wget.html
- #
- # 7.) Lataa ja asenna työasemaan ilmainen 7-Zip osoitteesta http://www.7-zip.org/
- # 7-zip on pätevä ilmainen tiedostojen pakkaus/purkusovellus, jossa on myös komentorivikäyttöliittymä, jolla
- # noudettu tiedosto puretaan.
- #
- # 8.) Skripti on toteutettu Windowsin Powershellillä, joten tarkista että Powershell löytyy koneestasi ja että
- # se on varmasti toimiva (Start --> kirjoita Powershell --> Enter). Jos skriptin suoritus tössää heti alkuunsa,
- # niin tarkista, että ExecutionPolicy sallii skriptien suorittamisen.
- # Edellisestä tarkemmin täällä: http://technet.microsoft.com/en-us/library/ee176961.aspx
- # Powershell-komento "Set-ExecutionPolicy unrestricted" on helpoin korjaus, mutta se sallii kaikkien skriptien
- # suorittamisen jatkossa, joten jokainen valitkoon omalle kohdalle toimivimman suojaustason.
- #
- # Powershell on siis se komentokehotteen näköinen sinitaustainen ikkuna, joka näyttää simppeliltä ja
- # vanhanaikaiselta, mutta joka on pinnan alla hienointa mitä MS on aikoihin kehittänyt. ;-)
- # Powershell-skriptit ovat päätteeltään ps1-muotoisia ja niitä voi muokata tekstieditorilla, tai Powershellin
- # omalla kehittyneemmällä Powershell ISEllä.
- #
- # 9.) Muokkaa alla olevat "Muuttujat"-lohkon arvot vastaamaan omaa ympäristöäsi.
- #
- # 10.) Testaa skriptin toimivuus ja jos kaikki näyttää hyvältä, tee siitä Windowsiin ajastettu tehtävä
- # ja aja sitä sopivalla tunnuksella.
- # Huom! www.toppy.fi/epg:stä EPG-tiedot ovat noudettavissa yhdellä tunnuksella korkeintaan 4 kertaa
- # vuorokaudessa.
- #
- # 10.1) Ajastetun Powershell-tehtävän luominen Windows7:ssa:
- # 1.) Avaa Task Scheduler ja luo "Basic task"
- # 2.) Anna tehtävälle nimi (esim. "UpdateEPG") ja haluamasi kuvaus
- # 3.) Määrittele "Triggeriksi" esim. daily klo 22:00
- # 4.) Määrittele "Actioniksi" ohjelman käynnistys ja ohjelmaksi
- # "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
- # 5.) Lisää samalla sivulla arguments-kohtaan polku skriptitiedostoon ja tarvittavat muut valitsimet
- # kuten tässä esimerkissä:
- # -command "C:\Users\username\Documents\Scripts\UpdateEPG.ps1" -ExecutionPolicy Bypass
- # 6.) Tallenna tehtävä ja testaa sitä. Hienosäädä tarvittaessa asetuksia ja käyttäjätunnusta millä
- # tehtävää ajetaan jne.
- #
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- #
- # Muuttujat
- #
- # (muokkaa seuraavia arvoja tilanteen mukaan)
- #
- # HUOM! Arvot lainausmerkkien sisälle!
- #
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Tunnus ja salasana tietojen noutamista varten
- $username = "tunnustähän"
- $passwd = "salasanatähän"
- # Digiboksin IP-osoite:
- $toppyIP = "192.168.0.1"
- # Digiboksin FTP-käyttäjän tunnus ja salasana
- $toppyUsername = "guest"
- $toppyPasswd = "0000"
- # Wgetin wget.exe-tiedoston sijainti työasemassa
- $wgetExe = "C:\Program Files (x86)\GnuWin32\bin\wget.exe"
- # 7-Zipin 7z.exe-tiedoston sijainti työasemassa
- $7zExe = "C:\Program Files\7-Zip\7z.exe"
- # Työaseman kohdehakemisto, jonne tiedostot väliaikaisesti tallennetaan. Oletuksena käytetään
- # käyttäjäprofiilin AppData-hakemistoon luotavaa UpdateEPG-kansiota. Jos hakemistoa ei
- # ole olemassa, se luodaan automaattisesti, mutta oikeuksia ei sen kummemmin tarkisteta.
- # Jos haluat muuttaa polkumääritystä oletuksesta, laita se lainausmerkkeihin, kuten alla olevassa
- # kommentoidussa esimerkissä.
- #
- # Esimerkki:
- # $targetFolder = "C:\TEMP\esimerkkipolku"
- #
- $targetFolder = [System.Environment]::GetFolderPath("ApplicationData")+"\UpdateEPG"
- # Valitse PlasmaEPG:n versio (BASIC/HD, oletuksena HD). Asetus vaikuttaa tallennushakemistoon boksissa.
- #
- # $PlasmaEPGver = "BASIC"
- $PlasmaEPGversion = "HD"
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- #
- # HUOM!
- #
- # Tästä eteenpäin tiedostoa ei ole tarkoitettu muokattavaksi!
- #
- # - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Määritellään tiedostonimi väliaikaisesti tarvittavalle komentojonolle
- $tempScript = "tempscript.txt"
- # Määritellään noudettavan zip-tiedoston nimi
- $plasmaZIP = "PlasmaEPG.zip"
- # Määritellään PlasmaEPG:n eri versioille kelpaavat EPG-tiedostojen nimet
- $plasmaEPGfile = "PlasmaEPG.evts"
- $plasmaEPGHDfile = "PlasmaEPG_HD.evts"
- # Määritellään käyttäjäkohtainen polku noudettavalle EPG-tiedostolle
- $EPGSource = "http://www.toppy.fi/epg/getepg.php?user=$username"
- # Määritellään noudetun tiedoston paikallisen kopion sijainti ja nimi
- $targetFile = "$targetFolder\$plasmaZIP"
- # Tarkistetaan vastaako Toppy. Jos ei vastaa --> keskeytetään
- Write-Host "Tarkistetaan vastaako digiboksi, odota hetki..." -foregroundcolor "yellow"
- $result = $true
- try { Test-Connection $toppyIP -Source localhost -ErrorAction Stop -Count 1}
- catch { $result = $false }
- if ($result -eq 0){
- Write-Host
- Write-Host "HUOM! Digiboksi ei vastaa, keskeytetään skriptin suoritus..." -foregroundcolor "red"
- Write-Host ""
- Write-Host "Tarkista että boksi on päällä ja verkkoyhteys kunnossa." -foregroundcolor "yellow"
- Write-Host
- break
- }
- # Digiboksi vastasi odotetusti, jatketaan suoritusta
- Write-Host "OK, digiboksi vastasi odotetusti, jatketaan..." -foregroundcolor "Green"
- # Tarkistetaan onko kohdehakemisto jo olemassa ja jos ei ole, yritetään luoda se
- $FileExists = Test-Path $targetFolder
- If ($FileExists -eq $True) {
- # Hakemisto oli olemassa, siivotaan mahdolliset konfliktitiedostot pois alta
- Write-Host "Hakemisto oli jo olemassa, poistetaan mahdolliset vanhat versiot tiedostoista..." -foregroundcolor "yellow"
- $FileExists = Test-Path $targetFolder\$plasmaEPGfile
- If ($FileExists -eq $True) {rm $targetFolder\PlasmaEPG*.* -force}
- $FileExists = Test-Path $targetFolder\$plasmaEPGHDfile
- If ($FileExists -eq $True) {rm $targetFolder\PlasmaEPG*.* -force}
- $FileExists = Test-Path $targetFolder\$plasmaZIP
- If ($FileExists -eq $True) {rm $targetFolder\$plasmaZIP -force}
- $FileExists = Test-Path $targetFolder\$tempscript
- If ($FileExists -eq $True) {rm $targetFolder\$tempscript -force}
- }
- else {
- Write-Host
- Write-Host "Kohdehakemistoa ei löydy, luodaan se..." -foregroundcolor "yellow"
- New-Item -Path $targetFolder -ItemType "directory"
- }
- # Siirrytään kohdehakemistoon
- cd $targetFolder
- # Noudetaan EPG-tiedot palvelimelta wgetillä
- Write-Host ""
- Write-Host "Noudetaan EPG-tietoja..." -foregroundcolor "yellow"
- &$wgetExe --http-user=$user --http-password=$passwd -nv -O $targetFile $EPGSource
- # Tarkistetaan saatiinko tiedosto siirrettyä, muuten keskeytetään
- if (Test-Path "$targetFolder\$plasmaZIP") {
- }
- else { Write-Host
- Write-Host "Tiedostoa ei löydy, suoritus keskeytetään..." -foregroundcolor "red"
- Write-Host "Mahdollinen syy: Virheellinen tunnus, puutteelliset oikeudet tai verkkovirhe" -foregroundcolor "yellow"
- break
- }
- # Tarkistetaan tiedoston koko ja jos se on alle 1kb, jotain meni pieleen --> keskeytetään
- if ((Get-Item "$targetFolder\$plasmaZIP").length -lt 1kb){
- Write-Host
- Write-Host "Tiedosto on tyhjä, tai se on korruptoitunut, suoritus keskeytetään..." -foregroundcolor "red"
- Write-Host "Mahdollinen syy: Virheellinen tunnus, tai palvelun sallima 4 päivitystä vuorokaudessa ylitetty " -foregroundcolor "yellow"
- Write-Host
- break
- }
- Write-Host ""
- Write-Host "EPG-tiedot noudettu onnistuneesti, jatketaan..." -foregroundcolor "green"
- # Puretaan zip
- Write-Host
- Write-Host "Puretaan zip-paketti..." -foregroundcolor "yellow"
- &$7zExe x $targetFile -y
- # Tarkistetaan löytyikö paketin sisältä haluttu tiedosto, muuten keskeytetään
- if (Test-Path "$targetFolder\$plasmaEPGfile") {
- }
- else { Write-Host
- Write-Host $plasmaEPGfile "-tiedostoa ei löydy, suoritus keskeytetään..." -foregroundcolor "red"
- Write-Host "Mahdollinen syy: Tyhjä tai viallinen zip-tiedosto, tarkista asetukset ja tunnuksen toimivuus" -foregroundcolor "yellow"
- break
- }
- # Viedään tiedoston kohdepolku muuttujaan ja vaihdetaan tiedoston nimi sopivaksi (valitun PlasmaEPG:n tyypin perusteella)
- if ($PlasmaEPGversion -like "HD"){$evtsLocation = "/ProgramFiles/PlasmaEPG_HD"
- ren $plasmaEPGfile $plasmaEPGHDfile
- $plasmaEPGfile = $plasmaEPGHDfile
- }
- else {$evtsLocation = "/ProgramFiles/PlasmaEPG"
- }
- # Luodaan väliaikainen tiedosto Windowsin oman ftp:n komentamista varten
- New-Item -Path $targetFolder -Name $tempScript -ItemType File
- Add-Content "$targetFolder\$tempScript" "$toppyUsername
- $toppyPasswd
- bin
- cd $evtsLocation
- put $plasmaEPGfile
- bye"
- # Siirretään noudettu tiedosto toppyyn ftp:llä
- Write-Host
- Write-Host "Siirretään evts-tiedosto digiboksiin ftp:llä..." -foregroundcolor "yellow"
- ftp -s:$tempscript $toppyIP
- # Siivotaan jäljet
- Write-Host
- Write-Host "Poistetaan kaikki luodut tiedostot..." -foregroundcolor "yellow"
- rm $targetFolder\PlasmaEPG*.* -force
- rm $targetFolder\$plasmaZIP -force
- rm $targetFolder\$tempscript -force
- clear-variable username
- clear-variable passwd
- clear-variable toppyUsername
- clear-variable toppyPasswd
- Write-Host
- Write-Host "EPG-tiedot noudettu ja siirretty toppyyn..." -foregroundcolor "green"
- Write-Host
- exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement