Kysymys

SaunaVisioVBS

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


Näytä ensimmäinen kirjoitus

177 kommenttia

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.
Tämähän tuli jo selvitettyä tuolla toisessa threadissa
wget      = """c:apuwget.exe"" -t0 -c -S --progress=dot:mega -owget.log --limit-rate=1000K"
http://palsta.saunalahti.fi/index.php/topic,9938.msg111148.html#msg111148 ' TARGET='_blank
Laitoin  limit raten 1000. Nyt saan kaksi latausta yhtä aikaa, mutta muuta sitten ei tehdäkään. Pitää vielä pienentää.

Mutta kerro nyt tyhmälle, miksi 32-bit Seiskalla ja DownLoaderilla sai vaikka kuusi yhtä aikaa ja kaistaa automaattisesti jaettiin ilman mitään limit rate-asetusta.
Käyttäjätaso 3

Mutta kerro nyt tyhmälle, miksi 32-bit Seiskalla ja DownLoaderilla sai vaikka kuusi yhtä aikaa ja kaistaa automaattisesti jaettiin ilman mitään limit rate-asetusta.


Mä en usko että muutos johtuu käyttiksestä, koska huomasin saman ilmiön itsellänikin jo aiemmin. Enkä ole vaihtanut verkossa/softissa mitään.

Taustalla voi olla esim. Elisan HD IPTV:t jotka tulivat samoihin aikoihin. Siellä voi olla esim. QoS-asetuksia jotka nyt
näkyvät tällaisina oireina.

Maksiminopeus lataamisessa ei ole muuttunut ainakaan minulla. Ja wget parametreissa 1000K vastaa siis 8 Mbps.
Kaksi noita samanaikaisesti vie 24M laajakaistan käytännössä kokonaan.

Mutta se on siis todettu meilläkin että wget-lataus häiritsee muuta netin käyttöä paljon pahemmin kuin ennen.
http://saunavisio.wippiespace.com/saunavisio/SaunaVisioVBS/

päivitetty:
sama scripti toimii sekä 32 että 64 bittisessä windowsissa

Maksiminopeus lataamisessa ei ole muuttunut ainakaan minulla. Ja wget parametreissa 1000K vastaa siis 8 Mbps.
Kaksi noita samanaikaisesti vie 24M laajakaistan käytännössä kokonaan.



Tipautin tuon 500:een, mutta silti kaksi latausta tukki koko kaistan. Boxin kytkeytymisnopeus on n. 13 megaa.

Osallistu keskusteluun