... ... ...
... ...
... ... ...



 
標題: 徹底解決DVBViewer Recording Service EPG變成空白的問題
pauliu
專題樓主
Rank: 5Rank: 5
數碼毒人


UID 27
精華 6
積分 2167
帖子 1805
閱讀權限 89
註冊 2007-9-12
狀態 離線
 
發表於 2010-11-12 14:04  資料  個人空間  短消息  加為好友 
徹底解決DVBViewer Recording Service EPG變成空白的問題

不知道其他DVBViewer Recording Service的使用者有沒有同樣的問題,就是EPG電子節目表每朝早也會變成空白一片,或是只剩下零碎的部份時段的節目資料。最奇怪的是這個問題只會發生於TVB的頻道上,而ATV的EPG還是完整的,估計可能是香港頻道上的一些特殊因素令Recording Service在更新epg.dat資料庫時未能正確重寫資料所引致。

在Recording Service暫時未有更新去解決這問題之前,我們唯有是把EPG更新功能預設為關閉,在更新前的一刻才把更新功能打開及把舊有的EPG資料庫epg.dat徹底刪除。更新後立刻把EPG更新功能關閉。

(TVB的節目表每朝早也空白一片...)


Recording Service的EPG開關設定是儲存於service.xml內的一個NoEPG的機碼上。要自動修改這個機碼,首先要下載一個免費的XML編輯器XMLStarlet

官方網址:http://sourceforge.net/projects/xmlstar/files/

下載xmlstarlet-1.0.2-win32.zip及解壓後,把裡面的xml.exe複製到DVBViewer的程式資料夾中。

跟著在DVBViewer的程式資料夾中建立兩個批次檔Batch File

disable_epg.cmd

@echo off
rem -------- Change the paths for your system ----------
set prgpath=C:\Program Files\DVBViewer
set datpath=C:\ProgramData\CMUV\DVBViewer\config
rem -----------------------------------------------------
cd "%prgpath%"
net stop "DVBViewer Recording Service"
xml ed -P -u /settings/section/entry[@name='NoEPG'] -v 1 "%datpath%\service.xml" >temp.xml
copy temp.xml "%datpath%\service.xml" /y
net start "DVBViewer Recording Service"

enable_epg.cmd (26/11/2010 更新:加入先把epg.dat刪除來解決無法更新節目表資料庫問題)

@echo off
rem -------- Change the paths for your system ----------
set prgpath=C:\Program Files\DVBViewer
set datpath=C:\ProgramData\CMUV\DVBViewer\config
rem -----------------------------------------------------
cd "%prgpath%"
net stop "DVBViewer Recording Service"
xml ed -P -u /settings/section/entry[@name='NoEPG'] -v 0 "%datpath%\service.xml" >temp.xml
copy temp.xml "%datpath%\service.xml" /y
[color=Red]cd "%datpath%
erase epg.dat
cd..
erase epg.dat[/color]
net start "DVBViewer Recording Service"

或可從這裡下載 [attach]1525[/attach]

以上的Batch File適用於Windows 7上。如果是使用Windows XP的,請修改兩個Batch File中的prgpath及datpath的DVBViewer路徑。

在進行下一步之前,我們先把service.xml從datpath備份到其他位置上。請注意,無論是備份或是把設定檔回復也先要到Tray Icon中把DVBVService暫停才可進行,因為DVBVService會在結束時把整個service.xml重新寫入一次。完成備份之後便可以測試兩個Batch File是否運作正常。先執行disable_epg.cmd,執行後打開service.xml來看看,應該會看到其中NoEPG的值應該會被改寫為1。再執enable_epg.cmd,執行後再打開service.xml來看看,應該會看到其中NoEPG的值應該會被改寫為0。萬一過程出現問題導致service.xml被損壞,請先把service.xml從備份中回復到datpath,再查看哪裡出了問題。

下一步到Web Interface中把Automatic EPG Update every 12 hours及Receive EPG Data兩項關閉,再到Timer中加入Start EPG Scan的Internal Task Timer,設定啟動時間為下午15:01-15:04。





再到Windows的工作排程中加入執行enable_epg.cmd,執行時間為下午15:00。另外加入執行disable_epg.cmd,執行時間為下午15:05。

上述的三項排程的意思是先由Windows排程啟動enable_epg.xml把更新EPG的功能開啟,並且先把舊有資料庫epg.dat刪除,再由Recording Service進行Start EPG Scan接收EPG資料,最後再由Windows排程把更新EPG的功能關閉。直至第二天的早上,因為更新EPG的功能關閉了,所以無論是定時錄影或收看電視也不會影響了系統內的節目表資料庫。

要注意一點,就是當運行排程時,背景運行的DVBVService會被停止數分鐘,停止的期間不能進行錄影或看電視。如果時間剛好要使用DVBViewer,請設定另一個時間執行。

雖然Recording Service可以自行設定排程,但請勿把上述兩個Batch File於Recording Service內的排程執行,可能是Program Bug的關係,Batch File會不斷地重複執行,使DVBViewer無法正常運作及當機。請緊記要使用Windows的工作排程來執行。



 附件: 您所在的用戶組無法下載或查看附件




頂部
pauliu
專題樓主
Rank: 5Rank: 5
數碼毒人


UID 27
精華 6
積分 2167
帖子 1805
閱讀權限 89
註冊 2007-9-12
狀態 離線
 
發表於 2010-12-10 22:02  資料  個人空間  短消息  加為好友 

使用了之前介紹的方法之後,應該可以解決了EPG變成空白的問題。不過這一組Batch Files在設計上因為要重新啟動DVBVService的服務,加上要安裝附加軟件來修改XML設定檔及要分別使用到Windows及DVBViewer的工作排程來執行,似乎是比較麻煩。

最近設計了另一個比較簡單的VBS程式來做相同的工作。程式使用了Recording Service API的方式來執行各項的指令,不需要重新啟動服務,不需要刪除epg.dat資料庫,而且只需要使用一個Windows排程來執行便足夠。

因為暫時未找到單獨修改NoEPG(EIT)的方法,每次使用API方式來修改NoEPG設定也會影響到user、password、guest、guestpassword、language幾個設定,所以程式先要從XML檔讀取受影響到的設定,修改NoEPG設定時一同寫入才可。

reload_epg.vbs

dim user,password,guest,guestpassword,language,xDoc,xnode1,xnode2,xnode3,xatt

' DVBViewer data config path for Windows 7
datpath = "c:\ProgramData\CMUV\DVBViewer\config"

' DVBViewer data config path for Windows XP
'datpath = "C:\Documents and Settings\All Users\Application Data\CMUV\DVBViewer\config"

user = ""
password ="input user password here"
guest = ""
guestpassword = "input guest password here"
language = ""

' Read usernames & passwords from xml
' Because turn on/off Receive EPG Data settings will
' changed some other settings include username,
' password and language, so we need to read the
' original settings from xml first
Set xDoc = CreateObject("MSXML.DOMDocument")
xDoc.validateOnParse = False
xDoc.Load(datpath & "\svcuserdata.xml")
set xnode1 = xDoc.childnodes(1)
set xnode2 = xnode1.childnodes(0)
set xatt = xnode2.attributes(0)
for each xnode3 in xnode2.childnodes
if xnode3.getAttribute("name") = "User" then
  user = xnode3.text
end if
if xnode3.getAttribute("name") = "Password" then
  password = xnode3.text
end if
if xnode3.getAttribute("name") = "Guest" then
  guest = xnode3.text
end if
if xnode3.getAttribute("name") = "GuestPassword" then
  guestpassword = xnode3.text
end if
next

xDoc.Load(datpath & "\service.xml")
set xnode1 = xDoc.childnodes(1)
set xnode2 = xnode1.childnodes(1)
set xatt = xnode2.attributes(0)
for each xnode3 in xnode2.childnodes
if xnode3.getAttribute("name") = "Language" then
  language = xnode3.text
end if
next
' end of reading xml

Set Http = CreateObject("MSXML2.XMLHTTP")

' Turn on Receive EPG Data setting
Http.Open "GET","http://127.0.0.1:8089/config.html?EIT=1&USERNAME="+user+"&PASSWORD="+password+"&USERNAMEGUEST="+guest+"&PWGUEST="+guestpassword+"&LANGUAGE="+language+"&cbTV=1&cbEmpty=1&aktion=config&save=Save",false
Http.Send

' Submit Clear EPG instruction
Http.Open "GET","http://127.0.0.1:8089/index.html?epg_clear=true",false
Http.Send

' Submit EPG Scan instruction
Http.Open "GET","http://127.0.0.1:8089/tasks.html?task=EPGStart&aktion=tasks",false
Http.Send

' Wait 3 minutes  for EPG Scan
WScript.Sleep(180000)

' Turn off Receive EPG Data setting
Http.Open "GET","http://127.0.0.1:8089/config.html?USERNAME="+user+"&PASSWORD="+password+"&USERNAMEGUEST="+guest+"&PWGUEST="+guestpassword+"&LANGUAGE="+language+"&cbTV=1&cbEmpty=1&aktion=config&save=Save",false
Http.Send

或可從這裡下載:
For Windows 7: [attach]1576[/attach]
For Windows XP: [attach]1577[/attach]

注意!新版本的Recording Service已沒有把User Password及Guest Password儲存於svcuserdata.xml內,你必須在VB Script的第10行及12行自行設定密碼,否則運行本VB Script後密碼會被清除!

把reload_epg.vbs儲存或複製到DVBViewer的程式資料夾內,在Windows工作排程加入及設定何時執行。

因為程式將會由http呼叫有關的API,所以需要在svcuserdata.xml的尾段中加入設本機的IP (127.0.0.1)為Trust Device,避免因密碼保護導致API呼叫失敗。

<section name="TrustedDevices">
    <entry name="0">127.0.0.1</entry>
</section>

簡略解釋程式的運作。程式開始時先從datpath的路徑中讀取XML中的user、password、guest、guestpassword、language設定值,如果主機系統是Windows XP,請uncomment給Windows XP使用的一行datpath。讀取XML後,開啟Receive EPG Data設定,執行清除EPG Data,啟動EPG Scan,等候3分鐘後再關閉Receive EPG Data設定。

[ 本帖最後由 pauliu 於 2012-8-15 18:35 編輯 ]



 附件: 您所在的用戶組無法下載或查看附件




頂部
rockzero18
新手上路
Rank: 1



UID 22275
精華 0
積分 5
帖子 5
閱讀權限 10
註冊 2011-3-2
狀態 離線
 
發表於 2011-3-5 04:34  資料  個人空間  短消息  加為好友 
請問使用了這個方法來更新EPG
那麼這樣設定DVBViewer正確嗎?






頂部
pauliu
專題樓主
Rank: 5Rank: 5
數碼毒人


UID 27
精華 6
積分 2167
帖子 1805
閱讀權限 89
註冊 2007-9-12
狀態 離線
 
發表於 2011-3-5 13:06  資料  個人空間  短消息  加為好友 
我在硬體設定中沒有剔停止接收EPG,其餘的設定就和你一樣。不過有時DVBViewer都向Recording Service取不到EPG,但Recording Service自己的Webinterface上就有,要現試試問題在那裡。





頂部
rockzero18
新手上路
Rank: 1



UID 22275
精華 0
積分 5
帖子 5
閱讀權限 10
註冊 2011-3-2
狀態 離線
 
發表於 2011-3-12 19:36  資料  個人空間  短消息  加為好友 
請問有需要手動按DVBViewer設定裡的
Recording Service的"Update EPG"按鈕嗎?
當每一次執行完reload_epg.vbs之後。

頂部
pauliu
專題樓主
Rank: 5Rank: 5
數碼毒人


UID 27
精華 6
積分 2167
帖子 1805
閱讀權限 89
註冊 2007-9-12
狀態 離線
 
發表於 2011-3-12 23:17  資料  個人空間  短消息  加為好友 


QUOTE:
原帖由 rockzero18 於 2011-3-12 19:36 發表
請問有需要手動按DVBViewer設定裡的
Recording Service的"Update EPG"按鈕嗎?
當每一次執行完reload_epg.vbs之後。

如果純粹用Recordng Service來作預錄、Streaming等,是不需要入DVBViewer按Update EPG的。

如果在本機或LAN上的DVBViewer連接到Recording Service看電視,應該也不需要手動按Update EPG的,因為如果「Download EPG from service」設定已選取,每次啟動DVBViewer時應該也會自動從Recording Service接收EPG的。不過有時開啟DVBViewer後是沒有EPG Data的,只要關閉程式再開,又會有返EPG Data,未知是否DVBViewer的另一個Bug。





頂部
rockzero18
新手上路
Rank: 1



UID 22275
精華 0
積分 5
帖子 5
閱讀權限 10
註冊 2011-3-2
狀態 離線
 
發表於 2011-3-12 23:36  資料  個人空間  短消息  加為好友 
不好意思,問個題外話…

請問Recordng Service的Streaming功能
有辦法給Android手機使用嗎?

雖然官方說明裡是說只適用於
iPhone/iPad(即iOS裝置)等使用!

頂部
pauliu
專題樓主
Rank: 5Rank: 5
數碼毒人


UID 27
精華 6
積分 2167
帖子 1805
閱讀權限 89
註冊 2007-9-12
狀態 離線
 
發表於 2011-3-13 09:42  資料  個人空間  短消息  加為好友 


QUOTE:
原帖由 rockzero18 於 2011-3-12 23:36 發表
不好意思,問個題外話…

請問Recordng Service的Streaming功能
有辦法給Android手機使用嗎?

雖然官方說明裡是說只適用於
iPhone/iPad(即iOS裝置)等使用!

在官方討論區也有網友討論這問題,不過好像還未有解決方法。





頂部
ehtw1355
新手上路
Rank: 1



UID 22597
精華 0
積分 21
帖子 21
閱讀權限 10
註冊 2011-4-12
狀態 離線
 
發表於 2011-4-17 17:52  資料  個人空間  短消息  加為好友 
徹底解決都幾複雜啊~~~

頂部
 



當前時區 GMT+8, 現在時間是 2019-10-22 18:05

Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.031200 second(s), 7 queries , Gzip enabled

清除 Cookies - 聯繫我們 - UMPC FEVER - Archiver

Copyright 2007 UMPCFEVER. | All Rights Reserved