Kysymys

SaunaVisioVBS

  • 2 heinäkuu 2009
  • 177 kommenttia
  • 12491 katselukerrat


Näytä ensimmäinen kirjoitus

177 kommenttia

Tee seuraavat muutokset

Selaimen osoiterivi näkyviin
ie.toolbar = 0
=>
ie.toolbar = 1

Ei palata tallennelistaan
ie.navigate portal & "ready.sl"
=>
REM ie.navigate portal & "ready.sl"

Kun nyt painat "Katso tallenne" nappulaa ja ohjaudut sivulle jossa vlc:n pitäisi käynnistyä niin mikä on selaimen osoitekentän sisältö
http://www.saunavisio.fi/tvrecorder/program.sl?programid=337118&view=true
Tämmöinen oli osoitekenttä:

http://www.saunavisio.fi/tvrecorder/program.sl?programid=303192&view=true

Elikkä kai ihan normaali?

Eikä se ole ilman REM:iäkään palannut tallennelistaan, vaan rupeaa näyttämään ohjelmaa pikkuikkunassa pluginilla.


Katsoa voi, mutta kun CapsLock päällä käynnistää ohjelman, tallennetta kun painaa tulee virhe:

Windows Scripting Host

Komentosarja:  f:SaunavisioSaunavisioVBS.vbs
Rivi:                   55
Merkki:               4
Virhe:                  Objekti puuttuu: ´table(...)´
Koodi:                 800A01A8
Lähde:                Suorituksenaikainen Microsoft VBScript virhe


Oletko saunavision vai viihteen käyttäjä?

Pääset virheestä eroon muokkaamalla rivit
set table = ie.document.getelementsbytagname("TABLE")
table(0).parentnode.removechild table(0)

muotoon
rem set table = ie.document.getelementsbytagname("TABLE")
rem table(0).parentnode.removechild table(0)


Rivien tarkoitus on poistaa katselusivulta ensimmäinen elementti . Tuon elementin sisällä on kaikki sivun sisältö.
Tämä siksi että selain ei turhaan renderöisi sivua jolta palataan heti takaisin, nopeuttaa hieman toimintaa.
Toiminnallisuus ei kärsi jos kommentoit nuo kaksi riviä pois (lisäämällä rem niiden eteen).

Sekä vlc että wget toiminto suorittaa nuo rivit joten vähän outoa että sinulla virheilmoitus tulee vain wget puolella...



Tällä lähti mulla toimimaan Elisa Viihteen puolella. Tallenne tulee perille, mutta kummallisella nimellä, kun ei löydä tiedoston tietoja joiden mukaan pitäis nimetä.


Kanava  : EI LÖYTYNYT
Ohjelma : EI_LÖYTYNYT
Aika    : EI.LÖ.TYNY :
Kesto   : EI LÖYTYNYT

EI LÖYTYNYT
elisaviihteen puolella sivun koodi lienee erilaista joten tiedot jää löytymättä, en pysty elisaviihdettä testaamaan.
Näppärä kaveri pystyy ongelman kuitenkin korjaamaan.

Scriptissä tiedot haetaan seuraavasti
etsi kanava, "Kanava: ", "
", 1
etsi ohjelma, "Ohjelma: ", "
", 1
etsi aika, "Aika: ", "
", 1
etsi kesto, "Kesto: ", "
", 1
etsi kuvaus, "", "

", i2

Kanavan nimen oletetaan alkavan merkkijonon Kanava: jälkeen ja loppuvan merkkijonoon

Ohjelman nimen oletetaan alkavan merkkijonon Ohjelma: jälkeen ja loppuvan merkkijonoon

jne...
Katsot sivun lähdekoodia ja muutat noita rivejä vastaavasti niin saattaa alkaa löytymään.
(Scriptissä html tagit pitää olla isoilla kirjaimilla koska IE:n moottori vääntää ne sellaiseen muotoon)



Kanava: JIM

Ohjelma: JIM 😨 Apollo 13
       
Aika: 16.12.2009 21:00

Kesto: 60 min

JIM 😨 Apollo 13. Vuonna 1970 Apollo 13 -kuualuksessa tapahtui tuhoisa räjähdys. Ohjelmassa näytetään, kuinka rohkean ja mutkikkaan operaation avulla miehistö onnistuttiin saamaan hengissä takaisin Maahan. Amerikkalainen dokumenttis
Haetaanko nuo tiedot siltä samalta sivulta, jolla se videokin on? Tämmönen löytyy sieltä:

su 11.10.2009 07:55

MTV3
Chuggington


Wilsonin pitää kuljettaa suuri lasti jäätelöä messuille, mutta harhautuukin muihin puuhiin. Miten käy messujen?

Ei oo tuo VBS ihan hallussa. Miten saan ton onnistumaan, kun koodissa on noita heittomerkkejä? Jos noita sovittaa suoraan sun koodiin, niin tulee virheilmoitus, joka johtunee siitä, että heittomerkkien sisällä on toiset heittomerkit.

Esim. näin:

etsi aika, "", "", 0
Kokeileppas muuttaa vaikka  näin

etsi kanava, "", "", 1
etsi ohjelma, "", "", 1
etsi aika, "", "", 1
etsi kesto, " / ", " -->", 1
etsi kuvaus, "", "

", i2

ja

vvvv = mid(aika, 10, 4)
kk = mid(aika, 7, 2)
pp = mid(aika, 4, 2)
hh = mid(aika, 15, 2)
mm = mid(aika, 18, 2)
Menee juuri kuten munselo tuossa aikaisemmin kirjoitti.

Jos haluaa debugata miten IE:n moottori näkee sivukoodin niin lisää vielä kaksi riviä
jonka jälkeen sivun koodi kirjoitetaan tiedostoon txthtml.txt
(ja jos on tarvetta niin copy/pastaa sieltä sen koodin niin tulee nuo uppercase html-tagit oikein)

if instr(1, url, "view=true") then
   innerhtml = ie.document.body.innerhtml
   set txthtml = fso.createtextfile("txthtml.txt", true, false)
   txthtml.writeline(innerhtml)

   set table = ie.document.getelementsbytagname("TABLE")
   table(0).parentnode.removechild table(0)
Tarkistin nyt uudelleen miten nuo ohjelmatiedot tuolla innerhtml:ssä näkyy. Saapas liitettyä tuon nyt tähänkin selitykseksi aiemmalle. Näin siis Viihteen puolella, jossa ajan esitystäkin on hiukka muutettu

ma 21.12.2009 13:05

Nelonen
Elokuva: Pikku Kananen
Nyt toimii. Kiitos.

Mitäs siinä 64bit -versiossa oli erilaista? Jos sais vaikka valjastettua ton toisen koneen (W7 64bit) latailemaan noita...
Siinä ei toimi dynwrap.dll joten ei pysty lukemaan CAPS-LOCK-näppäimen tilaa (käynnistetäänkö ohjelman katselu vai lataus).
Normaalisti käynnistetään aina ohjelman katselu (vlc)  mutta jos scriptille antaa käynnistysparametriksi wget käynnistetäänkin ohjelman lataus (wget)

Siinä ei toimi dynwrap.dll joten ei pysty lukemaan CAPS-LOCK-näppäimen tilaa (käynnistetäänkö ohjelman katselu vai lataus).
Normaalisti käynnistetään aina ohjelman katselu (vlc)  mutta jos scriptille antaa käynnistysparametriksi wget käynnistetäänkin ohjelman lataus (wget)



Ah, ok. Eipä mulla ole tarvetta playerillä noita katsella. Pitänee vähän tutustua tarkemmin ja vääntää oma versio tosta.
Eipä noi parametrit oikein ilahduttanut VLC:tä... Onneksi vlc muistaa asetukset, eli laitoin vlc:n oletuksiksi subit ja deinterlacen. Muutin myös tiedostopolut tallennusta varten. Nyt toimii!

REM TARKISTA/MUUTA SEURAAVAT ASIAT
REM
REM vlc      = vlc  ohjelman sijanti ja käynnistysparametrit
REM wget      = wget ohjelman sijanti ja käynnistysparametrit
REM directory = hakemisto johon wget tallentaa lataukset (tyhjä => lataukset tallennetaan sovellushakemistoon)
REM username  = käyttäjätunnus (tyhjä => ei kirjauduta automaattisesti)
REM password  = salasana      (tyhjä => ei kirjauduta automaattisesti)
REM portal    = "http://www.saunavisio.fi/tvrecorder/"
REM portal    = "http://elisaviihde.fi/etvrecorder/"
REM infofile  = luodaanko infotiedostoa siirretylle ohjelmalle

vlc      = """C:Program FilesVideoLANVLCvlc.exe"""
wget      = """c:SaunavisioVBSwget.exe"" -t0 -c -S --progress=dot:mega -owget.log"
directory = "c:SaunavisioVBSvideot"
username  = ""
password  = ""
portal    = "http://elisaviihde.fi/etvrecorder/"
infofile  = 1

set fso = createobject("scripting.filesystemobject")
set logfile = fso.createtextfile("SaunaVisioVBS.log", true, false)
logfile.writeline(now & " Ohjelma käynnistyi")

set shell = wscript.createobject("wscript.shell")
set ie = wscript.createobject("internetexplorer.application", "ie_")
set dynwrap = createobject("dynamicwrapper")
dynwrap.register "user32.dll", "GetKeyState", "I=l", "f=s", "R=t"

ie.addressbar = 0
ie.toolbar = 0
ie.statusbar = 0
ie.visible = 1
i2 = 0
innerhtml = ""

if directory <> "" then
if right(directory, 1) <> """ then directory = directory & """
makedir directory
end if

ie.navigate portal & "index.sl?username=" & username & "&password=" & password
do
wscript.sleep 1
loop

sub ie_documentcomplete(pdisp, url)
if instr(1, url, portal & "program.sl?programid=") then
if instr(1, url, "view=true") then
innerhtml = ie.document.body.innerhtml

REM set table = ie.document.getelementsbytagname("TABLE")
REM table(0).parentnode.removechild table(0)

logfile.writeline("")
logfile.writeline(now & " Palataan tallennelistaan")
ie.navigate portal & "ready.sl"

logfile.writeline(now & " Etsitään ohjelman url")
i1 = instr(1, innerhtml, "doGo('")
if i1 then
i1 = i1 + 6
i2 = instr(i1, innerhtml, "')")
if i2 then
url2 = " " & chr(34) & mid(innerhtml, i1, i2 - i1) & chr(34)
url2 = replace(url2, "tvmedia11.saunalahti.fi", "tvmedia12.saunalahti.fi")
logfile.writeline(now & " url =" & url2)

if dynwrap.GetKeyState(20) then
etsi kanava, "", "", 1
etsi ohjelma, "", "", 1
etsi aika, "", "", 1
etsi kesto, " / ", " -->", 1
etsi kuvaus, "", "

", i2

ohjelma = replace(ohjelma, chr(32), "_")    rem 
ohjelma = replace(ohjelma, chr(34), "")      rem "
ohjelma = replace(ohjelma, chr(42), "")      rem *
ohjelma = replace(ohjelma, chr(47), "")      rem /
ohjelma = replace(ohjelma, chr(58), "")      rem :
ohjelma = replace(ohjelma, chr(60), "")      rem <
ohjelma = replace(ohjelma, chr(62), "")      rem >
ohjelma = replace(ohjelma, chr(63), "")      rem ?
ohjelma = replace(ohjelma, chr(92), "")      rem
ohjelma = replace(ohjelma, chr(124), "")    rem |
if left(ohjelma, 7) = "Elokuva" then ohjelma = mid(ohjelma, 8)
ohjelma = trim(ohjelma)
vvvv = mid(aika, 10, 4)
kk = mid(aika, 7, 2)
pp = mid(aika, 4, 2)
hh = mid(aika, 15, 2)
mm = mid(aika, 18, 2)
aika1 = "_" & vvvv & kk & pp & "_" & hh & mm
aika2 = pp & "." & kk & "." & vvvv & " " & hh & ":" & mm

if infofile = 1 then
set info = fso.createtextfile(directory & ohjelma & aika1 & ".txt", true, false)
info.writeline("Kanava  : " & kanava)
info.writeline("Ohjelma : " & ohjelma)
info.writeline("Aika    : " & aika2)
info.writeline("Kesto  : " & kesto)
info.writeline("")
info.writeline(kuvaus)
end if

command = wget & url2 & " -O" & chr(34) & directory & ohjelma & aika1 & ".ts" & chr(34)
logfile.writeline(now & " " & command)
shell.run command, 7, false
else
command = vlc & url2
logfile.writeline(now & " " & command)
shell.run command, 3, false
end if
end if
else
logfile.writeline(now & " url etsintä epäonnistui")
end if
end if
end if
end sub

sub etsi(haku, haku1, haku2, i0)
haku = "EI LÖYTYNYT"
i1 = instr(i0, innerhtml, haku1)
if i1 then
i1 = i1 + len(haku1)
i2 = instr(i1, innerhtml, haku2)
if i2 then haku = mid(innerhtml, i1, i2 - i1)
end if
end sub

sub makedir(dir)
i = instr(1, dir, """)
while i
if not fso.folderexists(left(dir, i)) then fso.createfolder(left(dir, i))
i = instr(i + 1, dir, """)
wend
end sub

sub ie_onquit()
wscript.quit
end sub
Tallennus tietokoneelle Windows 7 64 bit versiolla saadaan toimimaan VisualWget ohjelmalla.
http://www.khomsanph.net/visualwget/#downloads

Käynnistetään SaunaVisioVBS64.vbs ja aletaan katsomaan ohjelmaa VLCllä, ohjelman alreunassa on suora osoite, joka kopioidaan Visualwget ohjelmaan ja tallenus alkaa.
Tallennetun ohjelman pääte muutetaan .TS. Tämä toimii.

Ehkä joku voisi tehdä tämän toimimaan suoraan tähän SaunaVisioVBS64.vbs scriptiin.

Ehkä joku voisi tehdä tämän toimimaan suoraan tähän SaunaVisioVBS64.vbs scriptiin.

Miksi nähdä vaivaa koska käsittääkseni SaunaVisioVBS64.vbs ja wget toimii 64bit windowsissa.
Hmm, Kun toimisikin, Pitää jossain vaiheessa tutkia tarkemmin, mikä mulla on vikana.
Käyttäjätaso 3
Koska tämä SaunaVisioVBS scripti mahdollistaa näppärästi tallenteen avaamisen VLC-softaan, niin samalla
tallenteet on mahdollista myös streamata kotiverkossa erilaisille laitteille.

                  command = vlc & url2 & vlc_sout
                  logfile.writeline(now & " " & command)
                  shell.run command, 3, false

Yllä punaisella oleva muutos riittää, muuttujaan vlc_sout voi laittaa jotain tämänkaltaista:

SaunaVision purkki tai samanlainen NetGem:

" --sout #transcode{vcodec=mp2v,vb=4096,acodec=mp2a,ab=192,scale=1,channels=2,audio-sync,soverlay}:std{access=http,mux=ps,dst=:1234}"

Nokia N810:

" --sout #transcode{fps=25.0,width=400,height=240,vcodec=mp1v,vb=600,scale=1,acodec=mp3,ab=64,samplerate=48000,channels=2,soverlay}:std{access=http,mux=mpeg1,dst=:1234}"

Olen testaillut asetuksia jonkin aikaa, tässä muillekin tiedoksi joitain havaintoja:

Ensinnäkin ihmetyttää miksei Netgem ota stremia vastaan samassa muodossa kun Saunis/Elisa sen
lähettää. Näyttäisi että se pitää kapseloida MPEG PS:lle alkuperäisen TS:n sijaan. Ja siinähän katoaa sitten
tekstitys- ja äänioptiot samalla.

VLC versio 0.8.6a on viimeisin joka osaa sijoittaa YLE tekstit kohdilleen (soverlay) streamauksessa mp2v-koodekilla. Mutta kuvasuhde
ei puolestaan toimi joissain tapauksissa kuin uusimmalla VLC-versiolla. Jos tallenne on 4:3 kuvasuhteella mutta sen alussa esim. edellisen lähetyksen 16:9 matskua, levittyy versiolla 0.8.6a kuva koko ruudulle.

Yle-tekstit saa myös Nokia N810 tablettiin mutta en saa niitä millään oikeaan paikkaan.

YLEn kanavilla ääni vaihtuu joskus hollanniksi mutta senhän voi vaihtaa mediaserveriltä oikeaksi, esim. RDP:llä. Palvelimen VLC:tä voi komentaa taukoihin ja hyppyihin muillakin tavoin (ja kaipa se ääniraidankin vaihto onnistuisi jos vain osaisi  :P)

Apple iPod / iPhonea en ole saanut toimimaan. Google osaa kertoa että sekin onnistuisi jos asentaisi softan jailbreakattuun käyttikseen. Jossain näin myös viitteitä että VLC voisi olla vihdoin tulossa iPhoneen, jolloin sillä tietysti saisi streamin vastaan helposti.

Periaatteessa SaunaVisioVBS voisi toimia pohjana pienimuotoiselle mediaserverille jos skriptin muokkaisi serverillä ajettavaksi ja rakentaisi kevyemmän käyttöliittymän jota voisi komentaa vaikka Saunavision purkin selaimen avulla.
Miten saat saunavision boxin (itselläni saunavisio ei elisaviihde) näyttämään tuota vlc:n transkoodaamaa streamia?
Tallennetun url:n kautta vai miten se onnistuu?
Käyttäjätaso 3

Miten saat saunavision boxin (itselläni saunavisio ei elisaviihde) näyttämään tuota vlc:n transkoodaamaa streamia?
Tallennetun url:n kautta vai miten se onnistuu?



Tikulle esim. test.htm tiedosto ja sen sisään linkki streamiin. Kannattaa käyttää IP-osoitetta eikä palvelimen nimeä, siis muodossa xxx.xxx.xxx.xxx:1234
Imuroin tiedostot IE:llä, Foxilla ei onnistunut.

Hakemisto C:ohjelmatiedostotSaunaVisioVBS. Raahaan DLL-tiedoston regsvr32 päälle. Tulee ilmoitus ...failed. Return code was 0x80004005

64-bittinen Seiska käytössä.
http://saunavisio.wippiespace.com/saunavisio/SaunaVisioVBS/SaunaVisioVBS64.vbs ' TARGET='_blank

Koska dynwrap.dll käyttö ei ilmeisesti onnistu 64-bittisessä windowsissa niin tehty pikakorjaus.
Jos scriptille on annettu käynnistysparametri wget tallenteet ladataan, muutoin katsellaan vlc:llä

http://palsta.saunalahti.fi/index.php/topic,12145.msg103025.html#msg103025 ' TARGET='_blank
Kiitos pekko. Enhän minä tuosta ymmärtänyt, että rekisteröimistä ei tarvita. nyt toimii katselu. Tallennusta seuraavaksi.

Jostain kumman syystä kuva hävisi kun siirsin ikkunaa. Sain tosin takaisin.
Nyt toimii katselu, tallennus ei.

Tyhmä kysyy CapsLock-toiminnosta.

Pitääkö se olla päällä jo kun vbs käynnistetään? Riittääkö, kun se on päällä vai pitääkö painaa koko ajan? Kummallakaan tavalla en saa tulosta. Logissa ei mitään viittausta, että wget:iä olisi yritetty käynnistää. Ei virheilmoja. Polku oikein.
Scriptin alussahan on maininta
REM Koska dynwrap.dll käyttö ei ilmeisesti onnistu 64-bittisessä windowsissa niin tehty pikakorjaus.
REM Jos scriptille on annettu käynnistysparametri wget tallenteet ladataan, muutoin katsellaan vlc:llä



Tee työpöydälle 2 käynnistyskuvaketta, "normaali" ja toinen missä annetaan käynnistysparametriksi wget
Sitten kun haluat ladata tallenteita käynnistät sen wget version

siis esim:
"C:Program FilesSaunaVisioVBSSaunaVisioVBS64.vbs" wget


siis esim:
"C:Program FilesSaunaVisioVBSSaunaVisioVBS64.vbs" wget



Kiitos. Katsos kun minä en scriptin parametreistä  ymmärrä yhtään enempää kuin sika avaruusaluksesta, tarvitsin tuota rautalankamallia.

Kiva kun jaksat opastaa.
No nyt lataa.  ;D

Mutta wget varaa koko netin, ei voi tehdä mitään muuta. Siihen sulla jossain olikin ohje, pitää hakea.

Mutta saakos monta latausta käyntiin yhtä aikaa?

Vastaan itselleni: Saa. Mutta sitten taas menee kaista tukkoon. No, eipä mitään. Otetaan yksi kerrallaan. Mietin vaan, mistä moinen johtuu. Aiemmin 32-bittisellä Seiskalla ja DownLoaderilla laitoin monta tialleneetta tuleman illalla. Aamulla oli kaikki kotona. Tämä ei nyt onnistu.

Osallistu keskusteluun