futaba log search

img,dat,may,junのスレが消えた時に過去ログを表示しちゃう

当前为 2015-10-28 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name futaba log search
  3. // @namespace https://github.com/himuro-majika
  4. // @description img,dat,may,junのスレが消えた時に過去ログを表示しちゃう
  5. // @include http://img.2chan.net/b/res/*.htm
  6. // @include http://dat.2chan.net/b/res/*.htm
  7. // @include http://may.2chan.net/b/res/*.htm
  8. // @include http://jun.2chan.net/b/res/*.htm
  9. // @require http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js
  10. // @grant GM_xmlhttpRequest
  11. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAPUExURYv4i2PQYy2aLUe0R////zorx9oAAAAFdFJOU/////8A+7YOUwAAAElJREFUeNqUj1EOwDAIQoHn/c88bX+2fq0kRsAoUXVAfwzCttWsDWzw0kNVWd2tZ5K9gqmMZB8libt4pSg6YlO3RnTzyxePAAMAzqMDgTX8hYYAAAAASUVORK5CYII=
  12. // @version 0.0.1.20151028091150
  13. // ==/UserScript==
  14. this.$ = this.jQuery = jQuery.noConflict(true);
  15.  
  16. (function ($) {
  17. var waitnum = 10; //404時のページ遷移ウェイト[秒]
  18.  
  19. var title = document.title; //ページタイトル
  20.  
  21. //パターン:http://dat.2chan.net/b/res/11111111.htm
  22. var $S = document.domain.match(/^[^.]+/); //鯖名(dat)
  23. var $F = location.pathname.match(/\d+\.htm/); //ファイル名(11111111.htm)
  24. var $D = $F[0].match(/\d+/); //ファイル名の数字(11111111)
  25.  
  26. //ログ保管サービスジャンプ先URL
  27. var logService = {
  28. img: [
  29. {
  30. site: "logbox",
  31. url: "http://parupunte.net/logbox/detail.html?no=" + $D,
  32. },
  33. {
  34. site: "ふたろぐばこ",
  35. url: "http://imgbako.com/" + $F,
  36. },
  37. {
  38. site: "ぽかん庫",
  39. url: "http://u.magipoka.net/res/" + $F,
  40. },
  41. {
  42. site: "iFutaba",
  43. url: "http://ifutaba.net/" + $S + "/" + $F,
  44. },
  45. {
  46. site: "FTBucket",
  47. url: "http://www.ftbucket.info/" + $S + "/cont/" + $S + ".2chan.net_b_res_" + $D + "/index.htm",
  48. },
  49. ],
  50. dat: [
  51. {
  52. site: "リッチー",
  53. url: "http://appsweets.net/tatelog/dat/thread/" + $D,
  54. },
  55. {
  56. site: "iFutaba",
  57. url: "http://ifutaba.net/" + $S + "/" + $F,
  58. },
  59. ],
  60. may: [
  61. {
  62. site: "ふたろぐばこ",
  63. url: "http://futalog.com/" + $F,
  64. },
  65. {
  66. site: "iFutaba",
  67. url: "http://ifutaba.net/" + $S + "/" + $F,
  68. },
  69. {
  70. site: "FTBucket",
  71. url: "http://www.ftbucket.info/" + $S + "/cont/" + $S + ".2chan.net_b_res_" + $D + "/index.htm",
  72. },
  73. ],
  74. jun: [
  75. {
  76. site: "ふたばログギャラリー",
  77. url: "http://kmlg.jp/logview/kmlg.jp/archive/jun_b/" + $F + "/index.htm",
  78. },
  79. {
  80. site: "iFutaba",
  81. url: "http://ifutaba.net/" + $S + "/" + $F,
  82. },
  83. {
  84. site: "FTBucket",
  85. url: "http://www.ftbucket.info/" + $S + "/cont/" + $S + ".2chan.net_b_res_" + $D + "/index.htm",
  86. },
  87. ]
  88. };
  89. //鯖毎の振り分け
  90. var logService_server = logService[$S];
  91.  
  92. //通常時
  93. if (title !== "404 File Not Found") {
  94. makelogsitebutton();
  95. }
  96. //404時
  97. else {
  98. var $h1 = $("body > h1");
  99. $h1.before("<div><span id='countdown'>" + waitnum + "</span>秒後に外部ログサイト(" + logService_server[0].site + ")に移動します</div>");
  100. $h1.before("<div>ログサイトリスト :</div>");
  101. $h1.before("<ul id='loglist'></ul>");
  102. var $li = $("#loglist");
  103. logService_server.forEach(function(item) {
  104. $li.append("<li><a href='" + item.url + "' target='_blank' rel=noreferrer>" + item.site + "*</a></li>");
  105. });
  106. satty();
  107. msmht();
  108. setTimeout(redirect, waitnum * 1000);
  109. setInterval(countdown, 1000);
  110. }
  111.  
  112. function makelogsitebutton() {
  113. var toggle_flag = true;
  114. var $logsitelink = $("<a>", {
  115. id: "futaba_log_search_loglist_button",
  116. text: "[外部ログサイト]",
  117. css: {
  118. cursor: "pointer",
  119. },
  120. click: function() {
  121. showlogsitelist();
  122. }
  123. });
  124. $("body > table").before($logsitelink);
  125.  
  126. function showlogsitelist() {
  127. if(toggle_flag) {
  128. $("#futaba_log_search_loglist_button").after($("<ul id='loglist'>"));
  129. var $li = $("#loglist");
  130. logService_server.forEach(function(item) {
  131. $li.append("<li><a href='" + item.url + "' target='_blank' rel=noreferrer>" + item.site + "*</a></li>");
  132. });
  133. toggle_flag = false;
  134. }
  135. else {
  136. $("#loglist").remove();
  137. toggle_flag = true;
  138. }
  139. }
  140. }
  141.  
  142.  
  143. /*
  144. * ログ保管先にジャンプ
  145. */
  146. function redirect() {
  147. location.href = logService_server[0].url;
  148. }
  149.  
  150. function countdown() {
  151. if(waitnum > 0){
  152. waitnum--;
  153. }
  154. $("#countdown").text(waitnum);
  155. }
  156.  
  157. /*
  158. * サッチーのログを検索
  159. */
  160. function satty(){
  161. var url_prefix = "http://tsumanne.net";
  162. var url_ss;
  163. var url_cgi = "indexes.php?format=json&sbmt=URL&w=";
  164. if ($S == "img") {
  165. url_ss = "/si/";
  166. }
  167. else if ($S == "dat") {
  168. url_ss = "/sa/";
  169. }
  170. else {
  171. return;
  172. }
  173. var url_req = url_prefix + url_ss + url_cgi + $D;
  174. GM_xmlhttpRequest({
  175. method: "GET",
  176. url: url_req,
  177. onload: function(response) {
  178. var res = JSON.parse(response.responseText);
  179. if (res.success) {
  180. $li.append("<li><a href='" + url_prefix + res.path + "' target='_blank'>「」ッチー*</a></li>");
  181. }
  182. }
  183. });
  184. }
  185. function msmht() {
  186. var url_prefix = "http://kokoromati.orz.hm/mm/view";
  187. var url_ss;
  188. var url_cgi = "catalog";
  189. if ($S == "may") {
  190. url_ss = "/11/";
  191. }
  192. else if ($S == "img") {
  193. url_ss = "/14/";
  194. }
  195. else if ($S == "dat") {
  196. url_ss = "/15/";
  197. }
  198. else {
  199. return;
  200. }
  201. var url_req = url_prefix + url_ss + url_cgi ;
  202. GM_xmlhttpRequest({
  203. method: "POST",
  204. url: url_req,
  205. data: "filter=%24mht_name%3D%3D%22" + $S + ".b." + $D + ".mht%22",
  206. headers: {
  207. "Content-Type": "application/x-www-form-urlencoded"
  208. },
  209. onload: function(response) {
  210. var exp = new RegExp(/<td class="td03"><a href="\/mm\/view(\/mht\/\d+)" target="_blank">/);
  211. var path = response.responseText.match(exp);
  212. if( path ){
  213. $li.append("<li><a href='" + url_prefix + path[1] + "' target='_blank'>Ms.MHT*</a></li>");
  214. }
  215. }
  216. });
  217.  
  218. }
  219. })(jQuery);