したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

【生主ご用達ツール】NicoRequest専用スレ【魔改造・要望大歓迎】

157なまはいさん@お腹いっぱい。:2009/04/28(火) 02:13:53 ID:???
確かジングル再生機能がどこかで入ったと思うけど、いくつかのジングルを登録しておいて、
ランダムに再生する機能・・・とか言ってみるテスト

158150:2009/04/28(火) 07:04:32 ID:sYSq4XTs
>>156

了解しました
では、機能1と2を統合して、既存のリクエストタブの、リクエスト消去方法を、現行の「再生コマンド出力」ではなく、コメントに再生コマンドが発信されたときにすることで、
生主でも視聴者でも同一のリクエストが削除されるようになります。
生主側のリク縛りは、生主も手動削除なので、視聴者も手動でいいと思います。
これでいかがでしょうか?

159w2k:2009/04/28(火) 07:10:42 ID:???
>>150
現状の仕様のニコリクでは、生主のIDを特定する方法が不明なため、
視聴者によるコメなのか生主の再生時のコマンドなのかを判別することができません。
nwhoisではどうやって判別してるんだろう???
これが分かれば再生されたリクを自動で削除できるようになるんですが・・・

というわけで、直接的な解決法ではありませんが、
ttp://www.hal.fscs.jp/nwhois/
と併用するのはどうでしょうか。
こちらでは、枠の当初から全てのコメント・動画IDを拾うことができます。
さらに動画IDについては、再生済みか再生されてないか再生中なのかが人目で見分けられます。

ただ、実際に併用できるかどうかはまだ試していませんが(なら黙っとけとか突っ込まれそうw)

>>157
そのうちその機能を盛り込もうかと思ってましたw
今日にでもとりかかりますw

160150:2009/04/28(火) 07:21:40 ID:sYSq4XTs
動画情報の動画idキャッチの際に、そのidと同一のidがあったらリクエストから削除とか言う方法は不可能でしょうか?

または、
ニコリクのコメントタブで、再生コマンドを所得すると
24 :/play smile:sm2723013 main "【鏡音レン】 ホットココア〜徹夜のうた〜 【オリジナル】"
[〜〜〜〜〜]
このような表記になります
コメントタブに追加されるものから、/play smile:sm  /play smile:nm
の書式のコメントを所得して、sm nmの該当ナンバーを所得して、そこから削除ということは不可能でしょうか?

nwhoisはなぜか私の環境(XP IE8)でセッション同期ができないので、起動できません。
他力本願で申し訳ないのですが、どうかよろしくお願いします

161w2k:2009/04/28(火) 07:28:44 ID:???
>>160
>24 :/play smile:sm2723013 main "【鏡音レン】 ホットココア〜徹夜のうた〜 【オリジナル】"
>[〜〜〜〜〜]
それがもし視聴者のコメントだったら、誤動作を起こすことになります。
手動で生主のIDを設定して〜ということでしたら可能かもしれませんが、
放送主がコロコロ変わるような状態になったら結構面倒だと思われますが、
それでもよければ改造を考えますがいかがでしょう?

162150:2009/04/28(火) 07:34:20 ID:sYSq4XTs
>>160
動画情報タブの再生動画ID所得で、所得したIDとリクエストを照合することは不可能でしょうか?

これが可能なら既存の機能から改造でいけるような気がしなくもないのですが・・・

こちらが不可能なのでしたら、そちらの方法で改造していただけるとうれしいです。
ただ、主が184にするとまるで分からなくなるんですよね・・・

163w2k:2009/04/28(火) 07:45:01 ID:???
>>162
// 接続時に流れている動画を捕捉
のことでしょうか?
しかし、該当する再生コマンドを意図的に誰かにコメントされてしまうと、やはり誤動作する可能性が否定できません。
そんなことする人いるのか?というツッコミがありそうですが、ゼロとは断言できません。
やるとしたら、やはり>>161の方法になるでしょうね。

でもまずは>>157にとりかかりますねw こっちの方が簡単そうだしw

164w2k:2009/04/28(火) 09:12:29 ID:???
ジングルに関して、おそらくこれでいけるかと。

【nicorequest.hta】
・・・
<div id="TabContents">
 <div id="RequestForm">
  <div id="PlayJingleForm"></div>
  <input id="btnPF" type="button" value="4" onclick="playFirst()" title="一番上を再生" style="font-family:marlett;">
・・・
こんな記述に。

【Main.js】

window.attachEvent("onload", function(){
の次の行に

 if(settings["jingles"]){
  document.getElementById("PlayJingleForm").innerHTML = "ジングル ";
  var sel = document.createElement("select");
  sel.setAttribute("id", "jingle");
  for(var i=0,l=settings["jingles"].length;i<l;i++){
   if(settings["jingles"][i]!=""){
    var opt = document.createElement("option");
    opt.appendChild(document.createTextNode(settings["jingles"][i]));
    opt.setAttribute("value", settings["jingles"][i]);
    sel.appendChild(opt);
   }
  }
  document.getElementById("PlayJingleForm").appendChild(sel);
  document.getElementById("PlayJingleForm").innerHTML += ""
   + " を <input type=\"button\" value=\"流す\" onclick=\"playJingle()\" />"
   + " <input type=\"checkbox\" id=\"playJingle_random\"><label for=\"playJingle_random\">ランダム</label><br />";
 }

を追加。さらに下のほうに

function playJingle(){
 if(document.getElementById("playJingle_random").checked){
  var jingles = new Array();
  for(var i=0;i<settings["jingles"].length;i++){
   if(settings["jingles"][i]!="") jingles.push(settings["jingles"][i]);
  }
  var tmp = GetRandom(1, jingles.length);
  NicoLive.postComment(settings["jingles"][tmp]);
 }else{
  NicoLive.postComment(document.getElementById('jingle').value)
 }
}

を追加。(全角スペースはTABなどに置換を推奨)

165w2k:2009/04/28(火) 09:15:55 ID:???
>>164
いい忘れてましたが、settings.jsで
settings["jingles"]=["sm〜", "sm〜"]
などと設定する必要があります。

166w2k:2009/04/28(火) 09:24:52 ID:???
>再生された動画とリクで重複しているものを削除する機能(これは視聴者に便利)
についてですが、

【VideoInformation.js】

function __VideoInformation__receiveComment(Chat){
・・・
  if(document.getElementById(VideoID)) RequestManager.deleteRequestQueueById(VideoID);
 }
}

これでいけました。

残りの機能については、これからやりますね。

167TotsukiGenji:2009/04/28(火) 09:35:25 ID:???
改造を提案されている方がいるので、僕もひとつ。

再生時間でソートする機能を実装しようとしたのですが、
ド素人なもので挫折しましたw簡単に実装できるもので
あれば、とっくに実装されていそうなものなので、難し
いのかもしれませんが、よろしくお願いします。m(_ _)m

168w2k:2009/04/28(火) 12:34:34 ID:???
>機能③
>リクエストタブの、募集可否設定なしで、コメントに落とされたリクエストをすべて拾い続ける
>つまり、すべてのリクエストが記録されているもの

>機能⑤
>再生された動画をリクタブ形式出表示するタブ
>つまり、情報付きの再生履歴ですね。

についてですが、ちょっと難しそうです。
それこそ構造から根本的に変える必要があるかも?

参考:http://d.hatena.ne.jp/ExceptionError/20090121/1232519822#c1233578092

また、
>機能④
>既存の動画情報タブに、リクでの情報も追加したもの
については、ちょっと時間かかりそうですが何とかなるかな?

169なまはいさん@お腹いっぱい。:2009/04/28(火) 12:51:55 ID:???
>>167

【Request.js】

  this.length = "0:00";

の下に

  this.time = 0;

を追加

  this.length = xmldom.getElementsByTagName("length")[0].text;

の下に

  var tmp = this.length.split(":");
  this.time = Number(tmp[0])*60+Number(tmp[1]);

を追加



【Menu.xml】

<popup id="Sort">

の下の適当な位置に

 <item onclick="top.RequestManager.sort('time', 1);">再生時間順(↑)</item>
 <item onclick="top.RequestManager.sort('time', -1);">再生時間順(↓)</item>

を追加。なお、整形のために

 <hr />

を追加してもおk

170w2k:2009/04/28(火) 14:56:06 ID:???
需要がありそうなので、オリジナルNR/NRVAにNG機能を組み込む方法を書いておきいます。

【Main.js】
冒頭に

var NGIDs = new Array();

を入れておく。

下のほうに

function loadNGIDs(){
 try{
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  var file = fso.OpenTextFile("NGIDList.txt");
  while(!file.AtEndOfStream){
   var line = file.ReadLine();
   if(line.match(/([sn]m\d+)/)){
    line.match(/([sn]m\d+)/);//なくてもいいかも?
    NGIDs[RegExp.$1] = true;
   }
  }
  file.Close();
 }catch(e){}
}

を入れる。

window.attachEvent("onload", function(){
以下の部分(loadJASCode();のあたり)に

 loadNGIDs();

を入れる。

あとは、

 if(sms && !(/^\/(play|playsound|swapandplay) smile:/.test(text))){
  if(NGIDs[sms[0]]) {
   NicoLive.postComment(">>"+Chat.no+"さん、その動画は主のNG動画リストに<br />登録済みなので流せないんです、ごめんなさい", "big");
  }else{
   RequestManager.addRequestQueue(new RequestQueue(sms[0], "C", Chat.no));
  }
 }

のような感じで。

// 俺の改造でいきなり入れてたので解説し忘れてた・・・orz

171w2k:2009/04/28(火) 15:04:15 ID:???
それと、別途NGIDList.txtを用意し、
NG扱いとする動画IDを1行に1つの形式で登録しておけば大丈夫かと。

172150:2009/04/28(火) 21:20:45 ID:sYSq4XTs
>>166
ありがとうございます
ただ、もうひとつご教授いただきたいのですが、
これを実装したときに、再生コマンド出力でのリクエスト削除機能を消したいのですが、
どのファイルのどの行をコメントアウトすればいいでしょうか?
また、>>168も了解です。よろしくお願いします

173150:2009/04/28(火) 21:25:58 ID:sYSq4XTs
連投になりますが・・・

リクエスト削除の際に、所得していた動画再生時間を利用して、主側で再生コマンドを実行した際に表示される、
放送残り時間の隣の再生残り時間を発動することは可能でしょうか?

なんか毎回要望追加ばっかりしてすみませんがよろしくお願いします。

174w2k:2009/04/29(水) 12:29:30 ID:???
>>172
再生時にストックから消さずに残しておく、ということでしょうか。
そうなると、再生済みかどうかを示すために何らかのアクションが必要になるかと。
例えば再生ボタンをdisableにするとか、再生済みって表示するようにするとか・・・

>>173
すみません、どういうことなのか把握できませんorz

>機能④
>既存の動画情報タブに、リクでの情報も追加したもの
については、現在試行錯誤中ですが、どうも全ての情報を再収集する形になりそうです。
そのためにfunctionを多数用意することになりそうです。
マジで時間かかりそう・・・誰か代わりにやってちょw

175150:2009/04/29(水) 12:52:26 ID:sYSq4XTs
>>174
>>172について
再生された動画をリクエストから削除する機能をつけたので、
再生ボタンを押したときに削除しなくてもいいなと思って、
再生ボタンを押してもその時点ではリクエストが削除されないようにならないかと思ってのことです。

>>173について
再生中の動画を所得した際に、リクエストを削除する機能をつけました。
ここまでは同じなのですが、

主が再生ボタンを押すと、右上放送残り時間の隣に、再生時間が表示されます
これを再生中の動画からリクエストを削除した再にも動作するようにできないかということです。

視聴者側でも現在の再生時間が分かるようになるので、便利かと思いました。

いかがでしょうか?

大変なようですが、がんばっていただけるとうれしいです。
よろしくお願いします

176トーン:2009/04/29(水) 13:36:03 ID:???
 携帯から割り込み失礼します。

>>175
 再生される動画を再生履歴から削除ではなく、再生扱い(再生ボタンを押した状態)にすればいいような気がします。
 再生中の動画の経過時間を表示できるとともに、再生リストも保存できます。

177wata_z:2009/04/29(水) 13:39:23 ID:???
>>174
>機能4
個人的には一度取得した情報を利用できないのであれば、あまり実装しない方がいいかもと言ってみるテスト
単純に鯖への負荷が倍になるわけですからね

178wata_z:2009/04/29(水) 13:43:47 ID:???
副管理者機能に機能を追加してみた
コメント付加時に主NGするようにした、テスト済み

[Nicorequest.hta]

前回追記した
<input type="checkbox" id="dummyAdminCmdCheck" onclick="dummyAdminCmdChg()"><label for="dummyAdminCmdCheck">コマンドを受け付ける </label>

<input type="checkbox" id="dummyAdminCmdCheck" onclick="dummyAdminCmdChg()"><label for="dummyAdminCmdCheck">コマンドを受け付ける </label><input type="checkbox" id="dummyAdminNGCheck"><label for="dummyAdminNGCheck">同時にNGリストに追加</label>
に変更


[main.js]

function dummyAdminCmtChg()
の中身を以下に変更

if(document.getElementById("dummyAdminCmtCheck").checked){
NicoLive.postComment("ID:" + document.getElementById("dummyAdminID").value + "<br>に主コメント権限を与えました", "big");
if(document.getElementById("dummyAdminNGCheck").checked) NicoLive.postComment("/ngadd ID " + document.getElementById("dummyAdminID").value + " 0 0", "");
}else{
NicoLive.postComment("ID:" + document.getElementById("dummyAdminID").value + "<br>から主コメント権限を奪いました", "big");
if(document.getElementById("dummyAdminNGCheck").checked) NicoLive.postComment("/ngdel ID " + document.getElementById("dummyAdminID").value, "");
}
}

179wata_z:2009/04/29(水) 14:10:11 ID:???
次に同一人物が複数回リクするのを防ぐ機能
値を保持していないのでツールを再起動するとリセットされます。
それにプラス再接続時と募集開始ボタンを押したときにリセットする機能
あと、募集ボタンを使ってない人用に手動のリセットボタンをつけました。
初期値はsetting.jsで変更できるようにしてます。

[NicoRequest.hta]

<div id="divLoginCheck">
または、副管理者機能を追加している人は
<div id="dummyAdmin">
の下に以下を追加

<div id="multiRequest">
<fieldset>
    <legend>多重リクエスト</legend>
    <input type="checkbox" id="multiRequestCheck"><label for="multiRequestCheck">多重リクエストをチェックする</label><br>
     →[適用範囲] <input type="checkbox" id="multiRequestArea1Check"><label for="multiRequestArea1Check">枠単位でリセット</label><input type="checkbox" id="multiRequestArea2Check"><label for="multiRequestArea2Check">募集単位でリセット</label><br>
    <input type="checkbox" id="multiRequestMsgCheck"><label for="multiRequestMsgCheck">多重リクエスト時メッセージを表示する</label><br>
    <input type="button" value="リセット" onclick="userIDsClear()">
</fieldset>
</div>


[main.js]

window.attachEvent("onload", function()
の中の
if(settings["logoffCheck"]) document.getElementById("loginCheck").checked=true;
の下に以下を追加
document.getElementById("multiRequestCheck").checked = settings["MultiRequest"];
document.getElementById("multiRequestArea1Check").checked = settings["MultiRequestArea1"];
document.getElementById("multiRequestArea2Check").checked = settings["MultiRequestArea2"];
document.getElementById("multiRequestMsgCheck").checked = settings["MultiRequestMsg"];

function connect(PS)
の中の
__VideoInformation__onConnect(PS.lv);
の下に以下を追加
if(document.getElementById("multiRequestCheck").checked && document.getElementById("multiRequestArea1Check").checked) userIDsClear();

function receiveComment_Request(Chat)
の中の
RequestManager.addRequestQueue(new RequestQueue(sms[0], "C", Chat.no));
を以下に置き換え
//多重IDチェック
if(document.getElementById("multiRequestCheck").checked){
    for(var i=0,l=UserIDs.length; i<l; i++){
        if (UserIDs[i] == Chat.user_id){
            if(document.getElementById("multiRequestMsgCheck").checked) NicoLive.postComment("多重リクエストの為、除外します > "+Chat.no, "big");
            return;
        }
    }
}
RequestManager.addRequestQueue(new RequestQueue(sms[0], "C", Chat.no));
UserIDs.push(Chat.user_id);

function openRequest()
の中の
if(SocketManager.connected && document.getElementById("extraComment").checked) NicoLive.postComment("募集開始!", "big");
の下に以下を追加
if(document.getElementById("multiRequestCheck").checked && document.getElementById("multiRequestArea2Check").checked) userIDsClear();

180wata_z:2009/04/29(水) 14:10:43 ID:???
main.js内のどこでもいいので、以下を追加

//多重リクエストリスト初期化
function userIDsClear(){
    UserIDs = [];
}


[setting.js]
どこでもいいので、以下を追加

//多重リクエストチェック有効(有効:true 無効:false)
settings["MultiRequest"] = false;
//多重リクエスト 枠単位でリセット(する:true しない:false)
settings["MultiRequestArea1"] = false;
//多重リクエスト 募集単位でリセット(する:true しない:false)
settings["MultiRequestArea2"] = false;
//多重リクエスト メッセージ表示(する:true しない:false)
settings["MultiRequestMsg"] = true;

改造箇所漏れがあったら指摘よろ

181w2k:2009/04/29(水) 14:11:30 ID:???
>>175
>再生された動画をリクエストから削除する機能をつけたので、
>再生ボタンを押したときに削除しなくてもいいなと思って、
>再生ボタンを押してもその時点ではリクエストが削除されないようにならないかと思ってのことです。

Main.jsの

RequestManager.deleteRequestQueueById(id);

をコメントアウトして実際に試してみたところ、問題ないようです。違ってたらごめんなさい。

>主が再生ボタンを押すと、右上放送残り時間の隣に、再生時間が表示されます
>これを再生中の動画からリクエストを削除した再にも動作するようにできないかということです。

なるほど、視聴者側でも動画の進行状態が分かるようにしたい、ということですね。

接続時に流れている動画を捕捉するときに、
//watch.live.nicovideo.jp/api/getplayerstatus?v=lv????
にアクセスしますが、そこから流れてる動画がいつ始まったかを取得すれば何とかなるかな?
一例:
<contents id="main" disableAudio="0" disableVideo="0" start_time="1240980273" duration="131" title="「祝日」(初音ミク)">smile:sm4925029</contents>
であれば、start_timeの値を取得して変換して現在時刻とのタイム差を取得する、みたいなイメージでしょうか。

182wata_z:2009/04/29(水) 14:15:22 ID:???
あと、枠の自動延長機能を作ってたときに気がついた事

30分延長したあとに終了する前に切断し、30分の枠に入り直すと前回の時間を引き継ぐバグ(?)を発見した

回避策として
function connect(PS)
の中の
__VideoInformation__onConnect(PS.lv);
の下に
//残り時間を初期値に戻す
settings["LimitTime"] = 1800;
を追加して動かしてるけど、どうでしょう?

まあ、そんな場合が有るのかという指摘も有りますがw

183wata_z:2009/04/29(水) 14:20:46 ID:???
抜けたた

[main.js]

var DiscFlag;
の下に以下を追加
var UserIDs = new Array(); //ユーザーIDリスト

184150 もとい スライムクライム:2009/04/29(水) 16:13:01 ID:sYSq4XTs
結局また私です

ニコリクw2kばーじょんに導入されている、1度流した動画の一時NG機能ですが、3枠前のやつを自動でそこから削除するように
できないでしょうか?再接続を計算すればできるのではないかとおもうのですが

これがあれば、ニコリク起動しっぱなしで自動的にリク除外管理が本格的にできると思うんです
また、これでの除外は別に自動運営コメができるように・・・なってるかそういえば。

ということで、よろしくお願いします

185noroma:2009/04/29(水) 20:52:08 ID:???
一つ。
再生の累計時間。
あらかじめ5秒とか10秒とか盛り込んでおいた方がいいと思った。
最近、ラグで後ろが切れるってコメをよく見るので、なるべく10秒待つようにしてるんだけど、
5曲あったらそれだけで50秒ずれる罠。

そろそろここにも頭突っ込むかな?

186なまはいさん@お腹いっぱい。:2009/04/29(水) 21:07:37 ID:???
再生時間表示もカウントダウンするタイプもつけて欲しい。
残り時間とリクの残り計算が結構めんどいので。

187トーン:2009/04/30(木) 00:50:25 ID:???
 とりあえず、自分(>>176)の場合で>>175を再現してみます。
 >>166と同じ場所に
function __VideoInformation__receiveComment(Chat){
・・・
  if(document.getElementById(VideoID)) RequestManager.Events['Play'](VideoID);
 }
}

 で大丈夫のはずです。
 リクエストを取得していない場合は全く表示できないのと最初の曲の残り時間だけは取得できないので>>181のアルゴリズムの適用を行う必要がありそうです。

188なまはいさん@お腹いっぱい。:2009/04/30(木) 06:22:26 ID:???
たぶんこの機能がついていないのは、無理だからということなんでしょうが・・・

setingsで、コミュニティIDを先に指定しておくことで、そのコミュニティの生放送が始まったときに
生放送一覧にアクセスしておいて、コミュニティIDで割り出して、自動で接続するようにはできないでしょうか?
また、その際に番組タイトルも拾ってきて、再生履歴・視聴履歴で表示できるようにすると便利になると思うのですが、
または、新しく「情報」タブなんてのを作って、生放送の情報(タイトル・放送者・コミュなど)を表示してもいいんじゃないでしょうか?

ご検討よろしくお願いします

189wata_z:2009/04/30(木) 08:37:34 ID:???
>>188
自動接続は昨日から考案中なのですが、もともとないロジックであるためすぐには出来ないかと

本来はリクエストツールなので、なんでも詰め込みすぎるのも考え物だと思います。
という事で、後半は他の方に任せます
(自分でコミュニティを設定しているのに、その情報を表示する必要が分からない)

190w2k:2009/04/30(木) 13:27:04 ID:???
>機能④
>既存の動画情報タブに、リクでの情報も追加したもの
に対応できたかも・・・

こんな風にしてみました。

【VideoInformation.js】

     "<img src=\"http://niconail.info/&quot;+VideoID+&quot;\" alt=\""+VideoID+" : "+title+"\" width=\"314\" height=\"178\"><br><br>" +



     "<img src=\"http://niconail.info/&quot;+VideoID+&quot;\" alt=\""+VideoID+" : "+title+"\" width=\"314\" height=\"178\"><br>"
    );
    if(!document.getElementById(VideoID)){
     RequestManager.addRequestQueue(new RequestQueue(VideoID, "T", 0));
     setTimeout(function(){
      document.getElementById("VideoInformation").insertAdjacentHTML("BeforeEnd", ""+
       RequestManager.getInfoComment(VideoID) + "<br>" +
       RequestManager.getInfoComment2(VideoID) + "<br>"
      );
      setTimeout(function(){
       RequestManager.deleteRequestQueueById(VideoID);
      },1000);
     },1000);
    }else{
     document.getElementById("VideoInformation").insertAdjacentHTML("BeforeEnd", ""+
      RequestManager.getInfoComment(VideoID) + "<br>" +
      RequestManager.getInfoComment2(VideoID) + "<br>"
     );
     RequestManager.deleteRequestQueueById(VideoID);
    }
    document.getElementById("VideoInformation").insertAdjacentHTML("BeforeEnd", ""+

に差し替え。

注)
Vistaにて検証。ほかの環境でどうなるかは未検証です。
また、行頭の全角スペースはここではTabの代替文字として使ってます。

191スライムクライム:2009/04/30(木) 16:40:22 ID:sYSq4XTs
>>190

改造ありがとうございます。
ところで、書き換え対象の行ですが、最初に
//del
と書かれてコメントアウトされています。
これはどうしたらいいでしょうか?

192スライムクライム:2009/04/30(木) 16:49:15 ID:sYSq4XTs
>>191は自己解決しました

ためしにそのまま起動したところ構文エラーが出たので、削除したところ正常に起動しました。

193スライムクライム:2009/04/30(木) 16:53:19 ID:???
今、VOCALOID生放送に接続していますが、XP IE8の環境で、視聴者接続すると、
NICONAIL.INFOが二つ表示されています。
中身は同じものですので、単純にサーバー負担が2倍になっている気がします。

もし可能なら修正方法をお願いします。

194スライムクライム:2009/04/30(木) 18:31:50 ID:???
>>187が正常に動作しなくなったのでちょっと試行錯誤
動画情報でリクの情報を表示するようにした場合は
     "<img src=\"http://niconail.info/&quot;+VideoID+&quot;\" alt=\""+VideoID+" : "+title+"\" width=\"314\" height=\"178\"><br>"
    );
    if(!document.getElementById(VideoID)){
     RequestManager.addRequestQueue(new RequestQueue(VideoID, "T", 0));
     setTimeout(function(){
      document.getElementById("VideoInformation").insertAdjacentHTML("BeforeEnd", ""+
       RequestManager.getInfoComment(VideoID) + "<br>" +
       RequestManager.getInfoComment2(VideoID) + "<br>"
      );
      setTimeout(function(){
       RequestManager.deleteRequestQueueById(VideoID);
      },1000);
     },1000);
    }else{
     document.getElementById("VideoInformation").insertAdjacentHTML("BeforeEnd", ""+
      RequestManager.getInfoComment(VideoID) + "<br>" +
      RequestManager.getInfoComment2(VideoID) + "<br>"
     );
     RequestManager.deleteRequestQueueById(VideoID);
    }
    document.getElementById("VideoInformation").insertAdjacentHTML("BeforeEnd", ""+



     RequestManager.deleteRequestQueueById(VideoID);
この行を
     (document.getElementById(VideoID)) ;RequestManager.Events['Play'](VideoID);
に入れ替えることで、再生時間表示が行われました。
もしよければどうぞ

195トーン:2009/04/30(木) 20:45:18 ID:???
 >>194について
 先に削除してしまったので、動画情報を読み込めなかったんですね。

 元々if文の部分だったので最初にifをつける必要があるかと思います。
 なので入れ替える行は

     if(document.getElementById(VideoID)) RequestManager.Events['Play'](VideoID);

 になると思います。

196スライムクライム:2009/04/30(木) 21:30:54 ID:???
>>195
動画情報をリク形式で所得するスクリプトは、一度その動画IDを新規リクで追加して、最後に削除する形式を取ってます。たぶん。

だから、確実にその時点でリクエストがあるので、if文どころか、差し替え文が

     RequestManager.Events['Play'](VideoID);

これだけでも動作することを確認しました。
エラーは発生していません。
たぶんこれで大丈夫だと思います。

197w2k:2009/05/01(金) 03:22:46 ID:???
これ、再生履歴と視聴履歴がほぼ同じになってしまいますね。。
あと、途中入場だと正確なデータにならないという欠点が・・・
とりあえず俺としてはこれでもいいや、誰かさらなる改良よろですw

198w2k:2009/05/01(金) 05:01:53 ID:???
実際にテスト枠とってやってみました。
動画が流れている状態で接続したら、動画情報取得と再生がループしました。
あるぇ?どこで間違えたんだろう・・・?

199スライムクライム:2009/05/01(金) 05:57:53 ID:???
>>198

・・・もしや、なんか勘違いしてたかもしれない

視聴者なら、上のスクリプトで大丈夫なのですが、
放送主になると、再生をコマンド出力してしまってループするみたいです。たぶん


放送主か否かを判断するスクリプトか、再生開始時間を所得するアルゴリズムが必要かもしれません。

ところで、niconailはどこをどうすればひとつになりますか?

200なまはいさん@お腹いっぱい。:2009/05/01(金) 06:23:12 ID:???
っと、たぶんこんなことをしようと思うのは私だけなのですが・・・

NGIDLISTを、NGIDLIST1 NGIDLIST2 NGIDLIST3 の要領で3つに分けて、
その上でそれぞれのリク弾きで、別々のコメントを発信したいのですが、
どこをどういじればいいでしょうか?
ご教授お願いします

201w2k:2009/05/01(金) 06:46:12 ID:???
<img src=\"http://niconail.info/&quot;+VideoID+&quot;\" alt=\""+VideoID+" : "+title+"\" width=\"314\" height=\"178\">
がふたつある状態なのでしょうか?
修正箇所を提示する際、NR232を基準にしているので、以前俺がうpしたものをお使いでしたら、

//del "<img src=\"http://niconail.info/&quot;+VideoID+&quot;\" alt=\""+VideoID+" : "+title+"\" width=\"314\" height=\"178\"><br><br>" +
//add start
・・・
//end

の部分を差し替える、と言いたかったんです。
誤解を招く発言だったようで、大変失礼しました。

// ところで、所得ではなく取得では?とつっこんでみるテスツ

202なまはいさん@お腹いっぱい。:2009/05/01(金) 16:06:20 ID:???
ニコリクで自分の必要な機能だけ、あちこちのコミュや某スレをみながら勝手にカスタマイズしていっているのですが
どうしても実装できないものがあって、どこを書き加えたらいいのかわからないので
どなたか教えてください。

①運営コメントをニコリク上でコメできる機能(できれば文字の大きさ、色も設定したい)
どこかのコミュでこの機能がついたのがあったのですが、スクリプトエラーや、使わない機能が結構ありまして・・・
抜粋して使おうとしていろいろ弄ったんですが(コピペする程度ですが)全然反映されなくて・・・。

②ワンクリックで/swap /soundonlyの切り替え(動画の再生中も)

はどのファイルのどこを変えたらいいのでしょうか・・・。
改造版のをそのまま使えばいいのですが、自分には使わない機能などもありまして・・・。
あつかましくてすみません。また既出だったり、場違いなものでしたらスミマセン・・・

203200:2009/05/01(金) 17:07:49 ID:???
>>200の機能をつけて、NGに登録されている理由別に表示されるコメントを変えたいと思っています。
また、ジャスラックコードが必要な動画について、NGIDと同じように、テキストファイルに一覧化しておくことで、
リクエストにコードがなくてもいいようにできるといいと思っています。
ついでに、コードがまったく必要ない動画もそのリストに、00000や何らかの文字列を登録しておくことで区別できるようになると、
さらにいいと思います。

204w2k:2009/05/01(金) 17:41:21 ID:???
>主が再生ボタンを押すと、右上放送残り時間の隣に、再生時間が表示されます
>これを再生中の動画からリクエストを削除した再にも動作するようにできないかということです。
について、
>接続時に流れている動画を捕捉するときに、
>//watch.live.nicovideo.jp/api/getplayerstatus?v=lv????
>にアクセスしますが、そこから流れてる動画がいつ始まったかを取得すれば何とかなるかな?
をちょっと試してみましたが、
>//watch.live.nicovideo.jp/api/getplayerstatus?v=lv????
を一度読み込むと、曲が変われば内容も変わるはずなのに、
なぜか更新された内容を読み込むことができないようで、どうもうまくいかないようです。

とりあえず以下の編集にて、接続したばかりの動画についてはうまくいくようです。

【VideoInformation.js】
・・・
var __VideoInformation__MylistIDs = __VideoInformation__getMylistIDs();
//add start
var __VideoInformation__playStateTimer = 0;
//add end

function __VideoInformation__onConnect(lv){
・・・
    __VideoInformation__receiveComment(new Chat("<chat>/play "+contents[i].text+"</chat>"));
//add start
    // 接続時に流れている動画の進捗状態を表示
    if(__VideoInformation__playStateTimer!=0){
     clearInterval(__VideoInformation__playStateTimer);
     __VideoInformation__playStateTimer = 0;
    }
    var start_time = Number(contents[i].getAttributeNode("start_time").value)-9*60*60;
    var duration = Number(contents[i].getAttributeNode("duration").value);
    __VideoInformation__playStateTimer = setInterval(function(){
     __VideoInformation__showplayState(start_time,duration);
    },500);
//add end
   }
  }
 });
}
//add start
function __VideoInformation__showplayState(start_time,duration){
 var now_time = Math.floor((new Date().getTime()+new Date().getTimezoneOffset()*1000*60)/1000);
 var played_time = now_time-start_time;
 if(played_time < duration){
  document.getElementById("playState").style.cssText = "color:red;";
  var str = convertTimeString(played_time)+"/"+convertTimeString(duration);
 }else{
  document.getElementById("playState").style.cssText = "color:WindowText;";
  var str = "再生終了";
  clearInterval(__VideoInformation__playStateTimer);
  __VideoInformation__playStateTimer = 0;
 }
 document.getElementById("playState").innerHTML = str;
}
//add end

205なまはいさん@お腹いっぱい。:2009/05/01(金) 19:49:09 ID:???
>>204
無茶な挙動を思いついた
再生動画が変更されるたびに、自動再接続すれば、再所得はできるのだろうけど、
かなり無茶ですよね・・・

206wata_z:2009/05/01(金) 21:56:11 ID:???
>>204
自動接続ソフトを作っているときも同じ壁にぶち当たりました。
調べた結果、データを取得するのにGETを使用していますが、一度取得した場合は以降キャッシュから読み込むそうです。
対処法としてはGETをPOSTに変更すればいいとの事。

207wata_z:2009/05/01(金) 23:38:24 ID:???
リクエストツールの自動接続をやってみました。
今回の改造はリクエストには必要でない機能追加である為、あまりお奨めしません。
生放送の一覧を取得している関係上、ニコニコ動画の仕様が変わると使用できない恐れも出てきます。
(最近あったランチャー・アラートの不都合と同じ)
また、リクエストツールを通常モード(制限モードでない)で使えることを前提に改造しています。
導入できない・つながらない・動かなくなった当の苦情は受け付けません。
不都合が出ても自分で対処出来る方限定で導入下さい。

で、今回のソフトは生放送一覧より設定したコミュニティの生放送を見つけると、自動で再接続します。
元々はコミュニティTOPから情報を取っていたのですが、
反映が遅いため生放送一覧から取得するように変更しました。
ただ、結果的にコミュ登録している生放送一覧がヒットしている為、
登録していないコミュニティでは動かない可能性もあります。
(一覧にあるコミュを登録すると接続しましたが、VOCALOID生放送が一覧で出たところを見たことがない為)
あと、取得のタイミングとして、接続中(残り時間>0)の時は一覧取得を行わず、切断された時のみ10秒周期で
生放送の1ページ目(たぶん全カテゴリー)を見に行っています。
そういう意味では、枠が偏ったときに取得できない可能性がありあます。
(コミュ登録していれば上に出るので、問題なし。そういう意味ではコミュ登録が必須?)
それと、既存機能との関係上、自動モード時は強制切断・ダイアログ表示等の設定が出来ません。
手動で接続したい場合はオプションより自動モードをOFFにしてください。

208wata_z:2009/05/01(金) 23:39:53 ID:???
改造案は一部抽象的に書いています。
分かる人だけ改造してね!

[setting.js]

下記を適当に追加する
//自動接続設定(する:true しない:false)
settings["AutoLogin"] = true;
settings["AutoLoginCommID"] = "14007";


[NicoRequest.hta]

<div id="divLoginCheck"> 〜
を以下に変更(枠延長未導入者は2行削除)

<div id="divLoginCheck">
<fieldset>
    <legend>接続/切断</legend>
    <input type="checkbox" id="loginCheck" onclick="checkloginCheck()"><label for="loginCheck">ログオフ時強制ログイン</label>
    <input type="checkbox" id="logoffCheck" checked=true onclick="checklogoffCheck()"><label for="logoffCheck">30分強制ログアウト</label><br>
    <div id="AutoLogin">
    <fieldset>
        <legend>自動接続</legend>
        <input type="checkbox" id="autoConnectCheck" onclick="autoConnectCheck()"><label for="autoConnectCheck">自動接続 → </label>
        コミュニティー:co<input id="autoConnectComm" type="text" value="" size="5" disabled> ニコ生ID:lv<input id="autoConnectlv" type="text" value="" size="6" disabled><input id="autoConnectTemp" type="text" value="" size="1" disabled><br>
    </fieldset>
    </div>
    <input type="checkbox" id="logoffextend"><label for="logoffextend">自動延長</label><br>
    <input type="button" value="1枠延長" onclick="extend()"> <input type="button" onclick="RoomTimeReset()" value="リセット">
</fieldset>
</div>

209wata_z:2009/05/01(金) 23:45:47 ID:???
[main.js]

以下を適当な場所に追加
var PS2;
var ConnectTimer;        //再接続用タイマー

<window.attachEvent("onload", function()>
以下を最初の方に追加
if(settings["AutoLogin"] && settings["AutoLoginCommID"] == "") {
    alert('自動接続先のコミュニティが設定されていません。\setting.jsを編集して、settings["AutoLoginCommID"]のところに名前を入力してください。');
    window.close();
    return;
}

if(settings["logoffCheck"]) document.getElementById("loginCheck").checked=true;
を以下に変更
if(settings["logoffCheck"] && !settings["AutoLogin"]) document.getElementById("loginCheck").checked=true;

以下を適当に追加
if(settings["AutoLogin"]) document.getElementById("logoffCheck").checked=false;
document.getElementById("autoConnectComm").value = settings["AutoLoginCommID"];
document.getElementById("autoConnectTemp").style.display = "none";

210wata_z:2009/05/01(金) 23:48:13 ID:???
以下を適当に追加
//登録コミュニティ再接続
function AutoConnectTimer(){
    var lv;
    var lvNew;
    var server;
    var port;
    var thread;
    var baseTime;

    if(timeLeftTimer == 0){
    NicoLive.getTEXT("http://live.nicovideo.jp/recent?tab=common&amp;p={0}&sort=start,http://live.nicovideo.jp/recent?tab=try&amp;p={0}&sort=start,http://live.nicovideo.jp/recent?tab=live&amp;p={0}&sort=start,http://live.nicovideo.jp/recent?tab=req&amp;p={0}&sort=start,http://live.nicovideo.jp/recent?tab=r18&amp;p={0}&sort=start", function(xmldom){
            //放送ID取得
            rep = new RegExp("<img src=\"http://icon.nicovideo.jp/community/co&quot; + settings["AutoLoginCommID"] + ".+\n.+\n.+\n.+\n.+\n.+\n.+\n.+\n.+\n.+<a href=\"http://live.nicovideo.jp/watch/lv\\d+");
            document.getElementById("autoConnectTemp").value = xmldom.match(rep);
            if (lv != "null") document.getElementById("autoConnectTemp").value = document.getElementById("autoConnectTemp").value.match("\\d+$")
            lv = document.getElementById("autoConnectTemp").value;
            if (lv != "null"){
                //放送あり
                if (document.getElementById("autoConnectlv").value != lv){
                    //切断処理
                    if (document.getElementById("autoConnectlv").value !=""){
                        SocketManager.disconnect();
                        if(timeLeftTimer!=0){
                            clearInterval(timeLeftTimer);
                            timeLeftTimer = 0;
                        }
                    }

                    document.getElementById("autoConnectlv").value = lv;

                    if(settings["EnforceLogin"]){
                        NicoLive.login(settings["Login_Mail"], settings["Login_Pass"]);
                    }
                    NicoLive.getPlayerStatusNoMsg(lv, function(PS2){
                        if (lv != ""){
                            server = PS2.server;
                            port = PS2.port;
                            thread = PS2.thread;
                            baseTime = PS2.baseTime;
                        }
                        if(PS2){
                            PS2 = new PlayerStatus(lv, server, port, thread, baseTime);
                            connect(PS2);
                        }
                    });
                }
            }else{
                document.getElementById("autoConnectlv").value = "未放送"
            }
        });
    }
}

211wata_z:2009/05/01(金) 23:49:55 ID:???
以下を適当に追加
//自動接続モード切替
function autoConnectCheck(){
    if (document.getElementById("autoConnectCheck").checked){
        //自動接続有効
        document.getElementById("loginCheck").checked = false;
        document.getElementById("logoffCheck").checked = false;

        document.getElementById("loginCheck").disabled = true;
        document.getElementById("logoffCheck").disabled = true;

        AutoConnectTimer()
        ConnectTimer = setInterval(AutoConnectTimer, 10000);
    }else{
        //自動接続無効
        document.getElementById("loginCheck").disabled = false;
        document.getElementById("logoffCheck").disabled = false;
        document.getElementById("autoConnectlv").value = "";

        clearInterval(ConnectTimer);
        ConnectTimer = 0;
    }
}

212wata_z:2009/05/01(金) 23:51:59 ID:???
[NicoLive.js]

getXML: function(url, callback)
の下に以下を追加
getTEXT: function(url, callback){
    var xmlhttp = createXMLHttpRequest();
    xmlhttp.onreadystatechange = function(){
        if(xmlhttp.readyState==4){
            clearTimeout(timer);
            callback(xmlhttp.responseTEXT);
        }
    }
    var timer = setTimeout(function(){
        callback();
        xmlhttp.abort();
    }, 5000);
    xmlhttp.open("POST", url, true);
    xmlhttp.send();
},

getPlayerStatus: function(lv, callback, errorAlert)
の下に以下を追加
getPlayerStatusNoMsg: function(lv, callback, errorAlert){
    if(settings["UseIE"]){
        this.getXML("http://watch.live.nicovideo.jp/api/getplayerstatus?v=lv&quot; + lv, function(xmldom){
            if(xmldom){
                if(xmldom.getElementsByTagName("error").length > 0){
                    lv = "";
                    callback();
                }else{
                    callback(new PlayerStatus(lv, xmldom));
                }
            }else{
                callback();
            }
        });
    }else{
        try{
            var WshShell = new ActiveXObject("WScript.Shell");
            WshShell.run("http://watch.live.nicovideo.jp/api/getplayerstatus/lv&quot; + lv);
        }catch(e){
            window.open("http://watch.live.nicovideo.jp/api/getplayerstatus/lv&quot; + lv);
            //alert("NicoLive.js:WshShellの生成に失敗しました")
        }
    }
},

213wata_z:2009/05/01(金) 23:52:41 ID:???
四苦八苦しながらなので、すでにどこをさわったか分からなくなっている状態です
漏れはない・・・はず!

214なまはいさん@お腹いっぱい。:2009/05/02(土) 00:23:39 ID:???
そろそろまとめページでもないと追いつけないかも・・・orz

215なまはいさん@お腹いっぱい。:2009/05/02(土) 01:13:12 ID:???
追いつける人だけがやるべき

216なまはいさん@お腹いっぱい。:2009/05/02(土) 01:56:29 ID:???
補完庫のw2k版動かそうとしたけど、反応が無い・・・
エラー吐くとかどこ見りゃいいんだろ?
取っ掛かりがないと修正も出来ないorz

217なまはいさん@お腹いっぱい。:2009/05/02(土) 09:04:30 ID:???
>>207-213
今導入中です
構文エラーが出たので、文中の一部の , を削除したりして、NICOLIVEはもうエラーが出なくなりました。(動作するかは分かりませんが・・・)

なんかTABの数が合わなかったり、(がひとつだけあまってたりしますが・・・

そして、次の問題です。
ニコリクエスト起動後、自動接続にチェックを入れると、
オブジェクトでサポートされていないプロパティまたはメソッドです
というエラーが表示されます。
指定文字は、
<legend>自動接続</legend>の次の行の一文字目なので(TAB)<legend>自動接続</legend>ここがちょっとエラーになってるのではないかと思います。

下手に私がいじったからなのかもしれませんし、サポートは無いとかかれておりますのでスルーして下さって問題ありませんが、
ご報告まで・・・

環境

w2kバージョンにここまですべての改造を導入
場所はユーザーデスクトップ直下のフォルダ内 
xp ie8

218なまはいさん@お腹いっぱい。:2009/05/02(土) 09:05:55 ID:???
追記です
>>217ですが
チェックをはずしたときにも同一のエラーが出ます

219wata_z:2009/05/02(土) 09:16:47 ID:???
>>217
表示の関係上、行の始まりのTABをすべて全角スペースに置き換えています
全角スペースをTABに変更しても駄目ですか?

220なまはいさん@お腹いっぱい。:2009/05/02(土) 11:39:41 ID:???
>>219
枠まで取ってくださりありがとうございました。

結果ですが、

自動接続にチェックを入れると、NicoRiquest.htaが、
<input type="checkbox" id="autoConnectCheck" onclick="autoConnectCheck()"><label for="autoConnectCheck">自動接続 → </label>
この行で、 オブジェクトでサポートされていないプロパティまたはメソッドです
というエラーを吐いてしまいます。もちろん自動接続は機能しません。

また、左上のメニュー 接続 から接続しようとしても、
空欄の状態でも番号を入力しても、Connect.htaが
// 番組情報を取得
function getPlayerStatus(){
if(settings["EnforceLogin"]){
NicoLive.login(settings["Login_Mail"], settings["Login_Pass"]);
}
var lv = document.getElementById("lv").value = document.getElementById("lv").value.match(/\d+/);
NicoLive.getPlayerStatus(lv, function(PS){   
if(PS){
document.getElementById("server").value = PS.server;
document.getElementById("port").value = PS.port;
document.getElementById("thread").value = PS.thread;
document.getElementById("baseTime").value = PS.baseTime;
setTimeout(OK, 0);
}
});
}


NicoLive.getPlayerStatus(lv, function(PS){   
で オブジェクトでサポートされていないプロパティまたはメソッドです
のえらーが発生します。これも接続できません。
そのため、ニコニコ生放送に接続できなくなってしまいました。

これはどうしたらいいでしょうか?

スクリプトは、NicoLive.js で一部の , に構文エラーが発生しましたので削除したぐらいだったと思います(一部これが指定ではなかったが、これを削除することで構文エラーが消えた)
たしか、}のあとの,の一部がエラーを出していたはずです。
何か解決策が分かる方がいらっしゃいましたらご教授いただけるとうれしいです。

221wata_z:2009/05/02(土) 11:56:01 ID:???
>>220
逆に”,”を勝手に削除している事が原因かと

NicoLive.prototype = {
    initialize: function(){
        略;
    },
    login: function(mail, password){
        略;
    },
    getXML: function(url, callback){
        略;
    },
    getTEXT: function(url, callback){
        略;
    },
    getPlayerStatus: function(lv, callback, errorAlert){
        略;
    },
    getPlayerStatusNoMsg: function(lv, callback, errorAlert){
        略;
    },
    getThumbInfo: function(id, callback){
        略;
    },
    postComment: function(body, mail){
        略;
    }
}

という形になっている事を確認してください

あと、たまーに、エラーを出力し、途中で止まってしまう現象を確認しています。
特に生主の方は導入に注意下さい。

222216:2009/05/02(土) 13:09:18 ID:???
立ち上げようとしても画面も出ません。
タスクマネージャー見ると、なにやら動いてるものがある様子。
どなたかヒント下さいorz

223なまはいさん@お腹いっぱい。:2009/05/02(土) 13:41:04 ID:???
>>215
生主をやる事が敷居の高い事(上から目線)に感じました。

224なまはいさん@お腹いっぱい。:2009/05/02(土) 15:04:30 ID:???
生主やるのにツールはいらぬ
枠を一つ取ればいい

まあ、運転免許か整備士免許みたいなものだ
ツールがあれば楽だけど、今はまだエンジンばらして改造してるとこ
改造が終わってから乗った方が安心できるでしょう
エンジンばらす技術が欲しいというのなら話は別だけど

225なまはいさん@お腹いっぱい。:2009/05/02(土) 15:13:25 ID:???
別に最新のツールをおっていく必要なし。
不都合があって、使いずらいことも。

改造が好きな人がいるんだから、そういう人にまかせるればよし。
放送したいだけなら、改造なしでも十分できますよ。

226なまはいさん@お腹いっぱい。:2009/05/02(土) 15:58:31 ID:???
無事、自動接続をつけることに成功しました。
失敗の原因ですが、なぜかmain.jsの一部が吹っ飛んでいたためでした。

ところで、起動時点で自動接続をオンの状態にしておくにはどこをどうすればいいでしょうか?
また、自動接続を導入したニコリクエストで、どうやっても手動接続ができないのですが、仕様でしょうか?
それとも何かミスっているのでしょうか?
自動接続がオフの状態でもダイアログのokボタンが反応しません。
たぶん何かミスっているのでしょうが、どこなのか分かりません。
もしかしたら、改造部分が足りないかもしれないと一瞬思ったのですが、それはないでしょうし・・・

227なまはいさん@お腹いっぱい。:2009/05/02(土) 16:11:08 ID:???
ないとは思いますが、自動接続をつける際に、connectを改造したりしてないでしょうか?
なければ、わたしのmainがおかしいんでしょう・・・たぶん・・・

228wata_z:2009/05/02(土) 17:07:54 ID:???
>>227
今回の改造は3ファイルだけです。ファイルの更新日付で確認済みです。
w2k版からの改造し直しをお奨めします。



あと、1つ間違い発見(動作にはあまり関係無いかも)

function AutoConnectTimer()
の中の
if (lv != "null") document.getElementById("autoConnectTemp").value = document.getElementById("autoConnectTemp").value.match("\\d+$")

if (document.getElementById("autoConnectTemp").value != "null") document.getElementById("autoConnectTemp").value = document.getElementById("autoConnectTemp").value.match("\\d+$")
に修正

229wata_z:2009/05/02(土) 18:36:30 ID:???
性懲りもなく、また改造。
1ボタンで掲示板のプレイリストスレに書き込めますが、lv番号だけではなく、放送名も追記するようにした。
ただし、上記自動接続導入が前提で自動で接続した時のみ。

[main.js]

先頭に下記を追加
var LiveName;

function connect(PS)
の中の
__VideoInformation__PlayLog += "lv"+PS.lv+"\n";
を下記に変更
if (liveName != ""){
    __VideoInformation__PlayLog += liveName + " lv"+PS.lv+"\n";
}else{
    __VideoInformation__PlayLog += "lv"+PS.lv+"\n";
}

function AutoConnectTimer()
の中の
NicoLive.getTEXT("http://live.nicovideo.jp/recent?tab=common&amp;p={0}&sort=start,http://live.nicovideo.jp/recent?tab=try&amp;p={0}&sort=start,http://live.nicovideo.jp/recent?tab=live&amp;p={0}&sort=start,http://live.nicovideo.jp/recent?tab=req&amp;p={0}&sort=start,http://live.nicovideo.jp/recent?tab=r18&amp;p={0}&sort=start", function(xmldom){
        略
    if (lv != "null"){

NicoLive.getTEXT("http://live.nicovideo.jp/recent?tab=common&amp;p={0}&sort=start,http://live.nicovideo.jp/recent?tab=try&amp;p={0}&sort=start,http://live.nicovideo.jp/recent?tab=live&amp;p={0}&sort=start,http://live.nicovideo.jp/recent?tab=req&amp;p={0}&sort=start,http://live.nicovideo.jp/recent?tab=r18&amp;p={0}&sort=start", function(xmldom){
    //放送ID抽出
    rep = new RegExp("<img src=\"http://icon.nicovideo.jp/community/co&quot; + settings["AutoLoginCommID"] + ".+\n.+\n.+\n.+\n.+\n.+\n.+\n.+\n.+\n.+<a href=\"http://live.nicovideo.jp/watch/lv\\d+");
    document.getElementById("autoConnectTemp").value = xmldom.match(rep);
    if (document.getElementById("autoConnectTemp").value != "null") document.getElementById("autoConnectTemp").value = document.getElementById("autoConnectTemp").value.match("\\d+$")
    lv = document.getElementById("autoConnectTemp").value;

    //放送名抽出
    rep = new RegExp("<img src=\"http://icon.nicovideo.jp/community/co&quot; + settings["AutoLoginCommID"] + ".+\n.+\n.+\n.+\n.+\n.+\n.+\n.+\n.+\n.+<a href=\"http://live.nicovideo.jp/watch/lv.+&quot;);//\\d+");
    document.getElementById("autoConnectTemp").value = xmldom.match(rep);
    if (document.getElementById("autoConnectTemp").value != "null"){
        document.getElementById("autoConnectTemp").value = document.getElementById("autoConnectTemp").value.match("lv\\d+\">.+<wbr />.+</a><br>$");
        liveName = document.getElementById("autoConnectTemp").value.replace("</a><br>","").replace("<wbr />","").replace(/lv.+\">/,"");
    }else{
        liveName = "";
    }

    if (lv != "null"){
に変更


[manu.js]

function connectDialog()
の中の
var _PS = window.showModalDialog("./System/Connect.hta","","status:no;help:no;resizable:yes");
の下に以下を追加
liveName = "";
}

230wata_z:2009/05/02(土) 18:37:44 ID:???
あー、最後の”}”は無視で・・・・

231トーン:2009/05/02(土) 21:20:41 ID:???
 曲の残り時間カウントダウン機能についての原理ですがMain.jsのshowPlayState関数で表示できるようになっています。
 現状ではtimeLeft(現在の再生時刻)/PlayTime(曲全体の再生時間)と表示されるようになっているはずです。
 そこで、曲全体の再生時間から現在の再生時刻を引くようにします。
 (PlayTime-timeLeft)/PlayTimeと表示出来ればいいと思います。
 また、10秒程のラグ用のマージンがあると思います。
 変数でいうとmarginですね。
 再生後、そのままにしておくと残り再生時間がマイナスになり00:0-1といった感じになります。
 こうならないようにするために、if文などで制御する必要があります。
 また、minをからmarginを引かないようにしたほうが、わかりやすいと思います。
 書きなおしたところが多いのでどこを書きなおしたかが分からないので次のレスにて、現在使っている関数ごと載せる事にします。
 また、自分の改造はかなり他の人とは違い、600×450の大きめのサイズになっています。
 スタイルシートなどを変更しないと思った通りに表示できないと思いますので、ご注意ください。

232トーン:2009/05/02(土) 21:23:18 ID:???
 Main.jsのshowPlayState関数を以下のように書き換えました。

function showPlayState(startTime, PlayTime){
  var tagF = "", tagT = "";
  var timeLeft = (new Date().getTime() - startTime) / 1000;
  var Interval = Number(document.getElementById("autoPlayInterval").value);
  var autoPlay = document.getElementById("autoPlay").checked;
  var min = (autoPlay && Interval < PlayTime) ? Interval : PlayTime;
  var Margin=settings["AutoPlayMargin"];
  if(timeLeft>=(min-20)){
    tagF="<font color=red>";
    tagT="</font>";
  }
  // 再生中
  if(min-timeLeft>0){
    document.getElementById("playState").innerHTML = "再生時間 "+tagF+convertTimeString(timeLeft)+"/"+convertTimeString(PlayTime)+tagT + " 残り再生時間 " +tagF+ "+" +convertTimeString(PlayTime-timeLeft)+"/"+convertTimeString(PlayTime)+tagT;
  }else if(min-timeLeft>0-Margin){
    document.getElementById("playState").innerHTML = "再生時間 "+tagF+convertTimeString(timeLeft)+"/"+convertTimeString(PlayTime)+tagT + " 残り再生時間 " +tagF+ "-" +convertTimeString(timeLeft-PlayTime)+"/"+convertTimeString(PlayTime)+tagT;
  // 再生終了
  }else{
    // 自動再生がONでありリクエストキューが0の場合は
    if(autoPlay && RequestManager.RequestQueues.length==0){
      if(document.getElementById("autoPlayStanby").checked){
        document.getElementById("playState").innerHTML = "待機中";
      }else{
        document.getElementById("autoPlay").checked = false;
        checkAutoPlay(false);
      }
      return;
    }
    // 再生情報の停止
    if(playStateTimer!=0){
      clearInterval(playStateTimer);
      playStateTimer = 0;
    }
    // 自動再生がONなら次の動画を再生
    if(autoPlay){
      if(document.getElementById("autoPlayRandom").checked){
        var l = RequestManager.RequestQueues.length;
        var index = GetRandom(0, l-1);
        RequestManager.Events["Play"](RequestManager.RequestQueues[index].id);
      }else{
        clearInterval(playStateTimer);
        playFirst();
      }
    // 自動再生がOFFなら再生終了して待機
    }else{
      document.getElementById("playState").innerHTML = "再生終了";
    }
  }
}

233なまはいさん@お腹いっぱい。:2009/05/03(日) 07:48:02 ID:???
現在要望が出ていて未実装の機能

NGIDLISTの分割+分割されたリストごとに別の運営コメ
視聴者側でもすべての動画の再生時間を表示できるように
再生時間にラグ対策分を追加
JASコードリストの追加

ぐらいでしょうか?抜けてたらすみません。

234なまはいさん@お腹いっぱい。:2009/05/03(日) 07:50:05 ID:???
あ、あと
ワンクリックプレイリスト投稿の、投稿先urlを、プレイリストスレッドの1000到達が近いため、第2スレッドに変更したいのですが、どこを変更すればいいでしょうか?

235noroma:2009/05/03(日) 14:54:33 ID:???
>>234
その機能、使ってないので試せないけど、Export.htaの、

履歴を<select id="atesaki">
<option value="1231411454">初音ミクのライブのプレイリスト</option>
<option value="1235282075">VOCALOID生放送のプレイリスト</option>
</select>に<button id="POST" onclick="postHistory()">投稿する</button><br /></span>

あたりじゃないですかね?

ここ、枠作って入力できるようにするか、setting.jsで設定できるようにした方が良さそうですね。

236noroma:2009/05/03(日) 15:16:33 ID:???
とうとう改造に手を出してしまいました。
w2k版を使おうとしたのですが、どうにもこうにも動作しないため、
オリジナル版に改造を加えるようにしました。

とりあえず、副管理者機能だけを追加したのですが、これって機能を使ってる間、
通常のリクエスト受付されないんですかね?
今朝(というより深夜)テストしてみたら、機能使用中のリクエストを取りこぼしてました。

ソースを見る限り受付されそうな気もしたんで、どこが悪いのかよくわかりません。
今のところこういう使い方はあまり例がないので、問題にはなりにくいですが、確認願えますか?

237noroma:2009/05/03(日) 15:57:06 ID:???
>>236
リク受け付けできないのはそういう仕様だったそうで。
現時点では問題ないですね。

238wata_z:2009/05/03(日) 17:25:02 ID:???
>>236

>>64
>普段のリク取得と副管理者機能の関係ですが、コマンド・コメント両方チェックがついていない場合のみ指定したID
>の人からもリクエストを受け付けるようになっています。
としてます。
なぜかというと、例えばAさんに副管理者機能を設定し、Aさんがsm9と入力したとします。
そうすると、sm9を再生しつつ、リクエストを受け付けてしまう現象になると分かったため、上記のような制約にしています。

そういう意味では、主コメントのみOKの場合は、リクエストを受け付けるようにしても良いかもしれません。
その場合は、

[main.js]

function receiveComment_Request(Chat)
の中の
if (!(document.getElementById("dummyAdminCmdCheck").checked)
    && !(document.getElementById("dummyAdminCmtCheck").checked)){

if (!(document.getElementById("dummyAdminCmdCheck").checked)){
とすればOKかと思います。


ちなみに、副管理者機能を単独で入れる場合は、>>69>>97の修正をしておいた方がいいと思います。

239スライムクライム:2009/05/03(日) 20:14:24 ID:???
要望を少し

ソートのリクエストナンバー順ですが、
リクエストの追加方式別になるようにお願いできませんか?
一緒くたになってしまって分からないので。
また、ソートに登録日時順というのを追加できないでしょうか?

240noroma:2009/05/03(日) 22:51:36 ID:???
>>238
どうもです。
その文は読んでたんですが、それって副管理者機能を設定してないって意味かと思ってスルーしてました。

修正例、了解です。
そういう意味合いなら理解できました。
タグの修正は、あってもなくてもいいと思ったのでまだ入れてませんが、あとから入れときますね。

連続コメント機能もいれようかな?

241w2k:2009/05/04(月) 03:53:25 ID:???
>>233
まとめありがとうございます。
まだ手元であれこれいじってる段階なので、状況説明だけしておきます。

>NGIDLISTの分割+分割されたリストごとに別の運営コメ

動画ごとに別の運営コメで対応できるようになりました。

>視聴者側でもすべての動画の再生時間を表示できるように

>>204を応用して入れてみたんですが、
再生コマンドを実行した時間とはどうも合ってないようで、
数秒ラグがあるのが気になってます。

>再生時間にラグ対策分を追加
>JASコードリストの追加

については、まだ手をつけてません。
それ以前に、再生・視聴履歴をファイルへ保存する際に
エラーが出ることがある件への対応をどうしようか悩み中です。
いっそこの機能は消してしまおうかな・・・orz

242w2k:2009/05/04(月) 06:51:29 ID:???
現状で俺がまともに使えてるものをうpしてみました。
http://www1.axfc.net/uploader/He/so/223360&amp;key=miku
人柱用ということでよろしくです。

243w2k:2009/05/04(月) 06:53:12 ID:???
なお、ファイル書き込み時にエラーが出る件については、
var of = fs.OpenTextFile(logfile,8,true,-2)

var of = fs.OpenTextFile(logfile,8,true,-1)
に変更することで回避できたようです。

244w2k:2009/05/04(月) 06:56:21 ID:???
忘れてた、該当ファイルはUtils.jsです

245w2k:2009/05/04(月) 15:25:28 ID:???
>>207以降の分を入れてみました。
なんだこれwwうめぇwww

で、たまに出るエラーの原因ですが、
>rep = new RegExp("<img src=\"http://icon.nicovideo.jp/community/co&quot; + settings["AutoLoginCommID"] + ".+\n.+\n.+\n.+\n.+\n.+\n.+\n.+\n.+\n.+<a href=\"http://live.nicovideo.jp/watch/lv\\d+");
>document.getElementById("autoConnectTemp").value = xmldom.match(rep);
でこける場合にエラーとなるような気がします。

246なまはいさん@お腹いっぱい。:2009/05/04(月) 17:52:57 ID:???
ひとつ要望を・・・
放送番組の残り時間が0以下=放送終了のとき、自動再生を停止するようにできないでしょうか?
自動再生を切り忘れるとむごいことになるので・・・

247noroma:2009/05/04(月) 20:16:52 ID:???
>>242
やっぱり動きませんでした。
んで、試しに初代さんの連続コメント機能を入れてみたのですが、やっぱり動きません。
どうやら当方の環境に問題がありそうな気がして来ました。
ひとまず、副管理者機能までは対応できたので、これで行きます。

w2k再インストールしようかな・・・。

248なまはいさん@お腹いっぱい。:2009/05/04(月) 20:18:07 ID:???
w2kさんを再インストール、いいかもしんない。

249wata_z:2009/05/04(月) 21:21:20 ID:???
>>245
先ほど出たので、エラーの出た行番号を見ると
server = PS2.server;
で異常が出ているようです。
って事で、根本的な解決にはなりませんが・・・
try{
    server = PS2.server;
    port = PS2.port;
    thread = PS2.thread;
    baseTime = PS2.baseTime;
}catch( e ){
    document.getElementById("autoConnectlv").value = "未放送";
    return;
}

現在これで様子見しています。

250チラシの裏:2009/05/05(火) 07:21:39 ID:???
自分で追加した、ボカロ向け例外Pネームをなんとなく投入

"ボッチ", "Studio_IIG", "クリーム市長", "Rin(ぎん)", "チータン", "あつぞうくん", "arata", "miksolodyne-ts", "えこ。", "microgroover", "o.ken", "P∴Rhythmatiq", "卯月めい", "堤逢叶", "en"

251w2k:2009/05/05(火) 08:01:00 ID:???
>>246
Main.jsの
function showPlayState(〜){
以下の
  if(autoPlay){

  if(autoPlay && document.getElementById("timeleft").innerHTML== "放送終了"){
にするといいかも?(未確認です)

>>247
むう・・・
とりあえずまっさらなWin2000環境を用意して確認してみますね。
// 環境構築までが長いけど仕方ないね・・・

>>248
ちょwww

>>249
あるぇ?俺が勘違いしてたのかも・・・
とりあえず俺もそれ試してみますね。

>>250
ありがたや〜 こちらでもさっそく追加してみますね。

252管理人:2009/05/05(火) 09:27:45 ID:???
ちょっと質問なのですが、ツールでプレイリスト自動書き込みしている方いらっしゃいますか?
既に削除済みですが、
http://jbbs.livedoor.jp/bbs/read.cgi/internet/2353/1231367625/43
という事がありました。
もし自動書き込みや別途ツールをご利用されてる方がいらっしゃいましたら、
対象スレッドを間違えてないかなど、一度ご確認くださいますようお願いいたします。

253wata_z:2009/05/05(火) 09:37:07 ID:???
>>252
私の場合はVOCALOID生放送でしか生主しないので、初音ミクノライブの方は削除しています
どちらでもやる場合は、どちらで生主するのが多いかを見極め、順番を入れ替えてみるのも手かと

254wata_z:2009/05/05(火) 09:49:36 ID:???
放送中にどなたかが言ってましたが、
皆で使う共通のツールテストコミュがほしいなと私も思ってました。

普段は自分用のテストコミュにて2PCで確認しているのですが、
他の方に見てもらいたいときは、コミュが非公開な為、放送を公開する必要があり
関係ない人も入ってくる可能性があります。

どなたかコミュを作り、テストしたい人はそこでやれば、普段ツール改造している人が放送しているのも分かるし
改造している物同士、話しながらテストが出来ると思うのですが、どうでしょうか?
個人的な希望としては精力的に改造されているw2kさんが適任だと思います。

255w2k:2009/05/05(火) 10:04:40 ID:???
>>252
まさかこのような事態が起こるとは、想像もしていませんでした。
その機能を搭載した者として、責任を感じざるを得ません。
あまりこういうのが続くようであれば、この機能を削除することも検討します。
とりあえず今のところは様子見ということで・・・

>>254
他に希望者がいなければ、自分がやってもいいかな、とは思ってます。

256管理人:2009/05/05(火) 10:25:49 ID:???
>>253
ん?順番とかの問題なの?
最近ツールいじってないから良く判んないや…


>>254
具体的に何がしたいのかよく判らんのですけど、正式に出来るまで時間かかりそうならco5056使っても良いすよ。
コミュ主含め数字入ってるアカウント3つが私ので、rocazというアカウントはとあるツール作者さんのアカウントです。
当分はオープン&自動承認&全メンバー動画投稿可のままにしておくので、使えるようならどうぞ。

リンク:http://ch.nicovideo.jp/community/co5056


>>255
ツールで書いたものかは判りませんので、あくまでも「そういう可能性もあるかな」程度に捉えておいてください。
時間帯的には「単に寝ぼけて削除依頼出すのも忘れてた」とかいうケースも十分にあり得ます。

>>252もこの機能を責めるつもりでなく、こういう事もあるかもしれないので注意してみてください、というつもりでの書き込みなので、
もし何らかの対応を検討されてるのでしたら、削除よりも確認しやすい方向への修正、例えば

・ツール上で書き込むスレッドをプルダウンで選択
・書き込む前に確認メッセージ表示

なども検討対象にしていただけると、利用者の方的にも助かるのではないかと思います。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板