Advertisement
Guest User

UpdateEPG

a guest
May 15th, 2013
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  2. #
  3. # Nimi:     UpdateEPG for PlasmaEPG
  4. # Versio:   0.1
  5. # Tekijä:  kautium
  6. #
  7. # Kuvaus:   Powershell-skripti EPG-tietojen ajastetuksi noutamiseksi Topfieldin TAP-tuella
  8. #       varustettujen digiboksien (mm. CRP-2401CI+) PlasmaEPG_HD sovellusta varten Windows7-
  9. #       työasemalta, jolta on pääsy verkon yli digiboksiin FTP:llä. Ulkoista lähdettä
  10. #       ohjelmakuvauksille tarvitaan, jos ja kun ohjelmien laajennetut kuvaukset eivät toimi
  11. #       käytetyssä EPG-sovelluksessa automaattisesti. Skriptiä voi soveltaa myös tavalliseen
  12. #       versioon PlasmaEPG:stä ja osittain se on huomioitukin.
  13. #
  14. # Huomioitavaa: Skripti ei tee mitään kovin tarkkoja tarkistuksia käyttäjän puolesta, eikä se
  15. #       kirjoita logia, joten käyttäjän tehtävä on varmistaa, että boksi on päällä,  
  16. #       yhteys onnistuu ftp:llä ja skriptiä suorittavalla tunnuksella on riittävät oikeudet jne.
  17. #          
  18. #       Nykyisessä PlasmaEPG HD:ssä näyttäisi olevan bugi, jonka vuoksi se kaatuu suurella
  19. #       kanavamäärällä, jos niiden tiedot määritellään noudettavaksi ulkopuolelta.
  20. #
  21. #       HD-version merkistö poikkeaa aiemmasta, joten kannattaa huomioida mahdolliset ongelmat
  22. #       skandien kanssa.
  23. #
  24. # - - - - - - - - - - - - - - - Käyttöohje: - - - - - - - - - - - - - - - - - - - -
  25. #
  26. # 1.) Asenna boksiin viimeisin PlasmaEGP HD (osoitteesta http://www.plasmaepg.net/hd/fi/index.html)
  27. #
  28. # 2.) Määrittele PlasmaEPG:n asetuksissa, että kanavien taustahaku ja syvähaku eivät ole käytössä), koska
  29. #     käsittääkseni näistä molemmat korvaavat laajennetut ohjelmakuvaukset uudestaan lyhyillä.
  30. #
  31. # 3.) Määrittele PlasmaEPG:n asetuksissa kanavat, joiden tiedot noudetaan ulkoisesta lähteestä.
  32. #
  33. # 4.) Luo tietojen noutamista varten tunnus osoitteessa http://www.toppy.fi/epg/
  34. #
  35. # 5.) Kirjaudu palveluun juuri luomallasi tunnuksella ja valitse kaikki kanavat, joiden haluat olevan mukana
  36. #     noudettavassa tiedostossa (eli samat kanavat kuin kohdassa 3).
  37. #
  38. # 5.1) Määrittele "Nimeä valitsemasi kanavat" -sivulla kanavien nimiksi digiboksissa jokaista kanavaa vastaavat
  39. #      loogiset kanavanumerot (LCN). Huomaa, että jos myöhemmin käyttäjän tai operaattorin toimesta muokataan
  40. #      toppyn kanavalistauksia, saattavat myös kanavanumerot muuttua, jolloin tiedot pitää päivittää ajan tasalle
  41. #      myös webbipalvelussa.
  42. #
  43. # 5.2) Määrittele "Muut asetukset" -sivulla tiedostoformaatiksi evts ja tallennusformaatiksi zip.
  44. #
  45. # 6.) Lataa ja asenna työasemaan "Wget for Windows" (wgetillä noudetaan epg-tiedosto palvelimelta)
  46. #     Asennuspaketti löytyy osoitteesta http://gnuwin32.sourceforge.net/packages/wget.htm
  47. #     Suomeksi kirjoitettuja ohjeita löytyy tarvittaessa mm. osoitteesta http://neko.kapsi.fi/ohje/wget.html
  48. #
  49. # 7.) Lataa ja asenna työasemaan ilmainen 7-Zip osoitteesta http://www.7-zip.org/
  50. #     7-zip on pätevä ilmainen tiedostojen pakkaus/purkusovellus, jossa on myös komentorivikäyttöliittymä, jolla
  51. #     noudettu tiedosto puretaan.
  52. #
  53. # 8.) Skripti on toteutettu Windowsin Powershellillä, joten tarkista että Powershell löytyy koneestasi ja että
  54. #     se on varmasti toimiva (Start --> kirjoita Powershell --> Enter). Jos skriptin suoritus tössää heti alkuunsa,
  55. #     niin tarkista, että ExecutionPolicy sallii skriptien suorittamisen.
  56. #     Edellisestä tarkemmin täällä: http://technet.microsoft.com/en-us/library/ee176961.aspx
  57.  
  58. #     Powershell-komento "Set-ExecutionPolicy unrestricted" on helpoin korjaus, mutta se sallii kaikkien skriptien
  59. #     suorittamisen jatkossa, joten jokainen valitkoon omalle kohdalle toimivimman suojaustason.
  60. #
  61. #     Powershell on siis se komentokehotteen näköinen sinitaustainen ikkuna, joka näyttää simppeliltä ja
  62. #     vanhanaikaiselta, mutta joka on pinnan alla hienointa mitä MS on aikoihin kehittänyt.  ;-)
  63. #     Powershell-skriptit ovat päätteeltään ps1-muotoisia ja niitä voi muokata tekstieditorilla, tai Powershellin
  64. #     omalla kehittyneemmällä Powershell ISEllä.
  65. #
  66. # 9.) Muokkaa alla olevat "Muuttujat"-lohkon arvot vastaamaan omaa ympäristöäsi.
  67. #
  68. # 10.) Testaa skriptin toimivuus ja jos kaikki näyttää hyvältä, tee siitä Windowsiin ajastettu tehtävä
  69. #      ja aja sitä sopivalla tunnuksella.
  70. #      Huom! www.toppy.fi/epg:stä EPG-tiedot ovat noudettavissa yhdellä tunnuksella korkeintaan 4 kertaa
  71. #      vuorokaudessa.
  72. #
  73. # 10.1) Ajastetun Powershell-tehtävän luominen Windows7:ssa:
  74. #       1.) Avaa Task Scheduler ja luo "Basic task"
  75. #       2.) Anna tehtävälle nimi (esim. "UpdateEPG") ja haluamasi kuvaus
  76. #       3.) Määrittele "Triggeriksi" esim. daily klo 22:00
  77. #       4.) Määrittele "Actioniksi" ohjelman käynnistys ja ohjelmaksi
  78. #           "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
  79. #       5.) Lisää samalla sivulla arguments-kohtaan polku skriptitiedostoon ja tarvittavat muut valitsimet
  80. #           kuten tässä esimerkissä:
  81. #           -command "C:\Users\username\Documents\Scripts\UpdateEPG.ps1" -ExecutionPolicy Bypass
  82. #       6.) Tallenna tehtävä ja testaa sitä. Hienosäädä tarvittaessa asetuksia ja käyttäjätunnusta millä
  83. #           tehtävää ajetaan jne.
  84. #
  85. # - - -  - - - - - - - - - - - - - - - - - - - - - - - - -
  86. #
  87. #                  Muuttujat
  88. #
  89. #   (muokkaa seuraavia arvoja tilanteen mukaan)
  90. #
  91. #       HUOM! Arvot lainausmerkkien sisälle!
  92. #
  93. # - - -  - - - - - - - - - - - - - - - - - - - - - - - - -
  94.  
  95.  
  96. # Tunnus ja salasana tietojen noutamista varten
  97. $username = "tunnustähän"
  98. $passwd = "salasanatähän"
  99.  
  100. # Digiboksin IP-osoite:
  101. $toppyIP = "192.168.0.1"
  102.  
  103. # Digiboksin FTP-käyttäjän tunnus ja salasana
  104. $toppyUsername = "guest"
  105. $toppyPasswd = "0000"
  106.  
  107. # Wgetin wget.exe-tiedoston sijainti työasemassa
  108. $wgetExe = "C:\Program Files (x86)\GnuWin32\bin\wget.exe"
  109.  
  110. # 7-Zipin 7z.exe-tiedoston sijainti työasemassa
  111. $7zExe = "C:\Program Files\7-Zip\7z.exe"
  112.  
  113. # Työaseman kohdehakemisto, jonne tiedostot väliaikaisesti tallennetaan. Oletuksena käytetään
  114. # käyttäjäprofiilin AppData-hakemistoon luotavaa UpdateEPG-kansiota. Jos hakemistoa ei
  115. # ole olemassa, se luodaan automaattisesti, mutta oikeuksia ei sen kummemmin tarkisteta.
  116. # Jos haluat muuttaa polkumääritystä oletuksesta, laita se lainausmerkkeihin, kuten alla olevassa
  117. # kommentoidussa esimerkissä.
  118. #
  119. # Esimerkki:
  120. # $targetFolder = "C:\TEMP\esimerkkipolku"
  121. #
  122. $targetFolder = [System.Environment]::GetFolderPath("ApplicationData")+"\UpdateEPG"
  123.  
  124. # Valitse PlasmaEPG:n versio (BASIC/HD, oletuksena HD). Asetus vaikuttaa tallennushakemistoon boksissa.
  125. #
  126. # $PlasmaEPGver = "BASIC"
  127. $PlasmaEPGversion = "HD"
  128.  
  129. # - - -  - - - - - - - - - - - - - - - - - - - - - - - - -
  130. #
  131. #                           HUOM!
  132. #
  133. #    Tästä eteenpäin tiedostoa ei ole tarkoitettu muokattavaksi!
  134. #
  135. # - - -  - - - - - - - - - - - - - - - - - - - - - - - - -
  136.  
  137. # Määritellään tiedostonimi väliaikaisesti tarvittavalle komentojonolle
  138. $tempScript = "tempscript.txt"
  139.  
  140. # Määritellään noudettavan zip-tiedoston nimi
  141. $plasmaZIP = "PlasmaEPG.zip"
  142.  
  143. # Määritellään PlasmaEPG:n eri versioille kelpaavat EPG-tiedostojen nimet
  144. $plasmaEPGfile = "PlasmaEPG.evts"
  145. $plasmaEPGHDfile = "PlasmaEPG_HD.evts"
  146.  
  147. # Määritellään käyttäjäkohtainen polku noudettavalle EPG-tiedostolle
  148. $EPGSource = "http://www.toppy.fi/epg/getepg.php?user=$username"
  149.  
  150. # Määritellään noudetun tiedoston paikallisen kopion sijainti ja nimi
  151. $targetFile = "$targetFolder\$plasmaZIP"
  152.  
  153. # Tarkistetaan vastaako Toppy. Jos ei vastaa --> keskeytetään
  154. Write-Host "Tarkistetaan vastaako digiboksi, odota hetki..." -foregroundcolor "yellow"
  155. $result = $true
  156. try { Test-Connection $toppyIP -Source localhost -ErrorAction Stop -Count 1}
  157. catch { $result = $false }
  158. if ($result -eq 0){
  159.     Write-Host
  160.     Write-Host "HUOM! Digiboksi ei vastaa, keskeytetään skriptin suoritus..." -foregroundcolor "red"
  161.     Write-Host ""
  162.     Write-Host "Tarkista että boksi on päällä ja verkkoyhteys kunnossa." -foregroundcolor "yellow" 
  163.     Write-Host
  164.     break
  165. }
  166.  
  167. # Digiboksi vastasi odotetusti, jatketaan suoritusta
  168.     Write-Host "OK, digiboksi vastasi odotetusti, jatketaan..." -foregroundcolor "Green"
  169.  
  170. # Tarkistetaan onko kohdehakemisto jo olemassa ja jos ei ole, yritetään luoda se
  171. $FileExists = Test-Path $targetFolder
  172. If ($FileExists -eq $True) {
  173.     # Hakemisto oli olemassa, siivotaan mahdolliset konfliktitiedostot pois alta
  174.     Write-Host "Hakemisto oli jo olemassa, poistetaan mahdolliset vanhat versiot tiedostoista..."  -foregroundcolor "yellow"
  175.     $FileExists = Test-Path $targetFolder\$plasmaEPGfile
  176.     If ($FileExists -eq $True) {rm $targetFolder\PlasmaEPG*.* -force}
  177.    
  178.     $FileExists = Test-Path $targetFolder\$plasmaEPGHDfile
  179.     If ($FileExists -eq $True) {rm $targetFolder\PlasmaEPG*.* -force}
  180.    
  181.     $FileExists = Test-Path $targetFolder\$plasmaZIP
  182.     If ($FileExists -eq $True) {rm $targetFolder\$plasmaZIP -force}
  183.    
  184.     $FileExists = Test-Path $targetFolder\$tempscript
  185.     If ($FileExists -eq $True) {rm $targetFolder\$tempscript -force}
  186. }
  187. else {
  188.     Write-Host
  189.     Write-Host "Kohdehakemistoa ei löydy, luodaan se..." -foregroundcolor "yellow"
  190.     New-Item -Path $targetFolder -ItemType "directory"
  191. }
  192.  
  193. # Siirrytään kohdehakemistoon
  194. cd $targetFolder
  195.  
  196. # Noudetaan EPG-tiedot palvelimelta wgetillä
  197. Write-Host ""
  198. Write-Host "Noudetaan EPG-tietoja..." -foregroundcolor "yellow"
  199. &$wgetExe --http-user=$user --http-password=$passwd -nv -O $targetFile $EPGSource
  200.  
  201. # Tarkistetaan saatiinko tiedosto siirrettyä, muuten keskeytetään
  202. if (Test-Path "$targetFolder\$plasmaZIP") {
  203.     }
  204. else { Write-Host
  205.     Write-Host "Tiedostoa ei löydy, suoritus keskeytetään..." -foregroundcolor "red"
  206.     Write-Host "Mahdollinen syy: Virheellinen tunnus, puutteelliset oikeudet tai verkkovirhe" -foregroundcolor "yellow"
  207.     break
  208. }
  209.  
  210. # Tarkistetaan tiedoston koko ja jos se on alle 1kb, jotain meni pieleen --> keskeytetään
  211. if ((Get-Item "$targetFolder\$plasmaZIP").length -lt 1kb){
  212.     Write-Host
  213.     Write-Host "Tiedosto on tyhjä, tai se on korruptoitunut, suoritus keskeytetään..." -foregroundcolor "red"
  214.     Write-Host "Mahdollinen syy: Virheellinen tunnus, tai palvelun sallima 4 päivitystä vuorokaudessa ylitetty " -foregroundcolor "yellow"
  215.     Write-Host
  216.     break
  217. }
  218.  
  219. Write-Host ""
  220. Write-Host "EPG-tiedot noudettu onnistuneesti, jatketaan..." -foregroundcolor "green"
  221.  
  222. # Puretaan zip
  223. Write-Host
  224. Write-Host "Puretaan zip-paketti..." -foregroundcolor "yellow"
  225. &$7zExe x $targetFile -y
  226.  
  227. # Tarkistetaan löytyikö paketin sisältä haluttu tiedosto, muuten keskeytetään
  228. if (Test-Path "$targetFolder\$plasmaEPGfile") {
  229.     }
  230. else { Write-Host
  231.     Write-Host $plasmaEPGfile "-tiedostoa ei löydy, suoritus keskeytetään..." -foregroundcolor "red"
  232.     Write-Host "Mahdollinen syy: Tyhjä tai viallinen zip-tiedosto, tarkista asetukset ja tunnuksen toimivuus" -foregroundcolor "yellow"
  233.     break
  234. }
  235.  
  236. # Viedään tiedoston kohdepolku muuttujaan ja vaihdetaan tiedoston nimi sopivaksi (valitun PlasmaEPG:n tyypin perusteella)
  237. if ($PlasmaEPGversion -like "HD"){$evtsLocation = "/ProgramFiles/PlasmaEPG_HD"
  238.     ren $plasmaEPGfile $plasmaEPGHDfile
  239.     $plasmaEPGfile = $plasmaEPGHDfile
  240. }
  241. else {$evtsLocation = "/ProgramFiles/PlasmaEPG"
  242. }
  243.  
  244. # Luodaan väliaikainen tiedosto Windowsin oman ftp:n komentamista varten
  245. New-Item -Path $targetFolder -Name $tempScript -ItemType File
  246.  
  247. Add-Content "$targetFolder\$tempScript" "$toppyUsername
  248. $toppyPasswd
  249. bin
  250. cd $evtsLocation
  251. put $plasmaEPGfile
  252. bye"
  253.  
  254. # Siirretään noudettu tiedosto toppyyn ftp:llä
  255. Write-Host
  256. Write-Host "Siirretään evts-tiedosto digiboksiin ftp:llä..." -foregroundcolor "yellow"
  257. ftp -s:$tempscript $toppyIP
  258.  
  259. # Siivotaan jäljet
  260. Write-Host
  261. Write-Host "Poistetaan kaikki luodut tiedostot..." -foregroundcolor "yellow"
  262. rm $targetFolder\PlasmaEPG*.* -force
  263. rm $targetFolder\$plasmaZIP -force
  264. rm $targetFolder\$tempscript -force
  265.  
  266. clear-variable username
  267. clear-variable passwd
  268. clear-variable toppyUsername
  269. clear-variable toppyPasswd
  270.  
  271. Write-Host
  272. Write-Host "EPG-tiedot noudettu ja siirretty toppyyn..." -foregroundcolor "green"
  273. Write-Host
  274.  
  275. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement