-- vim:set ft=lua: dofile(mg.script_name:gsub('[^\\/]*$','')..'util.lua') function AddOrChange(dataID,post) local aa={dataID=dataID} local presetID=GetVarInt(post,'presetID',0,65534) if presetID then for i,v in ipairs(edcb.EnumRecPresetInfo()) do if v.id==presetID then aa.recSetting=v.recSetting break end end elseif dataID~=0 then for i,v in ipairs(edcb.EnumAutoAdd()) do if v.dataID==dataID then aa.recSetting=v.recSetting break end end end if aa.recSetting then local useMargin=GetVarInt(post,'useDefMarginFlag')~=1 or nil aa.recSetting={ batFilePath=aa.recSetting.batFilePath, recFolderList=aa.recSetting.recFolderList, partialRecFolder=aa.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 } if aa.recSetting.recMode and aa.recSetting.priority and aa.recSetting.suspendMode and (not useMargin or aa.recSetting.startMargin and aa.recSetting.endMargin) and aa.recSetting.tunerID then aa.searchInfo={ --制御文字は消す andKey=(GetVarInt(post,'disableFlag')==1 and '^!{999}' or '') ..(GetVarInt(post,'caseFlag')==1 and 'C!{999}' or '') ..(mg.get_var(post,'andKey') or ''):gsub('%c',''), notKey=(mg.get_var(post,'notKey') or ''):gsub('%c',''), regExpFlag=GetVarInt(post,'regExpFlag')==1, titleOnlyFlag=GetVarInt(post,'titleOnlyFlag')==1, aimaiFlag=GetVarInt(post,'aimaiFlag')==1, notContetFlag=GetVarInt(post,'notContetFlag')==1, notDateFlag=GetVarInt(post,'notDateFlag')==1, freeCAFlag=GetVarInt(post,'freeCAFlag',0,2) or 0, chkRecEnd=GetVarInt(post,'chkRecEnd')==1, chkRecDay=GetVarInt(post,'chkRecDay') or 0, chkRecNoService=GetVarInt(post,'chkRecNoService')==1, chkDurationMin=GetVarInt(post,'chkDurationMin') or 0, chkDurationMax=GetVarInt(post,'chkDurationMax') or 0 } aa.searchInfo.contentList={} for i=0,10000 do local v=GetVarInt(post,'contentList',0,65535,i) if not v then break end table.insert(aa.searchInfo.contentList,{content_nibble=v}) end aa.searchInfo.serviceList={} for i=0,10000 do local v=mg.get_var(post,'serviceList',i) if not v then break end local m={v:match('^(%d?%d?%d?%d?%d)%-(%d?%d?%d?%d?%d)%-(%d?%d?%d?%d?%d)$')} if #m==3 then table.insert(aa.searchInfo.serviceList,{onid=0+m[1],tsid=0+m[2],sid=0+m[3]}) end end aa.searchInfo.dateList={} for v in (mg.get_var(post,'dateList') or ''):gmatch('[^,]+') do local m={v:match('^ *([a-z][a-z])[a-z](%d?%d):(%d?%d)%-([a-z][a-z])[a-z](%d?%d):(%d?%d) *$')} if #m==6 then local dateInfo={ startDayOfWeek=({su=0,mo=1,tu=2,we=3,th=4,fr=5,sa=6})[m[1]], startHour=0+m[2], startMin=0+m[3], endDayOfWeek=({su=0,mo=1,tu=2,we=3,th=4,fr=5,sa=6})[m[4]], endHour=0+m[5], endMin=0+m[6] } if dateInfo.startDayOfWeek and dateInfo.startHour<24 and dateInfo.startMin<60 and dateInfo.endDayOfWeek and dateInfo.endHour<24 and dateInfo.endMin<60 then table.insert(aa.searchInfo.dateList,dateInfo) end end end return edcb.AddOrChgAutoAdd(aa) end end return false end ct=CreateContentBuilder(GZIP_THRESHOLD_BYTE) ct:Append([=[
]=]) aa={dataID=GetVarInt(mg.request_info.query_string,'id') or 0} if aa.dataID==0 then ct:Append('

# EPG予約 新規条件追加

\n
\n') post=AssertPost() if post then if mg.get_var(post,'addchg') then ct:Append('
'..(AddOrChange(0,post) and '追加しました' or '入力値不正')..'
\n') end else aa.searchInfo={ andKey='', notKey='', regExpFlag=false, titleOnlyFlag=false, aimaiFlag=false, notContetFlag=false, notDateFlag=false, freeCAFlag=0, chkRecEnd=false, chkRecDay=6, chkRecNoService=false, chkDurationMin=0, chkDurationMax=0, contentList={}, dateList={}, serviceList={} } end edcb.htmlEscape=15 else ct:Append('

# EPG予約 条件変更

\n
\n') post=AssertPost() if post then if mg.get_var(post,'addchg') then ct:Append('
'..(AddOrChange(aa.dataID,post) and '変更しました' or '入力値不正')..'
\n') elseif mg.get_var(post,'del') then edcb.DelAutoAdd(aa.dataID) ct:Append('
削除しました
\n') end end edcb.htmlEscape=15 for i,v in ipairs(edcb.EnumAutoAdd()) do if v.dataID==aa.dataID then aa=v break end end end if aa.searchInfo then si=aa.searchInfo ct:Append('

\n' ..'
プリセット
  \n' ..'
  \n' ..'
\n' ..'
条件
  \n' ..'\n' ..'
  \n' ..'\n' ..'
  \n' ..'

  ## 検索条件

  \n' ..'検索キーワード
  \n' ..'NOTキーワード
  \n' ..'正規表現モード\n' ..'あいまい検索モード
  \n' ..'番組名のみ検索対象にする
  \n' ..'大小文字区別
  \n' ..'自動登録を無効にする
  \n' ..'ジャンル絞り込み（Ctrl+複数選択） NOT扱い
  \n' ..'
  \n' ..'サービス絞り込み（Ctrl+複数選択）
  \n' ..'時間絞り込み NOT扱い
  \n' ..'
  \n書式: (sun|mon|tue|wed|thu|fri|sat)H:M-(...)H:M, （例: sun23:0-mon5:0, wed3:0-wed5:0）
  \n' ..'スクランブル放送:\n
  \n' ..'番組長で絞り込み: 分以上 ' ..'分以下（0で無制限）
  \n' ..'同一番組名の録画結果があれば無効で登録する
  \n' ..'全てのサービスで無効にする
  \n' ..' 確認対象期間 日前まで
  \n' ..'

  ## 録画設定

  \n'..RecSettingTemplate(rs)..'
  \n' ..'
\n') if aa.dataID~=0 then ct:Append('
-
  \n' ..'
  \n' ..'\n' ..'\n' ..'
\n') end ct:Append('

\n') end ct:Append([=[
]=]) ct:Finish() mg.write(ct:Pop(Response(200,'text/html','utf-8',ct.len)..(ct.gzip and 'Content-Encoding: gzip\r\n' or '')..'\r\n'))