a値確認&編集更新スクリプト
by
onjs
2021-03-08 [2021/03/08 16:08:06]
my bookmarklet
@@ -1,90 +1,38 @@
-/*
- * @title a値確認&編集更新スクリプト
- * @description my bookmarklet
- * @include https:*.open2ch.net*
- * @license MIT License
- * @require
- */
-
-/*
-cookieはopen2ch内ではどこでも(hayabusa,uniなど)同じ。
-httpsではなくhttpでなければ使えないので注意。
-http://hayabusa.open2ch.net/livejupiter/
-*/
-
-var firstLoadFlag = true
-
-/*
-こっから丸ごとコピペしてきました。
-https://javascript.programmer-reference.com/js-check-hankaku-eisu/
-*/
-function IsHanEisu(str){
- str = (str==null)?"":str;
- if(str.match(/^[A-Za-z0-9]*$/)){
- return true;
- }else{
- return false;
- }
+//"document" requires the url which ends with ".dat" extension in the domain of "open2ch.net"
+//Use this code only under JavaScript Console!!(i recommend Google Chrome because i only use it with test)
+var d = document.getElementsByTagName("pre")[0].textContent;
+var ds = d.split("\n");
+
+var koteAll = ds.map(function(elm){ return elm.split("<>")[0]} )
+.filter(function(elm){ return (/.+◆/).test(elm)} )
+.map(function(elm){ return elm.replace(/<.?b>/g,"").replace(">",">","g").replace(/忍法帖【.*】/g,"")} )
+.sort();
+
+var koteUniq = koteAll.filter(function (x, i, self) { return self.indexOf(x) === i;});
+
+
+var res = koteUniq.map(
+function(elmU){
+return (koteAll.filter(function(elmA){
+return elmA == elmU;}));
}
+);
+var sorted = res.sort(function(a,b){
+return b.length - a.length ;
+});
-function GetCookie(key) {
- // Cookieから値を取得する
- var cookieString = document.cookie;
-
- // 要素ごとに ";" で区切られているので、";" で切り出しを行う
- var cookieKeyArray = cookieString.split(";");
-
- // 要素分ループを行う
- for (var i=0; i<cookieKeyArray.length; i++) {
- var targetCookie = cookieKeyArray[i];
-
- // 前後のスペースをカットする
- targetCookie = targetCookie.replace(/^\s+|\s+$/g, "");
-
- var valueIndex = targetCookie.indexOf("=");
- if (targetCookie.substring(0, valueIndex) == key) {
- // キーが引数と一致した場合、値を返す
- return unescape(targetCookie.slice(valueIndex + 1));
- }
- }
- return "";
-}
+var output_names = sorted.map(function(elm){return elm[0]});
+var output_values = sorted.map(function(elm){return elm.length});
-function aValue_UPD(){
- console.log()
+var output = [];//output[0]←コテハンの名前, output[1]←各コテハンのレス数
+output.push(output_names);
+output.push(output_values);
-var aValue = document.getElementById("aValue_txtArea").value
-var aValue_checkLen = aValue.length
-var aValue_checkWord = IsHanEisu(aValue)
-if (aValue_checkLen != 32) {alert('32桁入力してください。\n現在の桁数:'+ aValue_checkLen);return}
-if (IsHanEisu(aValue) != true) {alert('半角英数字しか利用できません。');return}
-document.cookie= 'a=' + aValue + ';expires=' + new Date('2030/12/31 23:59').toUTCString() +';path=/;domain=open2ch.net';
-alert('書き換え完了。')
+//結果書き込み
+for(var i = 0; i < output[0].length; i++){
+document.write(output[0][i] + "," + output[1][i] + "<br>");
}
-
-
-(window.onload = function() {
- if (firstLoadFlag == true) {
- firstLoadFlag = false
- var div_element = document.createElement("div");
- var parent_object
- div_element.style.position="fixed"
- div_element.style.bottom= 0
- div_element.style.left= 0
- div_element.innerHTML = ''
-
- div_element.innerHTML = div_element.innerHTML + '<div style="width:500px;"><div style="padding:0px"><div style="padding:0px">'
- div_element.innerHTML = div_element.innerHTML + '<input type="text" id="aValue_txtArea" wrap="off" COLS="32" STYLE="resize:none; width:300px; font-size:1em; color:#00FF00; background-color:#404040; overflow:scroll; top:0"></input>'
- div_element.innerHTML = div_element.innerHTML + '<div style="width:350px; font-size:1em; color:#FF0000; background-color:#F0F0F0;"">※更新前にコピペなどでバックアップを取ってください<div style="padding:0px"><div style="padding:0px">'
- div_element.innerHTML = div_element.innerHTML + '<input type="button" id="aValue_UpdBtn" value="a値更新" style="font-size:20px; WIDTH: 105px; HEIGHT: 45px; LEFT: 0">';
- parent_object = document.getElementsByTagName("body")[0]
- parent_object.appendChild(div_element);
- document.getElementById("aValue_txtArea").value = GetCookie('a')
- document.getElementById("aValue_UpdBtn").onclick = function() {aValue_UPD()};
-
- }
-})();
//"document" requires the url which ends with ".dat" extension in the domain of "open2ch.net"
//Use this code only under JavaScript Console!!(i recommend Google Chrome because i only use it with test)
var d = document.getElementsByTagName("pre")[0].textContent;
var ds = d.split("\n");
var koteAll = ds.map(function(elm){ return elm.split("<>")[0]} )
.filter(function(elm){ return (/.+◆/).test(elm)} )
.map(function(elm){ return elm.replace(/<.?b>/g,"").replace(">",">","g").replace(/忍法帖【.*】/g,"")} )
.sort();
var koteUniq = koteAll.filter(function (x, i, self) { return self.indexOf(x) === i;});
var res = koteUniq.map(
function(elmU){
return (koteAll.filter(function(elmA){
return elmA == elmU;}));
}
);
var sorted = res.sort(function(a,b){
return b.length - a.length ;
});
var output_names = sorted.map(function(elm){return elm[0]});
var output_values = sorted.map(function(elm){return elm.length});
var output = [];//output[0]←コテハンの名前, output[1]←各コテハンのレス数
output.push(output_names);
output.push(output_values);
//結果書き込み
for(var i = 0; i < output[0].length; i++){
document.write(output[0][i] + "," + output[1][i] + "<br>");
}
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。