OSDN Git Service

Import rec10web
authorgn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Sun, 24 May 2009 02:51:28 +0000 (02:51 +0000)
committergn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Sun, 24 May 2009 02:51:28 +0000 (02:51 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@5 4e526526-5e11-4fc0-8910-f8fd03428081

Rec10WEB/trunk/src/fin.htm [new file with mode: 0644]
Rec10WEB/trunk/src/readme.txt [new file with mode: 0644]
Rec10WEB/trunk/src/rec10web.py [new file with mode: 0644]
Rec10WEB/trunk/src/rswi.htm [new file with mode: 0644]
Rec10WEB/trunk/src/schdule.htm [new file with mode: 0644]

diff --git a/Rec10WEB/trunk/src/fin.htm b/Rec10WEB/trunk/src/fin.htm
new file mode 100644 (file)
index 0000000..8516975
--- /dev/null
@@ -0,0 +1,13 @@
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+      <head>
+      <meta http-equive="Content-Type" content="text/html;charset=UTF-8"/>
+       <meta http-equiv="refresh" content="3; url=rec10web.py">
+   <title>Rec10 Simple Web Interface ver.0.1.2</title>         
+       </head>
+       <h1>Rec10 Simple Web Interface ver.0.1.2</h1><br><br>
+       予約が終了しました。移動します。
+      </body>
+</html>
diff --git a/Rec10WEB/trunk/src/readme.txt b/Rec10WEB/trunk/src/readme.txt
new file mode 100644 (file)
index 0000000..a17e5be
--- /dev/null
@@ -0,0 +1,10 @@
+rec10web
+
+Rec10Web is Web Interface for Rec10
+Copyright (C) 2009 Yukikaze
+
+rec10webはrec10の録画予約をweb上から行うために作られた補助ツールです。
+rec10web.pyと同じフォルダ内にrec10が作ったch.dbへのリンクを張ってください。
+
+LicenseはLGPL v3に準拠します
+yukikaze
diff --git a/Rec10WEB/trunk/src/rec10web.py b/Rec10WEB/trunk/src/rec10web.py
new file mode 100644 (file)
index 0000000..c15b0b3
--- /dev/null
@@ -0,0 +1,104 @@
+#!/usr/bin/python
+# coding: UTF-8
+# Rec10 TS Recording Tools
+# Copyright (C) 2009 Yukikaze
+import cgi
+import cgitb
+import sqlite3
+import os
+cgitb.enable()
+path=str(os.path.dirname(os.path.abspath(__file__)))+"/"
+dbpath=path+"ch.db"
+
+
+def getchtxt():
+    db=sqlite3.connect(dbpath)
+    chopt=""
+    for bctype, ontv, chtxt, ch, csch ,updatetime in db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata"):
+        chdisplay=""
+        for bctype,channel,display in db.execute("SELECT bctype,channel,display FROM ch WHERE channel=\""+ontv+"\""):
+            chdisplay=display
+        chopt=chopt+"<option  value="+chtxt+">"+display+"</option>\n                "
+    db.close()
+    return chopt
+def reserv(type,keyword,chtxt,btime,etime,deltatime,opt,deltaday):
+    db=sqlite3.connect(dbpath)
+    recline="\""+type+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\",\""+deltaday+"\""
+    print recline
+    db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt","deltaday") values ('+recline+')')
+    db.commit()
+    db.close()
+def station2chtxt(station):
+    db=sqlite3.connect(dbpath)
+    ret=""
+    for bctype, ontv, chtxt, ch, csch ,updatetime in db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata WHERE station=\""+station+"\""):
+        ret=chtxt
+    db.close()
+    return ret
+def readHtmlSrcSimple():
+    f = open(path+'rswi.htm')
+    ret=f.read()
+    f.close()
+    return ret
+def readRecFinisSimple():
+    f = open(path+'fin.htm')
+    ret=f.read()
+    f.close()
+    return ret
+f=cgi.FieldStorage()
+
+btime=""
+etime=""
+title=""
+chtxt=""
+type="res"
+###ここからiEPG用の読み出し
+if f.getfirst('station'):
+    station=f.getfirst('station')
+    chtxt=station2chtxt(station)
+###ここから外部からの読み出しの場合
+if f.getfirst('type'):
+    type=f.getfirst('type')
+if f.getfirst('title'):
+    title=f.getfirst('title')
+if f.getfirst('chtxt'):
+    chtxt=f.getfirst('chtxt')
+if f.getfirst('btime'):
+    btime=f.getfirst('btime')
+if f.getfirst('etime'):
+    etime=f.getfirst('etime')
+size=""
+if f.getfirst('size'):
+    size=f.getfirst('size')
+opts=""
+if f.getfirst('opts'):
+    opts=f.getfirst('opts')
+deltahour=""
+if f.getfirst('deltahour',""):
+    deltahour=f.getfirst('deltahour',"")
+deltaday=""
+if f.getfirst('deltaday',""):
+    deltaday=f.getfirst('deltaday',"")
+exect=""
+if f.getfirst('exec',""):
+    exect=f.getfirst('exec',"")
+    
+htmdate= readHtmlSrcSimple()
+htmdate=htmdate.replace("<!--text_for_replace_chtxt_input//-->",getchtxt())
+
+htmdate=htmdate.replace("<!--btime-value//-->",btime)
+htmdate=htmdate.replace("<!--etime-value//-->",etime)
+htmdate=htmdate.replace("<!--type-value//-->",type)
+htmdate=htmdate.replace("<!--ch-value//-->",chtxt)
+htmdate=htmdate.replace("<!--title-value//-->",title)
+htmdate=htmdate.replace("<!--size-value//-->",size)
+htmdate=htmdate.replace("<!--opts-value//-->",opts)
+
+if (chtxt != "")and(title != "")and(btime!="")and(etime!="")and(opts!="")and(exect=="yes"):
+    reserv(type, title, chtxt, btime, etime, deltahour, opts, deltaday)
+    htmdate=readRecFinisSimple()
+    exect=""
+#
+print htmdate
+
+
diff --git a/Rec10WEB/trunk/src/rswi.htm b/Rec10WEB/trunk/src/rswi.htm
new file mode 100644 (file)
index 0000000..adfab2a
--- /dev/null
@@ -0,0 +1,206 @@
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+      <head>
+      <meta http-equive="Content-Type" content="text/html;charset=UTF-8"/>
+   <title>Rec10 Simple Web Interface ver.0.1.2</title>
+      <!-- dojo.jsの読み込み -->
+      <script src="../dojo/dojo.js" djConfig="parseOnLoad: true">
+      </script>
+      <!-- テーマの読み込み -->
+      <style type="text/css">
+        @import "../dojo/resources/dojo.css";
+        @import "../dijit/themes/tundra/tundra.css";
+
+       
+      </style>
+      <script type="text/javascript">
+
+        dojo.require("dojo.parser");
+        // ※ ここで、使用するウィジェットの読み込みを行う
+
+       dojo.require("dijit.form.Button");
+       dojo.require("dijit.form.FilteringSelect");
+       dojo.require("dijit.form.ValidationTextBox");
+       dojo.require("dijit.form.NumberSpinner");
+       dojo.require("dijit.form.CheckBox");
+       dojo.require("dijit.form.Form");
+       function setType(value){
+               if (value=="rec"){
+                       //alert("Selected "+value);
+                       dijit.byId("deltaday").setDisabled(true); 
+                       dijit.byId("deltahour").setDisabled(true);
+               }else if (value=="key"){
+                       //alert("Selected "+value);
+                       dijit.byId("deltaday").setDisabled(true); 
+                       dijit.byId("deltahour").setDisabled(false);
+               }else if (value=="keyevery"){
+                       //alert("Selected "+value);
+                       dijit.byId("deltaday").setDisabled(false); 
+                       dijit.byId("deltahour").setDisabled(false);
+               }else if (value=="res"){
+                       //alert("Selected "+value);
+                       dijit.byId("deltaday").setDisabled(true); 
+                       dijit.byId("deltahour").setDisabled(true);
+               }
+       
+       }
+       function changeSize(){
+               var str=dijit.byId("opts").value;
+               var s=dijit.byId("size").value;
+               str=str.replace("S","");
+               str=str.replace("H","");
+               str=str.replace("F","");
+               str=str.replace("Q","");
+               str=str+s;
+               //alert("Selected "+str);
+               dijit.byId("opts").setValue(str);
+               
+       }
+       function setOpts(obj){
+               if (obj.checked){
+                       var str=dijit.byId("opts").value;
+                       str=str+obj.value;
+               }else{
+                       var str=dijit.byId("opts").value;
+                       str=str.replace(obj.value,"");
+               }
+               dijit.byId("opts").setValue(str);
+       }
+       function changeOpts(){
+               var str=dijit.byId("opts").value;
+               if (str.indexOf("a")>-1){
+                       dijit.byId("anime").setChecked(true);
+               }else{
+                       dijit.byId("anime").setChecked(false);
+               }
+               if (str.indexOf("2")>-1){
+                       dijit.byId("2pass").setChecked(true);
+               }else{
+                       dijit.byId("2pass").setChecked(false);
+               }
+               if (str.indexOf("x")>-1){
+                       dijit.byId("xvid").setChecked(true);
+               }else{
+                       dijit.byId("xvid").setChecked(false);
+               }
+               if (str.indexOf("S")>-1){
+                       dijit.byId("size").setValue("S");
+               }else if (str.indexOf("H")>-1){
+                       dijit.byId("size").setValue("H");
+               }else if (str.indexOf("F")>-1){
+                       dijit.byId("size").setValue("F");
+               }else if (str.indexOf("Q")>-1){
+                       dijit.byId("size").setValue("Q");
+               }
+       }
+       function init(){
+               setType("rec");
+               changeOpts();
+               changeSize();
+               //changeSize();
+       }
+       dojo.addOnLoad(init);
+      </script>
+      </head>
+      <!-- テーマの読み込み -->
+      <body class="tundra">
+       <div dojoType="dijit.form.Form" action="rec10web.py" onExecute="this.submit()">
+       <h1>Rec10 Simple Web Interface ver.0.1.2</h1><br>
+       <select name="type"
+                dojoType="dijit.form.FilteringSelect"
+                autocomplete="false"
+                value="<!--type-value//-->"
+                onChange="setType">
+                <option value="res">通常予約</option>
+                <option value="key">キーワード予約</option>
+                <option value="keyevery">隔日予約</option>
+                <option value="rec">最終予約</option>
+        </select>番組名/キーワード
+       <input type="text" 
+               length="40" 
+               dojoType="dijit.form.TextBox" 
+               value="<!--title-value//-->"    
+               id="title"
+        name="title">チャンネル
+       <select name="chtxt"
+                dojoType="dijit.form.FilteringSelect"
+                autocomplete="false"
+                value="<!--ch-value//-->"
+                onChange="setType">
+                  <!--text_for_replace_chtxt_input//-->
+        </select>
+       <br><br>開始時刻
+       <div name="btime"
+               dojoType="dijit.form.ValidationTextBox"
+               promptmessage="年-月-日 時間:分:秒"
+               value="<!--btime-value//-->"
+               regexp="\d{4}\-\d{2}\-\d{2} \d{2}\:\d{2}\:\d{2}">
+       </div>終了時刻
+       <div name="etime"
+               dojoType="dijit.form.ValidationTextBox"
+               promptmessage="年-月-日 時間:分:秒"
+               value="<!--etime-value//-->"
+               regexp="\d{4}\-\d{2}\-\d{2} \d{2}\:\d{2}\:\d{2}">
+       </div><br>
+       <br>隔日周期(days)
+       <input dojoType="dijit.form.NumberSpinner"
+                value="7"
+                smallDelta="1"
+                 largeDelta="10"
+                constraints="{min:0,max:24,places:0}"
+                maxlength="2"
+                id="deltaday"
+                name="deltaday">
+       キーワード録画許容誤差(hours)
+       <input dojoType="dijit.form.NumberSpinner"
+                value="3"
+                smallDelta="1"
+                 largeDelta="10"
+                constraints="{min:0,max:24,places:0}"
+                maxlength="2"
+                id="deltahour"
+                name="deltahour"><br><br>
+       録画サイズ
+       <select name="size"
+                dojoType="dijit.form.FilteringSelect"
+                autocomplete="false"
+                value="<!--size-value//-->"
+                 id="size"
+                onChange="changeSize">
+               <option selected="selected" value="S">SD画質(720x480)</option>
+              <option value="H">HD画質(1280x720)</option>
+              <option value="Q">WQVG画質(400x240)</option>
+               <option value="F">FULLHD画質(1920x1080)</option>
+       <input type="checkbox" 
+               dojoType="dijit.form.CheckBox" 
+               checked="checked" id="anime" name="anime" value="a"
+               onClick="setOpts(this)">アニメ</input>
+       <input type="checkbox" 
+               dojoType="dijit.form.CheckBox" 
+               id="dualaudio" name="dualaudio" value="d"
+               onClick="setOpts(this)">二ヶ国語放送</input>
+       <input type="checkbox" 
+               dojoType="dijit.form.CheckBox" 
+               id="2pass" name="2pass" value="2"
+               onClick="setOpts(this)">2passモード</input>
+       <input type="checkbox" 
+               dojoType="dijit.form.CheckBox" 
+               id="xvid" name="xvid" value="x"
+               onClick="setOpts(this)">Xvidモード</input>
+        </select>
+       Options
+       <div name="opts"
+               dojoType="dijit.form.ValidationTextBox"
+               value="<!--opts-value//-->"
+               onChange="changeOpts"
+               id="opts">
+       </div><div dojoType="dijit.form.Button" type="submit">予約</div>
+       <div name="exec"
+               dojoType="dijit.form.ValidationTextBox"
+               value="yes"
+               style="display:none";>
+       </div>
+      </body>
+</html>
diff --git a/Rec10WEB/trunk/src/schdule.htm b/Rec10WEB/trunk/src/schdule.htm
new file mode 100644 (file)
index 0000000..9babcbb
--- /dev/null
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+      <head>
+      <meta http-equive="Content-Type" content="text/html;charset=UTF-8"/>
+      <script src="../dojo/dojo.js" djConfig="parseOnLoad: true">
+      </script>
+      <!-- テーマの読み込み -->
+      <style type="text/css">
+        @import "../dojo/resources/dojo.css";
+        @import "../dijit/themes/tundra/tundra.css";
+
+       
+      </style>
+      <script type="text/javascript">
+
+        dojo.require("dojo.parser");
+        // ※ ここで、使用するウィジェットの読み込みを行う
+
+       dojo.require("dojo.data.ItemFileReadStore"); 
+       dojo.require("dojox.grid.Grid"); 
+       dojo.require("dojox.grid.compat._data.model"); 
+       var view = { 
+        
+         // 各セルの設定 
+       cells: [[ 
+               {name: "時間", field: "time"}
+               ],[
+                       {name: "タイトル", field: "ch[0].title"}
+                       
+               ],[
+                       {name: "タイトル", field: "ch[1].title"}
+               ].[
+                       {name: "タイトル", field: "ch[2].title"} 
+         ]] 
+       };       
+       var layout=[view];
+       //dojo.addOnLoad(init);
+      </script>
+      </head>
+      <!-- テーマの読み込み -->
+       <body class="tundra">
+       <div dojoType="dojo.data.ItemFileReadStore"
+               jiId="jsonStore" url="schdule.json">
+       </div>
+       <div dojoType="dojox.grid.data.DojoData" jsId="model"
+               store="jsonStore" rowsPerPage="100">
+       </div>
+       <div id="grid" dojoType="dojox.Grid" model="model" structure="layout">
+       </div>
+</body>
+</html>