Пишем ПО для дрима

omst

Профи в Сат-ТВ
Не так трудно, как кажется - просто инфо разбросана по разным сайтам.

Часть наработанных скриптов - программер разберется и слепит свое - но нам же всем от этого будет лучше?

Забавно.

Цель: простыми скриптами организовать инфообмен с дримбоксом.
Начерно – не редактируя - часть скопившихся наработок – и, если кому интересно,прокомментирую.
Код - вставить в Windows редакторе (Блокнот) и сохранить с расширением .vbs


Информация с дримбокса.(Получаем, высвечиваем и записываем в файл c:\dreamInfo.txt)
IPdream - скорректируйте.

Код
--------------------------------------------------------------------------------------------------
'To getAllServ info
'Check - your dreambox must be "on"

Option Explicit
'On Error Resume Next

'login & password

Dim ipDream,sFile,oHTTP,oFSO,answ,sOut,i,oTS,WshShell
sFile = "c:\dreamInfo.txt"
set oHTTP = WScript.CreateObject("Microsoft.XMLHTTP")
set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
ipDream = "http://192.168.1.3"
oHTTP.open "GET", ipDream, False,"root","dreambox" 'Check your login & passw
oHTTP.send

'main

ipDream = "http://192.168.1.3/cgi-bin/getServices?ref=1:15:fffffffe:12:ffffffff:0:0:0:0:0:"
oHTTP.open "GET", ipDream, False
oHTTP.send
answ = oHTTP.responseBody
set oHTTP = nothing
sOut = ""
For i = 0 to UBound(answ)
sOut = sOut & chrw(ascw(chr(ascb(midb(answ,i+1,1)))))
Next
set oTS = oFSO.CreateTextFile(sFile, True)
oTS.Write sOut
oTS.Close
set oTS = Nothing
set oFSO = Nothing
'Set WshShell = WScript.CreateObject("WScript.Shell")
'WshShell.Popup sOut
WScript.Echo sOut
---------------------------------------------------------------------------------------------




Код
---------------------------------------------------------------------------------------------
'To get info
'Check - your dreambox must be "on"

Option Explicit
'On Error Resume Next

'login & password

Dim ipDream,sFile,oHTTP,oFSO,answ,sOut,i,oTS,dx
sFile = "c:\dreamInfo.txt"
set oHTTP = WScript.CreateObject("Microsoft.XMLHTTP")
set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
ipDream = "http://192.168.1.3"
oHTTP.open "GET", ipDream, False,"root","dreambox" 'Check your login & passw
oHTTP.send

'main

ipDream = "http://192.168.1.3/xml/streaminfo"
oHTTP.open "GET", ipDream, False
oHTTP.send
answ = oHTTP.responseText
set oHTTP = nothing
'sOut = ""
'For i = 0 to UBound(answ)
'sOut = sOut & chrw(ascw(chr(ascb(midb(answ,i+1,1)))))
'Next
'set oTS = oFSO.CreateTextFile(sFile, True)
'oTS.Write sOut
'oTS.Close
set oTS = Nothing
set oFSO = Nothing


Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Popup answ

-------------------------------------------------------------------------------------------------



Пример управления

Код
-------------------------------------------------------------------------------------------------
'To control
'Check - your dreambox must be "on"

Option Explicit
'On Error Resume Next

'login & password

Dim ipDream,oHTTP
set oHTTP = WScript.CreateObject("Microsoft.XMLHTTP")
ipDream = "http://192.168.1.3"
oHTTP.open "GET", ipDream, False,"root","dreambox" 'Check your login & passw
oHTTP.send
'main

ipDream = "http://192.168.1.3/cgi-bin/rc?2" '1 channel of Favor(need number+1)
oHTTP.open "GET", ipDream, False,"root","dreambox"
oHTTP.send

oHTTP.send
set oHTTP = nothing
-----------------------------------------------------------------------------------------------------


Мультимедиа (Запись потока).
(для разминки… MSWINSOC – здесь легко организовать и UDP коннекшен).

порт31338 - пишем 1 PID (звук, к примеру, кодированный поток; зачем...в другой теме)
здесь забито под 5 канал с Сириуса - нужно поставить дрим на этот канал.

(btw – был удивлен; команда по порту 31338 в синтаксисе GET /PID, n)
где n – номер порта >1024 открывает на дриме постоянно верещащий UDP порт потока
заданного PID… другое дело – к чему приспособите Вы этот формат данных…

Код
------------------------------------------------------------------------------------------------------
'Recording

Option Explicit
'On Error Resume Next

Dim winsock, InData, TotalBytesIn, req
TotalBytesIn = 0

Main
Sub Main()
set winsock = Wscript.createobject("MSWINSOCK.Winsock", "winsock_")
winsock.Remotehost = "192.168.1.3" 'dream IP
winsock.RemotePort = 31338 'PORT
winsock.connect


Dim secs 'seconds
While winsock.state <> 7 And winsock.state <> 8 And winsock.state <> 9 And secs <> 20
Wscript.Sleep 1000 'Sleep for a sec then check again
secs = secs + 1
Wend

If secs > 19 Then
MsgBox "TimeOut"
Wscript.Quit
End If


req = "GET /1830 HTTP/1.1" & vbcrlf

winsock.SendData req & vbcrlf 'Important - "& vbcrlf" in end

WScript.Sleep 500
MsgBox "Recording...To stop press OK "
If winsock.state <> 0 Then winsock.close
Set winsock = nothing

End Sub


Function WriteData(Data) 'Just used mainly for logging info 'note: its set up for win98 not nt
Dim fso, file
Set fso = createobject("Scripting.FileSystemObject")
Set file = fso_OpenTextFile("C:\dream.mpa", 8, True)
file.write Data '& vbcrlf
file.close
Set file = nothing
Set fso = nothing
End Function

Sub winsock_DataArrival(bytesTotal)
winsock.GetData InData, VBString
WriteData InData
End Sub

Sub winsock_Error(Number, Description, SCode, Source, HelpFile, HelpContext,CancelDisplay)
MsgBox "Error " & Number & vbcrlf & Description
End Sub
------------------------------------------------------------------------------------------------

Полный поток - порт 31339, синтаксис общеизвестен. Пиды устанавливайте свои - здесь под тот же канал.
Код
------------------------------------------------------------------------------------------------
'Recording

Option Explicit
'On Error Resume Next '

Dim winsock, InData, TotalBytesIn, req
TotalBytesIn = 0

Main
Sub Main()
set winsock = Wscript.createobject("MSWINSOCK.Winsock", "winsock_")
winsock.Remotehost = "192.168.1.3" 'dream IP
winsock.RemotePort = 31339 'PORT
winsock.connect


Dim secs 'seconds
While winsock.state <> 7 And winsock.state <> 8 And winsock.state <> 9 And secs <> 20
Wscript.Sleep 1000 'Sleep for a sec then check again
secs = secs + 1
Wend

If secs > 19 Then
MsgBox "TimeOut"
Wscript.Quit
End If


req = "GET /0,182e,182f,1830 HTTP/1.1" & vbcrlf '!!! 0,PMT,VideoPID,AudioPid

winsock.SendData req & vbcrlf 'Its important - "& vbcrlf" in end

WScript.Sleep 500
MsgBox "Recording...To stop press OK "
If winsock.state <> 0 Then winsock.close
Set winsock = nothing

End Sub


Function WriteData(Data)
Dim fso, file
Set fso = createobject("Scripting.FileSystemObject")
Set file = fso_OpenTextFile("C:\dream.ts", 8, True)
file.write Data '& vbcrlf
file.close
Set file = nothing
Set fso = nothing
End Function

Sub winsock_DataArrival(bytesTotal)
winsock.GetData InData, VBString
WriteData InData
End Sub

Sub winsock_Error(Number, Description, SCode, Source, HelpFile, HelpContext,CancelDisplay)
MsgBox "Error " & Number & vbcrlf & Description
End Sub
---------------------------------------------------------------------------------------------------





Блин.... Третий раз правлю - ограничение по размеру...
ну не умещаюсь я ....
урезал.
 
Последнее редактирование:
Сверху