futaba log search

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

当前为 2017-11-14 提交的版本,查看 最新版本

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