-- vim:set ft=lua: dofile(mg.script_name:gsub('[^\\/]*$','')..'util.lua') function AddReserve(onid,tsid,sid,eid,post) local r={onid=onid,tsid=tsid,sid=sid,eid=eid} local presetID=GetVarInt(post,'presetID',0,65534) if presetID then for i,v in ipairs(edcb.EnumRecPresetInfo()) do if v.id==presetID then r.recSetting=v.recSetting break end end end if r.recSetting then local useMargin=GetVarInt(post,'useDefMarginFlag')~=1 or nil r.recSetting={ batFilePath=r.recSetting.batFilePath, recFolderList=r.recSetting.recFolderList, partialRecFolder=r.recSetting.partialRecFolder, recMode=GetVarInt(post,'recEnabled')~=1 and 5 or GetVarInt(post,'recMode',0,4), noRecMode=GetVarInt(post,'recMode',0,4), tuijyuuFlag=GetVarInt(post,'tuijyuuFlag')==1, priority=GetVarInt(post,'priority',1,5), pittariFlag=GetVarInt(post,'pittariFlag')==1, suspendMode=GetVarInt(post,'suspendMode',0,4), rebootFlag=GetVarInt(post,'rebootFlag')==1, startMargin=useMargin and GetVarInt(post,'startMargin',-6*3600,6*3600), endMargin=useMargin and GetVarInt(post,'endMargin',-6*3600,6*3600), serviceMode=GetVarInt(post,'serviceMode')==1 and 0 or 1+16*(GetVarInt(post,'serviceMode_1',0,1) or 0)+32*(GetVarInt(post,'serviceMode_2',0,1) or 0), continueRecFlag=GetVarInt(post,'continueRecFlag')==1, tunerID=GetVarInt(post,'tunerID'), partialRecFlag=GetVarInt(post,'partialRecFlag',0,1) or 0 } local chInfo=BinarySearch(edcb.GetChDataList(),r,CompareFields('onid',false,'tsid',false,'sid')) local ev=edcb.SearchEpg(onid,tsid,sid,eid) if chInfo and ev and ev.startTime and ev.durationSecond and r.recSetting.recMode and r.recSetting.priority and r.recSetting.suspendMode and (not useMargin or r.recSetting.startMargin and r.recSetting.endMargin) and r.recSetting.tunerID then r.title=ev.shortInfo and ev.shortInfo.event_name or '' r.startTime=ev.startTime r.startTimeEpg=ev.startTime r.durationSecond=ev.durationSecond r.stationName=chInfo.serviceName return edcb.AddReserveData(r) end end return false end ct=CreateContentBuilder(GZIP_THRESHOLD_BYTE) ct:Append(DOCTYPE_HTML4_STRICT..[=[
]=]..DefaultHeadContents()..[=[

# 番組詳細

]=]) onid,tsid,sid,eid=GetVarEventID(mg.request_info.query_string,'id') presetID=GetVarInt(mg.request_info.query_string,'presetID') or 65535 post=AssertPost() if post then if mg.get_var(post,'addchg') then ct:Append('
'..(AddReserve(onid,tsid,sid,eid,post) and '予約を追加しました' or '入力値不正')..'
\n') end end r=nil edcb.htmlEscape=15 for i,v in ipairs(edcb.GetReserveData()) do if v.onid==onid and v.tsid==tsid and v.sid==sid and v.eid==eid then r=v break end end if not r and presetID==65535 then presetID=0 end epgDate=0 ev=edcb.SearchEpg(onid,tsid,sid,eid) if ev and ev.startTime then --番組表のdateクエリは今日(深夜4時区切り)を基準(=0)とする epgDate=math.floor((TimeWithZone(ev.startTime)-4*3600)/(24*3600))-math.floor((os.time()+(9-4)*3600)/(24*3600)) end ct:Append('

\n' ..'
番組情報
  '..DecorateProgramText(ConvertProgramText(ev))..'
\n') if r then dur=r.startTime.hour*3600+r.startTime.min*60+r.startTime.sec+r.durationSecond ct:Append('
プログラム予約化（プログラム予約化は元に戻せません。番組を特定できなくなるため追従もできません。）
  \n' ..'
  \n' ..'\n' ..'予約日時: //\n:: ～\n::
  \n' ..'
\n') end ct:Append('
プリセット
  \n' ..'
  ' ..'
\n' ..'
録画設定
  \n' ..'
  \n' ..'\n' ..'\n' ..RecSettingTemplate(rs)..'
\n') if r then ct:Append('
-
  \n' ..'
  \n' ..'\n' ..'\n' ..'
\n') end ct:Append([=[

]=]) ct:Finish() mg.write(ct:Pop(Response(200,'text/html','utf-8',ct.len,ct.gzip)..'\r\n'))