Advertisement
Guest User

ThreadAbone.js

a guest
May 26th, 2014
302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //
  2. // JaneXeno用クソbeが立てたスレを一括スレッドあぼ~んするコマンド
  3. // 【使い方】
  4. //  ThreadAbon.js をどこかに保存(x:\somewhere\ThreadAbon.js)
  5. //  command.dat に以下を追加
  6. //  このbeが立てたスレをあぼ~ん=wscript x:\somewhere\ThreAdabon.js "$LOCALDAT"
  7. //  クソbeが立てたスレを開き右クリック→このbeが立てたすれをあぼ~ん を選択
  8. //
  9.  
  10. var ForReading = 1;
  11. var ForWriting = 2;
  12. var ForAppending = 8;
  13.  
  14. var abonmode = 2;
  15. var wsh = WScript.CreateObject("WScript.Shell");
  16. var fso = new ActiveXObject("Scripting.FileSystemObject");
  17.  
  18. var datfile = WScript.Arguments(0);
  19. if(datfile.match(/.*\\(.+?)\\\d{10}\.dat/))
  20. {
  21.     switch(RegExp.$1)
  22.     {
  23.         case "ニュース速報":
  24.             board = "news";
  25.             break;
  26.         case "ニュー速(嫌儲)":
  27.             board = "poverty";
  28.             break;
  29.         default:
  30.             wsh.Popup("対象外の板です", -1, "", 48);
  31.             WScript.Quit();
  32.     }
  33. }
  34. else
  35. {
  36.     wsh.Popup("datの指定がオカシイ", -1, "", 48);
  37.     WScript.Quit();
  38. }
  39.  
  40. //
  41. //既存のNGスレッドを読み込み
  42. //
  43. var abnfile = fso.BuildPath(fso.GetParentFolderName(datfile), "subject.abn");
  44. var st_abn = fso.OpenTextFile(abnfile, ForReading,true);
  45. var NGThreads = new Array();
  46. while (st_abn.AtEndOfLine==false)
  47. {
  48.    strText = st_abn.ReadLine();
  49.    if(strText.match(/(\d{10})=(\d) (.+)/))
  50.    {
  51.        NGThreads[RegExp.$1] = RegExp.$3;
  52.     }
  53. }
  54. st_abn.Close();
  55.  
  56.  
  57.  
  58. //
  59. // Subject.txtからスレ一覧を取得
  60. //
  61. var subjecttxt = fso.BuildPath(fso.GetParentFolderName(datfile), "subject.txt");
  62. var st_subject = fso.OpenTextFile(subjecttxt, ForReading);
  63. var subjectlist = new Array();
  64.  
  65. while (st_subject.AtEndOfLine==false)
  66. {
  67.    strText = st_subject.ReadLine();
  68.    if(strText.match(/(\d+?)\.dat<>(.+)/))
  69.    {
  70.        subjectlist[RegExp.$1] = RegExp.$2;
  71.    }
  72. }
  73. st_subject.Close();
  74.  
  75.    
  76.  
  77. //
  78. //datの>>1からBE IDを取得
  79. //
  80. var st_dat = fso.OpenTextFile(datfile, ForReading, false);
  81. var ichi =  st_dat.ReadLine();
  82. st_dat.Close();
  83. //WScript.Echo(ichi);
  84. if(!ichi.match(/.*? BE:(\d+?)-.*<>/))
  85. {
  86.     WScript.Echo();
  87.     wsh.Popup("BE IDの取得に失敗しました", -1, "", 48);
  88.     WScript.Quit();
  89. }
  90.  
  91.  
  92. //
  93. // BEストーカーからこのBEが立てたスレのリストを取得
  94. //
  95. var url = "http://kiki.mods.jp/be/stalker/"+ RegExp.$1 +"/"+board+"/";
  96. //wsh.Run(url);
  97. var html = "";
  98. var req = new ActiveXObject("Microsoft.XMLHTTP");
  99. req.open('GET', url, false);
  100. req.onreadystatechange = function (aEvt)
  101. {
  102.     if (req.readyState == 4)
  103.     {
  104.         if(req.status == 200)
  105.         {
  106.             html = req.responseText;
  107.             //WScript.Echo(req.responseText);
  108.         }
  109.         else
  110.         {
  111.             WScript.Echo("Error loading page\n");
  112.             WScript.Quit();
  113.         }
  114.     }
  115. };
  116. req.send(null);
  117. var abonstr = "";
  118. var newNGThreads = new Array();
  119. while(html.match(/ {36}(.+?)\r?\n {20}<a href=".+?" target="_blank" title="みみずん過去ログ"><img src="\/be\/images\/mimizun.com.png" alt="みみずん" width="16" height="16"><\/a>\r?\n {20}<a href=".+?" target="_blank" title="unkar過去ログ"><img src="\/be\/images\/unkar.org.png" alt="unkar" width="16" height="16"><\/a>\r?\n {20}<br>\r?\n {20}<a href=".+?" target="_blank">http:\/\/[^\/\.]+?.2ch.net\/test\/read.cgi\/[^\/]+?\/(\d{10})\/<\/a><br>/))
  120. {
  121.     //WScript.Echo(RegExp.$2 + ": " + RegExp.$1 +"\n"+NGThreads[RegExp.$2]+"\n"+subjectlist[RegExp.$2]);
  122.     if(!NGThreads[RegExp.$2]&& subjectlist[RegExp.$2])
  123.     {
  124.         // "~"文字がおかしいので置換しておく
  125.         newNGThreads[RegExp.$2] = RegExp.$1.split(String.fromCharCode(0x301c)).join("~");
  126.         abonstr += RegExp.$2 + ": " + RegExp.$1 + "\n";
  127.         //WScript.Echo("Found " + RegExp.$2 +" "+ newNGThreads[RegExp.$2]);
  128.     }
  129.     html = RegExp.rightContext;
  130. }
  131.  
  132. if (abonstr == "")
  133. {
  134.     wsh.Popup("新着スレッドはありません", -1, "", 64);
  135.     WScript.Quit();
  136. }
  137. if(wsh.Popup(abonstr + "\n以上をスレッドあぼ~んしますか?", -1, "", 4 | 32) != 6)
  138.     WScript.Quit();
  139.  
  140. st_abn = fso.OpenTextFile(abnfile, ForAppending, true);
  141. for(key in newNGThreads)
  142. {
  143.     //WScript.Echo("Found " + newNGThreads[RegExp.$1]);
  144.     try
  145.     {
  146.         st_abn.WriteLine(key+"="+abonmode+" "+ newNGThreads[key]);
  147.     }
  148.     catch (e)
  149.     {
  150.         wsh.Popup(key+"="+abonmode+" "+ newNGThreads[key] + "を追加する際にエラーが起きました", -1, "", 48);
  151.         var str = "";
  152.         for(i=0; i< newNGThreads[key].length; i++)
  153.         {
  154.             str +=" "+ newNGThreads[key].charCodeAt(i);
  155.         }
  156.         WScript.Echo(str);
  157.     }
  158. }
  159. st_abn.Close();
  160.  
  161.  
  162. //
  163. // スレ欄(L)→ボードデータを再構成(R)アクセラレータキーを送信
  164. //
  165. wsh.SendKeys("%LR");
  166. WScript.Echo("(・∀・)カンリョウ!! ");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement