- -pv
スレッドの閲覧状況:
現在、- がスレを見ています。
これまでに合計 - 表示されました。
※PC・スマホの表示回数をカウントしてます。
※24時間表示がないスレのPVはリセットされます。

open2chのソース

101名無しさん :2014/03/28(金)11:46:32 ID:jItRFBuJl
デスクトップやエクスプローラーからファイルのD&Dで貼り付けは可能だった
icoファイルも貼り付けできた
102名無しさん :2014/03/28(金)12:02:42 ID:jItRFBuJl
imgのD&Dが分からん

このサンプルはファイル名のみ

連載:人気順に説明する初めてのHTML5開発:アドインなしで実現可能! ドラッグ&ドロップを使いこなそう (2/2) - @IT
http://www.atmarkit.co.jp/ait/articles/1109/13/news144_2.html

Drag & Drop Sample
http://www.atmarkit.co.jp/ait/files/20110913/dnd3.htm
103名無しさん :2014/03/28(金)12:11:06 ID:jItRFBuJl
document.title = event.dataTransfer.files[0];
はやっぱり undefined

document.title = event.dataTransfer.files;
はあるのだが
104名無しさん :2014/04/04(金)07:27:37 ID:AHRVhZouj
メニューから単純に改行を削除

BBS MENU for open2ch
http://toro.open2ch.net/menu/pc_menu.html

let e = document.getElementsByTagName("br");
for (let i = e.length - 1; i >= 0; i--) {
 e[i].remove();
}
105名無しさん :2014/04/04(金)07:49:18 ID:AHRVhZouj
カテゴリ「人気」の非表示

var b = document.getElementsByTagName("B");
function getCat(name) {
 for (var i = 0; i < b.length; i++) {
  if (b[i].innerHTML == name) return b[i];
 }
 return null;
}

var ninki = getCat("人気");
if (ninki) {
 var next = ninki.nextElementSibling;
 while (next && next.tagName.toUpperCase() != "B") {
  next.hidden = true
  next = next.nextElementSibling;
 }
 ninki.hidden = true;
}
106名無しさん :2014/04/16(水)23:43:36 ID:Xn091UJzX
open2chのjsを眺めるのはここでいいの?
107名無しさん :2014/04/23(水)06:46:38 ID:L8HmCTuv1
いいよ
108名無しさん :2014/04/23(水)06:49:47 ID:L8HmCTuv1
他は整形する必要がある

http://toro.open2ch.net/lib/kome/kome.v14.js?v62
http://toro.open2ch.net/lib/read.cgi.v20.js?v15
109名無しさん :2014/04/28(月)05:25:18 ID:eAfj7UOXv
http://toro.open2ch.net/lib/read.cgi.v21.js?v140425

POST時の応答
success:805:1398629871

GET時の応答
success<dt><a href=./805 class=id>805</a> :<font color=darkgreen><b>名無しさん</b></font></a> :2014/04/28(月)05:17:51 ID:<a class=id href=?id=7htL39H98>7htL39H98</a>
<dd> test<br></dt><br>8051398629871
110名無しさん :2014/04/28(月)05:37:12 ID:eAfj7UOXv
ajax使えとな

javascript - How do I capture response of form.submit - Stack Overflow
http://stackoverflow.com/questions/374644/how-do-i-capture-response-of-form-submit
111名無しさん :2014/04/28(月)06:40:24 ID:eAfj7UOXv
POST時の応答は、XMLHttpRequest で分かるかもしれんが、
onsubmit ではわからにゃい
112名無しさん :2014/04/28(月)07:20:57 ID:eAfj7UOXv
指定レス番取得
http://open2ch.net/ajax/get_ank.cgi/test/read.cgi/tech/1372506269/110

まとめ表示
http://uni.open2ch.net/ajax/get_matome.cgi?bbs=newsplus&key=1398169392

レス数取得
http://uni.open2ch.net/ajax/check_new_thread.cgi/newsplus/1398169392/
113名無しさん :2014/04/28(月)07:22:38 ID:eAfj7UOXv
onsubmitではスレのタイトルは分からない
タイトルを取得するAPIも用意されていない
subject.txt読み込むしかないのか
114名無しさん :2014/04/29(火)05:26:54 ID:U3xebeLkg
>113は、 板表示のonsubmitね
スレ表示は分かる
115名無しさん :2014/04/29(火)05:27:56 ID:U3xebeLkg
textContentは改行消えるから、jpgファイルを識別できなくなってしまう

本日の百合画像スレ
http://viper.open2ch.net/test/read.cgi/news4vip/1396087463/1
適当に貼ってく
ttp://s.cyrill.lilect.net/uploader/files/201401171934310001.jpg
ttp://s.cyrill.lilect.net/uploader/files/201403050215390003.jpg
ttp://s.cyrill.lilect.net/uploader/files/201401190352510002.jpg


let thread = document.getElementsByClassName("thread");
let dd = thread[0].getElementsByTagName("dd");

//"適当に貼ってくttp://s.cyrill.lilect.net/uploader/files/201401171934310001.jpgttp://s.cyrill.lilect.net/uploader/files/201403050215390003.jpgttp://s.cyrill.lilect.net/uploader/files/201401190352510002.jpghttp://s.cyrill.lilect.net/uploader/files/201401190352510002.jpg"
console.log(dd[0].textContent);
116おーぷん@名無しさん :2014/04/29(火)20:43:22 ID:nqLApvSrR
あげ
117名無しさん@おーぷん :2014/04/30(水)07:55:07 ID:vorSXbtAV
スレ表示中に最後のレス番号を取得

let nums = document.getElementsByClassName("num");
let last = nums[nums.length - 1];
document.title = last.getAttribute("val");
118名無しさん@おーぷん :2014/04/30(水)07:58:44 ID:vorSXbtAV
新着レスの表示を表示されている最後のレス番号以降にする

let nums = document.getElementsByClassName("num");
let last = nums[nums.length - 1].getAttribute("val");

let centers = document.getElementsByTagName("center");
let a = centers[0].getElementsByTagName("a");

a[0].href = a[0].href.replace(/[^\/]*$/, last + "-");
119名無しさん@おーぷん :2014/04/30(水)08:03:13 ID:vorSXbtAV
a[0].href = last + "-";

だけでいいのか
120名無しさん@おーぷん :2014/10/09(木)07:56:38 ID:nWz6UHdQn
/*
 http://open2ch.net/dev/toukei.cgi
 統計ページを表示して実行
*/
docLoaded(document);

function docLoaded(doc) {
 let output = [];

 // 掲示板の合計
 let tbody = doc.getElementsByTagName("tbody")[0];
 let text = tbody.textContent.replace(/^(\f|\r|\n)/gm, ""); // 空行削除
 let a = text.match(/\d+/gm); //bbs新スレ,bbs投稿,bbsID数,kome投稿数,kome接続数
 output.push("_all," + a[0] + "," + a[1] + "," + a[2]);
 output.push("_kome," + (a[3] || "0") + "," + (a[4] || "0"));

 // 各板
 let tbody3 = doc.getElementsByTagName("tbody")[3];
 let tr = tbody3.getElementsByTagName("tr");
 //tr[0] 新スレ投稿数ID数板
 for (let i = 1; i < tr.length; i++) {
  let td = tr[i].getElementsByTagName("td");
  let newthread = td[0].textContent.replace(/^\+/, "");
  let kakiko = td[1].textContent.replace(/^\+/, "");
  let id = td[2].textContent.replace(/^\+/, "");
  let ita = td[3].children[0].href.match(/\/[^\/]*\/$/)[0].replace("/", "", "g");
  if (ita) output.push(ita + ',' + newthread + ',' + kakiko + ',' + id);
 }
 console.log(output.join("\n"));
}
121名無しさん@おーぷん :2014/10/09(木)12:09:18 ID:nWz6UHdQn
docLoaded(document);

function docLoaded(doc) {
 console.log(doc.baseURI);

 let output = [];

 // 掲示板の合計
 let tbody = doc.getElementsByTagName("tbody")[0];
 let text = tbody.textContent.replace(/^(\f|\r|\n)/gm, ""); // 空行削除
 let a = text.match(/\d+/gm); //bbs新スレ,bbs投稿,bbsID数,kome投稿数,kome接続数
 output.push("_all," + a[0] + "," + a[1] + "," + a[2]);
 output.push("_kome," + (a[3] || "0") + "," + (a[4] || "0"));

 // 各板
 let tbody3 = doc.getElementsByTagName("tbody")[3];
 let tr = tbody3.getElementsByTagName("tr");
 //tr[0] 新スレ投稿数ID数板
 for (let i = 1; i < tr.length; i++) {
  let td = tr[i].getElementsByTagName("td");
  let newthread = td[0].textContent.replace(/^\+/, "");
  let kakiko = td[1].textContent.replace(/^\+/, "");
  let id = td[2].textContent.replace(/^\+/, "");
  let ita = td[3].children[0].href.match(/\/[^\/]*\/$/);
  if (ita && ita.length) ita = ita[0].replace("/", "", "g");
  if (ita) output.push(ita + ',' + newthread + ',' + kakiko + ',' + id);
 }
 console.log(output.join("\n"));
}
122名無しさん@おーぷん :2014/10/09(木)13:58:27 ID:nWz6UHdQn
今年9月の統計データ

おーぷん2ちゃんねるろだ | 2014-09.txt ダウンロード | uploader.jp
http://ux.getuploader.com/open2ch1/download/282/2014-09.txt
123名無しさん@おーぷん :2014/10/09(木)21:53:45 ID:nWz6UHdQn
_all _kome じゃなくて、
$all $kome にしよう
そうすれば、普通にソート可能だ

ASCII文字コード : IT用語辞典
http://e-words.jp/p/r-ascii.html
124名無しさん@おーぷん :2014/10/09(木)21:55:23 ID:nWz6UHdQn
あと、最初の行はバージョン情報に
0は空文字に

ver1
$all,1234,1234,1234

$kome,0,0,0
$kome,,,
125名無しさん@おーぷん :2014/10/09(木)23:02:24 ID:nWz6UHdQn
ああ、あと、改行を\nのみにしないと
半角だけだから、文字コードは気にしなくていいんだよね?
126名無しさん@おーぷん :2014/10/10(金)05:37:27 ID:QeryegckU
改行変えるだけにする
バージョン情報は互換性が無くなったらつける
127名無しさん@おーぷん :2014/10/23(木)06:06:01 ID:GxH7wbbRm
function getFileName(year, month) {
 return "D:\\open2ch\\stat\\" + year + '-' + ("0"+month).slice(-2) + '.txt';
}

// 1か月分のデータを取得
// monthdata[_all][0] にデータは無い
// monthdata[news4vip][1] でニュー速VIP1日目のデータ
// monthdata[_all][2].kakiko で2日目の全板の書き込み数
function getMonthData(text) {
 let lines = text.split("\n");
 let monthdata = {};
 for (let i = 0; i < lines.length; i++) {
  let a = lines[i].split(",");
  id = a[0];
  a.shift();
  data = [];
  data.push(""); // 0日
  if (id == "_kome") {
  } else {
   for (let j = 0; j < a.length; j += 3) {
    data.push({
     thread: a[j] ? parseInt(a[j].trim()) : 0,
     kakiko: a[j+1] ? parseInt(a[j+1].trim()) : 0,
     id: a[j+2] ? parseInt(a[j+2].trim()) : 0
    });
   }
   monthdata[id] = data;
  }
 }
 return monthdata;
}

let text = My.readText(getFileName(2014, 9)); // テキストファイル読み込み
let monthdata = getMonthData(text);
console.log(monthdata["_all"][10]);
console.log(monthdata["news4vip"][10]);
// http://open2ch.net/dev/toukei.cgi?d=2014-09-10
128名無しさん@おーぷん :2014/10/26(日)07:16:10 ID:tesYlpovL
新機能の履歴
更新に必要なのは、bbs と key
http://open2ch.net/ajax/add_history.cgi?bbs=nohara&key=1398921776
129名無しさん@おーぷん :2014/10/26(日)10:50:29 ID:tesYlpovL
自分でやってみたが
履歴に追加ボタンを押したら、未読を0にして、履歴を表示

 // 履歴に追加ボタン
 let history_add = doc.getElementById("history_add");
 history_add.onclick = function() {
  // http://open2ch.net/test/read.cgi/open2ch/1381914280/l50 → /test/read.cgi/open2ch/1381914280/l50
  // http://open2ch.net/ajax/add_history.cgi?bbs=nohara&key=1398921776
  let p = doc.location.pathname.split("/");
  let uri = doc.location.origin + "/ajax/add_history.cgi?bbs=" + p[3] + "&key=" + p[4];
  My.asyncReadURI(uri, function() {
   doc.location.href = "http://open2ch.net/test/history.cgi";
  });
 }
130名無しさん@おーぷん :2014/10/26(日)12:10:58 ID:tesYlpovL
よくよく考えたらダメだわ、>129
スレ表示から、ボタンを押すまでの間の
書き込みが見れない
131名無しさん@おーぷん :2014/10/27(月)00:43:14 ID:ARbFKeXjp
履歴から削除

1個
http://open2ch.net/test/history.cgi?mode=delete&chk:nohara:1398921776=1

2個
http://open2ch.net/test/history.cgi?mode=delete&chk:news4vip:1414332355=1&chk:news4vip:1414332348=1
132名無しさん@おーぷん :2014/10/27(月)06:12:28 ID:ARbFKeXjp
var thread = document.getElementsByClassName("thread");
for (var i = 0; i < thread.length; i++) {
 let a = thread[i].children[0];
 thread[i].appendChild(a);
};
133名無しさん@おーぷん :2014/10/27(月)08:43:56 ID:ARbFKeXjp
function asyncReadDoc(uri, callback) {
 let x = new XMLHttpRequest();
 x.onerror = function () { console.error("asyncReadDoc error: " + uri); }
 x.onload = function () { callback(x.responseXML); }
 x.open("GET", uri, true);
 x.responseType = "document";
 x.send(null);
}

// メニューから板idを取得
let BBS = {};

asyncReadDoc("http://open2ch.net/menu/pc_menu.html",
 function(doc) {
  let a = doc.getElementsByTagName("a");
  for (let i = 0; i < a.length; i++) {
   let p = a[i].href.split("/");
   if (p.length == 5 && p[2].length > 12 && p[4] == "")
    BBS[p[3]] = {url: a[i], title: a[i].textContent};
  }

  let list = [];
  for (i in BBS) list.push(i + " " + BBS[i].title);
  list.sort();
  //addText(list.length);
  //addText(list.join("\n"));
 }
);
134名無しさん@おーぷん :2014/10/27(月)12:17:15 ID:mECBfx9bN
asyncなんちゃらじゃなくて標準のfetchにしようぜ
135名無しさん@おーぷん :2014/10/27(月)20:52:09 ID:ARbFKeXjp
これのこと? Firefoxには付いていないようだけど

Fetch Standard
https://fetch.spec.whatwg.org/
136名無しさん@おーぷん :2014/10/27(月)23:35:23 ID:DW8stPxqx
習えってことだよ
137名無しさん@おーぷん :2014/10/28(火)23:48:42 ID:IKbrpxQEB
/*
統計情報ページの新規スレ一覧を表示させて実行

新規スレ一覧 | おーぷん2ちゃんねる統計情報
http://open2ch.net/dev/toukei.cgi?m=thread&bbs=news4vip
*/

let div = document.getElementsByTagName("div");
let lastdiv = div[div.length-1];

let a = lastdiv.getElementsByTagName("a");
let array = [];
for (let i = 0; i < a.length; i++) {
 a[i].res = a[i].textContent.match(/\(\d+\)$/)[0].match(/\d+/)[0];
 array.push(a[i]);
}

array.sort(function(a, b) { return b.res - a.res; });

let output = [];
for (let i = 0; i < array.length; i++) {
 let title = array[i].textContent;
 let thread = array[i].href.split("/")[6];
 let time = new Date(thread * 1000).toLocaleFormat("%H:%M");
 output.push(time + " " + title);
}

addText(output.join("\n")); // 自作関数
console.log(output.join("\n")); // 全部表示できない
138名無しさん@おーぷん :2014/11/09(日)09:05:54 ID:6KHZjy9M1
let p = doc.location.pathname.split("/");
let threadBoxLinks = doc.getElementsByClassName("thread-box-links");

// 「まとめる」は使わないので、#MESSAGEに
let a = threadBoxLinks[0].getElementsByTagName("a");
a[5].textContent = "#MESSAGE";
a[5].removeAttribute("target");
a[5].href = "#MESSAGE";

// 「履歴に戻る」を「履歴から削除」に変更
// リンクでやると余計なアクセスが発生するのでこうやる
//http://open2ch.net/test/history.cgi?mode=delete&chk:nohara:1398921776=1
a = threadBoxLinks[1].getElementsByTagName("a");
a[1].removeAttribute("href");
a[1].textContent = S("履歴から削除");
a[1].onclick = function() {
 let uri = "http://open2ch.net/test/history.cgi?mode=delete&chk:" + p[3] + ":" + p[4] + "=1";
 My.asyncReadURI(uri, function() {doc.location.href = "http://open2ch.net/test/history.cgi";});
}
139名無しさん@おーぷん :2014/11/23(日)21:06:25 ID:S7z
// -sp-context: browser
/*
メニューから板id,url,タイトルを取得(Firefox用)
menu.json
  lastModified
  bbs[id] = {url, title}
*/

let My = {};

My.asyncWriteText = function(filename, text, charset, callback) {
 Components.utils.import("resource://gre/modules/osfile.jsm");
 if (!charset) charset = "utf-8";
 OS.File.writeAtomic(filename, text, {encoding:charset}).then(
  function() {if (callback) callback();},
  function(e) { console.error('writeAtomic error:' + e); }
 );
}

My.asyncReadDoc = function(uri, onload) {
 let x = XMLHttpRequest();
 if (onload) x.onload = function() { onload(x.response); };
 x.onerror = function () { console.error("XMLHttpRequest error: " + uri); }
 x.open("GET", uri, true);
 x.responseType = "document";
 x.send(null);
}

My.asyncReadDoc("http://open2ch.net/menu/pc_menu.html",
 function(doc) {
  let bbs = Object.create(null);
  let a = doc.getElementsByTagName("a");
  for (let i = 0; i < a.length; i++) {
   let p = a[i].href.split("/");
   if (p.length == 5 && p[2].length > 12 && p[4] == "")
    bbs[p[3]] = {url: a[i].href, title: a[i].textContent};
  }
  let menu = Object.create(null);
  menu["lastModified"] = (new Date(doc.lastModified)).getTime();
  menu["bbs"] = bbs;
  let json = JSON.stringify(menu);
  My.asyncWriteText("E:\\open2ch\\menu.json", json);
 }
);
140名無しさん@おーぷん :2014/11/25(火)18:36:07 ID:yyR
1行減った

// 非同期ファイルに出力
My.asyncWriteText = function(filename, text, charset, callback) {
 Components.utils.import("resource://gre/modules/osfile.jsm");
 OS.File.writeAtomic(filename, text, {encoding:charset || "utf-8"}).then(
  function() {if (callback) callback();},
  function(e) { console.error("writeAtomic error: " + e); }
 );
}
141名無しさん@おーぷん :2014/11/25(火)19:31:06 ID:st9
チラ裏スレ上げるのやめろ
142名無しさん@おーぷん :2015/01/23(金)10:07:17 ID:stJ
お絵かき機能拡張ブックマークレット
http://open.open2ch.net/test/read.cgi/oekaki/1398766494/l10

o2oEXLite - Hatena::Let
http://let.st-hatelabo.com/Fxnimasu/let/hJmd88Dl4M4W

function loadOekakiEx(){
 //var url = "http://let.st-hatelabo.com/xnimasu/let/hJmdqJbmxJc2.bookmarklet.js";
 var url = "http://let.st-hatelabo.com/Fxnimasu/let/hJmd88Dl4M4W.bookmarklet.js";
 $.getScript(url);
}
143名無しさん@おーぷん :2015/01/23(金)10:14:39 ID:stJ
本体

https://c5af8bbe930377beabb41074f8e8a702a7fa7750.googledrive.com/host/0B1BW1N6rqpWFVVZ1ZS1KZDhLM3c/11.2.2/o2oEXLite.js

144名無しさん@おーぷん :2015/01/26(月)05:02:41 ID:J3F
Lazy Load Plugin for jQuery
http://www.appelsiini.net/projects/lazyload

https://raw.githubusercontent.com/tuupola/jquery_lazyload/master/jquery.lazyload.js
145名無しさん@おーぷん :2015/02/20(金)23:37:47 ID:UAN
2ch.netの方だけど、こんなことになってるらしい

https://developer.2ch.net/

2ch.net専用ブラウザの開発者の皆さまへ
お知らせ
2015/3/3以降、2ch.net専用ブラウザ(以下「専用ブラウザ」)を開発、公開するには、2ch.netの所有者であるRaceQueen社の許諾を得て、2ch.netが提供するAPI(以下「API」)を用いて開発する必要があります。
ウェブスクレイピングを用いた専用ブラウザの開発、公開は禁止されます。
datへのアクセスは近日廃止されます。
APIの使用許諾を得ずにAPIを使用することは、不正アクセス行為の禁止等に関する法律等関係する法律に違反することになります。違法行為を発見次第、刑事民事による適切な法的対応をされることになります。
株式会社ジェーン(以下「当社」)はRaceQueen社からAPIの使用許諾を得て、一部の専用ブラウザ開発者に対し、APIを使用許諾する権限を受けています。
当社はRaceQueen社との契約で2ch.net専用ブラウザ開発者に対しAPIの使用許諾を出す権限を受けていますが、これは排他的な権限ではありません。当フォームは当社経由でAPIの使用許諾を得たい開発者のための窓口となっております。

これで2chブラウザのほとんどは消え去るな
146名無しさん@おーぷん :2015/02/22(日)17:11:17 ID:5gG
>>145
個々人が行うブラウザアクセスを禁止することはできない。たとえ取得したHTMLを見る前に加工していたとしても
また2chAPIを無許可で使うアプリの配布を禁止することもできない。キーを抜いて配布するなら

だから、スクレイピングやAPIを実装しただけの専ブラは依然として配布できる
もちろん「APIを実装しただけ」な専ブラ使う人は正規のキーをちゃんと申請して手に入れること前提な。
どっちにしろ商用で配布ならまだしも、オープンソースな開発なら訴えられることもないよ
Jimは、ひろゆきを訴えないのは「あいつは裁判で負けても金を払わないから」と言っていたから
当然オープンソースも金を持ってない以上金を払わないから訴えられない

ちなみにAPIはJaneStyleの配布後12時間で解析完了、仕様書まで作られてる
147名無しさん@おーぷん :2015/03/04(水)10:00:37 ID:FVv
金がなくても資産を差し押さえられちゃうじゃん
148名無しさん@おーぷん :2015/03/04(水)10:01:52 ID:FVv
統計データ取得コードできた

function b(s) {return ('0'+s).slice(-2);}
function dateStr(d) { return d.getFullYear() + '-' + b(d.getMonth()+1) + '-' + b(d.getDate()); }
function between(s,a,b) {let i=s.indexOf(a),j=s.indexOf(b,i+a.length);return s.slice(i+a.length,j);}

var server = document.location.host;
server = (server == 'open2ch.net') ? '' : server.match(/^[^.]*\./)[0];
var uri = "http://" + server + "open2ch.net/dev/toukei.cgi?d=" + dateStr(new Date());

$.get(uri, function(text) {
 text = between(text, '<div style="padding:3px" id="timerBox">', '</table>');
 text = text.replace(/\<[^\>]*\>/igm, '');
 text = text.replace(/^\n/igm, '');
 var e = document.getElementById('MESSAGE');
 e.value = text;
});

ランキング更新日時:2015-03-04 10:01:01
(3分毎更新:あと180秒)
集計トップ |
新規スレッド一覧
2015-03-04の新規スレッド数、投稿数、IDの数の集計。
掲示板の合計:
新スレ:+582件
投稿:+22634件
ID数:3310 ID
149名無しさん@おーぷん :2015/03/18(水)22:29:38 ID:XCp
/*
カテゴリと板IDをJSONで取得

BBS MENU for open2ch
http://open2ch.net/menu/pc_menu.html

<BR><B>人気</B><BR>
<a href=http://hayabusa.open2ch.net/news4vip/>ニュー速VIP</a><br>
*/

var e = document.getElementsByTagName("font")[0].childNodes;

var output = Object.create(null);
var cat = "";
var a = [];
var i = 0;
while (i < e.length) {
 if (e[i].tagName == "B") {
  if (cat) output[cat] = a;
  cat = e[i].innerHTML;
  a = [];
 } else if (e[i].tagName == "A") {
  a.push(e[i].href.split("/")[3]);
 }
 i++;
}
output[cat] = a; // 最後のカテゴリ追加

console.log(JSON.stringify(output, null, " "));
150名無しさん@おーぷん :2015/03/18(水)22:30:25 ID:XCp
"{
"おすすめ": [
"oekaki",
"dev",
"headline.cgi",
"dev",
"test",
"dev",
"dev",
"plus",
"Top",
"dev",
"",
"menu"
],
"人気": [
"news4vip",
"livejupiter",
"gameswf",
"newsplus",
"appli",
"news4plus",
151名無しさん@おーぷん :2015/03/19(木)16:26:08 ID:r04
2ch.netはJSONで返すAPIが用意されてるけど
こっちはJSONでは提供しないんかね
152名無しさん@おーぷん :2015/03/19(木)18:41:40 ID:J9u
2chではやってるよ!
って大勢でお願いすれば、対応してくれるかもしれないけど
153名無しさん@おーぷん :2015/03/21(土)17:24:37 ID:DAT
投稿数/IDによるソートは、こうなるからあまり意味はないと思う

154名無しさん@おーぷん :2015/05/06(水)17:46:23 ID:bcO
統計ページから情報取得

http://open2ch.net/dev/toukei.cgi

var doc = gBrowser ? gBrowser.contentDocument : document;

// 投稿:+69549件
function getToukouSum(doc) {
 var tbody0 = doc.getElementsByTagName("tbody")[0];
 return parseInt(tbody0.textContent.match(/投稿:\+\d+件/)[0].match(/\d+/)[0].trim());
}

document.title = getToukouSum(doc);
155名無しさん@おーぷん :2015/05/06(水)17:47:10 ID:bcO
function getItaData(doc) {
 var result = [];
 var tbody3 = doc.getElementsByTagName("tbody")[3];
 var tr = tbody3.getElementsByTagName("tr");
 for(var i = 1; i < tr.length; i++){
  var td = tr[i].getElementsByTagName("td");
  var newThread = parseInt(td[0].textContent.replace("+", "").trim());
  var toukou = parseInt(td[1].textContent.replace("+", "").trim());
  var idNum = parseInt(td[2].textContent.trim());
  result.push({tr:tr[i], newThread:newThread, toukou:toukou, idNum:idNum});
 };
 return result;
}
156名無しさん@おーぷん :2015/05/07(木)15:56:44 ID:Ep8
こっちじゃないとダメだった

var doc = window.gBrowser ? window.gBrowser.contentDocument : document;
157名無しさん@おーぷん :2015/05/07(木)16:30:19 ID:Ep8
var doc = window.gBrowser ? window.gBrowser.contentDocument : document;

// 全板のデータ取得
function getItaData(doc) {
 var result = [];
 var tbody3 = doc.getElementsByTagName("TBODY")[3];
 var tr = tbody3.getElementsByTagName("TR");

 var tr0td = tr[0].getElementsByTagName("TD");
 var headers = [];
 for (var i = 0; i < tr0td.length; i++) {
  headers.push(tr0td[i].textContent.trim());
 }

 for(var i = 1; i < tr.length; i++){
  var td = tr[i].getElementsByTagName("TD");
  function _td(name){return td[headers.indexOf(name)];};
  function _text(name){return _td(name).textContent.trim();};
  function _num(name){return parseInt(_td(name).textContent.replace("+", "").trim());};
  result.push({
   tr: tr[i],
   thread: _num('新スレ'),
   toukou: _num('投稿数'),
   id: _num('ID数'),
   title: _text('板'),
   url: _td('板').getElementsByTagName("A")[0].href
  });
 };
 return result;
}

var dat = getItaData(doc);
dat.forEach(function(e) {
 console.log(e.thread + " " + e.toukou + " " + e.id + " " + e.title + " " + e.url);
});
158名無しさん@おーぷん :2015/05/07(木)16:39:23 ID:Ep8
>>157 の getItaData() と合わせて、
書き込みが1000以上の板の合計: 40902 (6板) 90.99%
を取得可能

var doc = window.gBrowser ? window.gBrowser.contentDocument : document;

// 投稿:+????件 の整数値を取得
function getToukouSum(doc) {
 var tbody0 = doc.getElementsByTagName("tbody")[0];
 return parseInt(tbody0.textContent.match(/投稿:\+\d+件/)[0].match(/\d+/)[0].trim());
}

// メイン
var dat = getItaData(doc);
var over1000bbs = 0;
var over1000toukou = 0;
dat.forEach(function(e) {
if (e.toukou >= 1000) {
over1000bbs++;
over1000toukou += e.toukou;
}
});

var toukou = getToukouSum(doc);
var output = "書き込みが1000以上の板の合計: " +
over1000toukou + " (" + over1000bbs + "板) " +
(over1000toukou / toukou * 100).toFixed(2) + "%";
console.log(output);
159名無しさん@おーぷん :2015/05/07(木)17:07:40 ID:Ep8
// 統計ページ上に出力用TEXTAREAを作成
function createOutputArea(doc) {
 var tbody0 = doc.getElementsByTagName("tbody")[0];
 var tr = tbody0.getElementsByTagName("tr");
 var ta = doc.getElementById("OutputArea");
 if (!ta) {
  var td = doc.createElement("td");
  ta = doc.createElement("TEXTAREA");
  ta.id = "OutputArea";
  tr[0].appendChild(td);
  td.appendChild(ta);
  ta.parentElement.style = "width:100%;height:100%";
  ta.style = "width:100%;height:100%";
  ta.setAttribute("wrap", "off");
 }
 return ta;
}

var doc = window.gBrowser ? window.gBrowser.contentDocument : document;
createOutputArea(doc);


160名無しさん@おーぷん :2015/05/07(木)22:23:35 ID:Ec7
必死チェッカーってJSだけで作れますか?
161名無しさん@おーぷん :2015/05/08(金)18:48:46 ID:MR3
>>160
JSだけってWebブラウザ上で動作させるってこと?
具体的にどういう機能を考えてるのかは分からないが、やろうと思えばできるだろう
162名無しさん@おーぷん :2015/05/08(金)21:07:11 ID:fBp
>>161
ブラウザだけで動くやつ

スレにあるIDを選択してJSを実行したら、別タブでそいつのIDで書き込んでいるスレURL、スレタイ、レスが一挙に表示される


こんなかんじ
163名無しさん@おーぷん :2015/05/08(金)22:53:05 ID:Qyj
openの必死チェッカーサイトがあれば、そこを呼び出すだけで出来るのだが。

open2ch 必死チェッカー - Google 検索
https://www.google.co.jp/search?q=open2ch+%E5%BF%85%E6%AD%BB%E3%83%81%E3%82%A7%E3%83%83%E3%82%AB%E3%83%BC
164名無しさん@おーぷん :2015/05/08(金)22:53:46 ID:Qyj
どんなに古いスレにも書き込めるって仕様が、やっかいだね
全スレをチェックしないといけないので非現実的。

subjects.txtに載ってるスレのみのチェックなら、
Firefoxの「拡張」でできる。
Chromeは知らん
HTMLではログの保存ができないから、無理。
165名無しさん@おーぷん :2015/06/05(金)17:23:06 ID:xEE
サーバはApache、言語はPerl

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache Server at open02.open2ch.net Port 80



Undefined subroutine &Digest::SHA1::sha1_base64 called at lib/write_func.pl line 53.
For help, please send mail to the webmaster (root@localhost), giving this error message and the time and date of the error.
166名無しさん@おーぷん :2015/07/03(金)19:13:40 ID:sf6
imgurに直リンを規制されたっぽいな
負荷のかけすぎか
対象ドメインはuni.open2ch.netとhayabusa.open2ch.netかな
167名無しさん@おーぷん :2015/07/27(月)00:48:05 ID:YAR
*.open2ch.netだったり
>>166
168名無しさん@おーぷん :2015/07/27(月)00:58:46 ID:YAR

https://api.imgur.com
Free Usage
The Imgur API is free for non-commercial usage. Your application is probably free if you don't plan on making any money with it, or if it's open source.

Heavy Free Usage
If your application is free, but isn't going to work with our rate limiting, then we might be willing to white-list it.
Fill out this form submit your white-list request. We will review your request, and if granted, will give you all the access your awesome app desires!

https://api.imgur.com/#limits
Rate Limits
The Imgur API uses a credit allocation system to ensure fair distribution of capacity.

Each application can allow approximately 1,250 uploads per day or approximately 12,500 requests per day.

If the daily limit is hit five times in a month, then the app will be blocked for the rest of the month.
The remaining credit limit will be shown with each requests response in the X-RateLimit-ClientRemaining HTTP header.



API制限に今更引っかかるとか?
169名無しさん@おーぷん :2015/08/14(金)12:11:54 ID:qP0
あげ
170名無しさん@おーぷん :2015/08/17(月)01:01:58 ID:t75
age
171名無しさん@おーぷん :2015/08/29(土)04:20:15 ID:eG5
age
172名無しさん@おーぷん :2015/10/08(木)18:13:10 ID:JLP
履歴ページ表示中に実行することで
板IDとスレIDを取得

履歴@おーぷん2ちゃんねる
http://open2ch.net/test/history.cgi

let a = document.getElementsByClassName('th');
for (let i = 0; i < a.length - 1; i++) {
let key = a[i].getAttribute('key');
console.log(key);
}

livejupiter:1444282020
news:1444269639
173名無しさん@おーぷん :2015/10/08(木)18:16:42 ID:JLP
削除はこうやって複数できるけど、
追加は出来ない
mode=add
は無かった

http://open2ch.net/test/history.cgi?mode=delete&chk:news4vip:1414332355=1&chk:news4vip:1414332348=1
174その1 :2015/10/08(木)19:39:02 ID:fjq
// -sp-context: browser
// Firefox用 実行環境=ブラウザ

/*
表示してあるページの履歴を追加します。

使い方
1) 履歴ページを表示する
2) Cookie を削除
3) これを実行

ローカルファイルに保存した履歴.html も復元できます。
*/

(function(){

var doc = window.gBrowser ? window.gBrowser.contentDocument : document;
var My = {};

// 非同期 URI 読み込み
My.asyncReadURI = function(uri, onload) {
 //addText('asyncReadURI:' + uri);
 let x = new XMLHttpRequest();
 x.onerror = function () { console.error("XMLHttpRequest error: " + uri); };
 if (onload) x.onload = function () { onload(x.responseText); };
 x.open("GET", uri, true);
 x.responseType = "text";
 x.send(null);
}
175その2 :2015/10/08(木)19:39:26 ID:fjq

// 非同期関数の逐次実行
My.createSeqJobs = function() {
 let result = [];
 result.add = function(args) {
  result.push(Array.prototype.slice.call(arguments));
 }
 result.wait = function(msec) {
  function _wait(msec) {
   setTimeout(function(){result.next();}, msec);
  }
  result.add(_wait, msec);
 }
 result.next = function() {
  let job = result.shift();
  if (job) {
   let func = job.shift();
   if (func) func.apply(null, job);
  }
 }
 result.run = function() {
  result.next();
 }
 return result;
}
176その3 :2015/10/08(木)19:39:45 ID:fjq
// メイン
let jobs = My.createSeqJobs();
let a = doc.getElementsByClassName('th');
if (!a || a.length == 0) { throw "履歴がありません"; };

let max = a.length;
//let max = a.length > 30 ? 30 : a.length;
//let max = a.length > 3 ? 3 : a.length;

for (let i = 0; i < max; i++) {
 let s = a[i].getAttribute('key').split(':');
 let bbs = s[0];
 let thread = s[1];

 //http://open2ch.net/ajax/add_history.cgi?bbs=nohara&key=1398921776
 let uri = "http://open2ch.net/ajax/add_history.cgi?bbs=" + bbs + "&key=" + thread;
 //addText('add:' + uri);

 jobs.add(My.asyncReadURI, uri, function(text) {
  console.log(uri + ' -> ' + text);
  jobs.next();
 });

 jobs.wait(1000); // 1秒待機
}

jobs.add(function() { console.log('update all done'); beep(); });
jobs.run();

})();
177名無しさん@おーぷん :2015/10/08(木)19:41:44 ID:fjq
その3の下のほうの beep(); は無かった
消してください
178名無しさん@おーぷん :2015/10/08(木)19:42:45 ID:fjq
あ、順番が逆になるっぽい
179名無しさん@おーぷん :2015/10/08(木)21:58:33 ID:og0
使い方がイマイチ分からない件
180名無しさん@おーぷん :2015/10/09(金)03:06:59 ID:YJw
Firefox限定

1) about:config で devtools.chrome.enabled = true にする
2) スクラッチパッドを起動 (Shift+F4だったかな)
3) スクラッチパッドのメインメニューから、実行環境→ブラウザ
4) その1~その3をコピペ (beep(); は消す)
6) 履歴ページを表示する
7) Cookie を削除
8) オプション画面ではダメなので、履歴のページに戻る
9) スクラッチパッドで実行

こんな感じなのだけれども、もうちょっと別のを考えます
181名無しさん@おーぷん :2015/10/09(金)04:37:03 ID:YJw
別のやりかた (ブックマークレットでも出来そう)

1) 履歴のページ(http://open2ch.net/test/history.cgi)
ファイルメニューの「名前を付けて保存」でローカルに保存します。

2) Cookie を削除。

3) 1)で保存したファイルを開きます。

4) ソースをFirefoxのスクラッチパッドにコピペして実行。

5)履歴のページを表示中に実行すると、↓のようなリンクが追加され、
それをクリックすると、履歴に追加されます

リンクをクリックして、ブラウザの「戻る」ボタンをクリックして戻って、
またリンクをクリック・・・とやれば、履歴に追加したいスレだけ追加できます。

以下ソース

182名無しさん@おーぷん :2015/10/09(金)04:37:36 ID:YJw
// 実行環境=Webページ

let th = document.getElementsByClassName('th');
if (!th || th.length == 0) { throw "履歴がありません"; };

let e = document.getElementById('add_link');
if (e) return;

e = document.createElement('div');
e.id = 'add_link';
e.style = "background:darkgreen;color:white;padding:5px;margin-bottom:3px";
e.textContent='履歴に追加するリンク';
document.body.insertBefore(e, document.body.firstChild);

let div = document.getElementsByTagName('div');

for (let i = 0; i < th.length; i++) {
 let s = th[i].getAttribute('key').split(':');
 let bbs = s[0];
 let thread = s[1];
 let uri = "http://open2ch.net/ajax/add_history.cgi?bbs=" + bbs + "&key=" + thread;

 let br = document.createElement('br');
 document.body.insertBefore(br, div[1]);

 let a = document.createElement('a');
 a.href = uri;
 a.textContent = th[i].textContent;
 document.body.insertBefore(a, div[1]);
}
183名無しさん@おーぷん :2015/10/09(金)04:42:48 ID:YJw
ソースを実行して「履歴に追加するリンク」を表示させてから
ローカルに保存しても、「履歴に追加するリンク」は保存されないから注意して。
184名無しさん@おーぷん :2015/10/09(金)05:22:19 ID:s9W
履歴を整理するためのプログラムか
おーぷんの機能で十分だと思うんだけど

クッキーを消す必要性もわからない
クッキー消すと主権限とかが消えるから消さない方がいい
185名無しさん@おーぷん :2015/10/09(金)06:37:09 ID:YJw
>>184
履歴がぶっ壊れたときとか、
Cookieを消す必要に迫られたけど、履歴は残しておきたい時とか、
別のブラウザ・アカウント・PCを使うときとか

バグ報告スレ 表示、動作の異常など3
http://open.open2ch.net/test/read.cgi/open2ch/1444247672/4-6
186名無しさん@おーぷん :2015/10/09(金)06:43:27 ID:s9W
>>185
履歴をバックアップから復元するってこと?
なら一件ずつ追加じゃなくて一括で追加にした方がいいかと
187名無しさん@おーぷん :2015/10/09(金)06:48:41 ID:YJw
>>186
一括方式は >>174-180 だけど、FirefoxのXULを使うので、
一般向けではないかもしれない。

同一ドメインのWebページを非同期で逐次読み込む方法を忘れました
できたかどうかも思い出せないや
188名無しさん@おーぷん :2015/10/09(金)06:51:09 ID:YJw
順番に

"http://open2ch.net/ajax/add_history.cgi?bbs=" + bbs + "&key=" + thread;

を実行したいんだけど、XULを使ったやり方しか知らないってことです。

AJAXとか使ってやるのかな?
189名無しさん@おーぷん :2015/10/09(金)06:57:57 ID:s9W
>>187
XULの機能はほとんど使ってないように見えるけど
少しいじれば汎用的になるんじゃない?
190名無しさん@おーぷん :2015/10/09(金)07:12:06 ID:YJw
ブラウザのJavaScriptを有効にする必要があったんだ。
beep(); 消して、そのままでいけるはず。
もうちょっといじって載せます。
191名無しさん@おーぷん :2015/10/09(金)07:22:27 ID:YJw
XUL使わないと、ローカルファイルから復元は無理なんだ
ドメイン違うから

>>174-180 のやり方で、最後に
ReferenceError: beep is not defined
が出るけど、
http://open2ch.net/test/history.cgi
を表示中なら、Webページでも実行できます。

beep();を消せば出なくなる。
192その1 :2015/10/09(金)07:24:09 ID:YJw
/*
表示してあるページの全履歴を追加し直します。

使い方
1) 履歴ページを表示する
2) Cookie を削除
3) これを実行
ローカルファイルに保存した履歴.htm は使えません。
*/

(function(){

var My = {};

// 非同期 URI 読み込み
My.asyncReadURI = function(uri, onload) {
 let x = new XMLHttpRequest();
 x.onerror = function () { console.error("XMLHttpRequest error: " + uri); };
 if (onload) x.onload = function () { onload(x.responseText); };
 x.open("GET", uri, true);
 x.responseType = "text";
 x.send(null);
}
193名無しさん@おーぷん :2015/10/09(金)07:24:26 ID:YJw
// 非同期関数の逐次実行
My.createSeqJobs = function() {
 let result = [];
 result.add = function(args) {
  result.push(Array.prototype.slice.call(arguments));
 }
 result.wait = function(msec) {
  function _wait(msec) {
   setTimeout(function(){result.next();}, msec);
  }
  result.add(_wait, msec);
 }
 result.next = function() {
  let job = result.shift();
  if (job) {
   let func = job.shift();
   if (func) func.apply(null, job);
  }
 }
 result.run = function() {
  result.next();
 }
 return result;
}
194名無しさん@おーぷん :2015/10/09(金)07:26:58 ID:YJw
その3を書き込めない
195その3(最後) :2015/10/09(金)07:32:47 ID:XXp
// メイン
let jobs = My.createSeqJobs();
let a = document.getElementsByClassName('th');
if (!a || a.length == 0) { throw "履歴がありません"; };

let max = a.length;
//let max = a.length > 3 ? 3 : a.length;
let count = max;

for (let i = max - 1; i >= 0; i--) {
 let s = a[i].getAttribute('key').split(':');
 let bbs = s[0];
 let thread = s[1];

 let uri = "ht" + "tp://open2ch.net/ajax/add_history.cgi?bbs=" + bbs + "&key=" + thread;
 // console.log('add:' + uri);

 jobs.add(My.asyncReadURI, uri, function(text) {
  count--;
  document.title = '残り' + count + ' ' + uri + ' -> ' + text;
  jobs.next();
 });

 jobs.wait(500); // 0.5秒待機
}

jobs.add(function() { document.title = '履歴の追加が終わりました'; });
jobs.run();

})();
196名無しさん@おーぷん :2015/10/09(金)07:33:23 ID:XXp
書けた
リンク規制だったみたい
"ht" + "tp
と分けたらできた
197名無しさん@おーぷん :2015/10/09(金)07:34:44 ID:s9W
>>191
なるほど
実装するとしたらおーぷんのページでJavaScriptを実行して、ローカルファイルをFileReaderで読み込む感じかな

あとletはまだほとんどのブラウザで使えない
198名無しさん@おーぷん :2015/10/09(金)07:47:47 ID:XXp
クリップボード経由で考えてみました

TEXTAREA、履歴を取得ボタン、履歴の追加ボタンを作る

履歴の保存
履歴の取得ボタンを押すと、履歴データを下記の形式でTEXTAREAに出力する
ユーザーにコピペでメモ帳等にコピーしてもらって、保存

履歴の復元
TEXTAREAに下記形式のデータを貼り付ける
履歴の追加ボタンを押して、追加する

tech:1372506269:open2chのソース
news:1444302946:出会い系で女性と合う約束をした少年(17) 現れた33歳のお
newsplus:1444333587:【経済】首相値下げ指示、NTTコム社長「おせっかい」 [H2
199名無しさん@おーぷん :2015/10/09(金)20:21:23 ID:97E
ES5までの機能でかつブラウザ固有のスクリプト抜き作って欲しい
200名無しさん@おーぷん :2015/10/10(土)06:58:33 ID:t8f
let を var に置換すれば使えそうだけど

Mozilla における ECMAScript 5 のサポート - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/ECMAScript_5_support_in_Mozilla

Mozilla における ECMAScript 6 のサポート - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla
201名無しさん@おーぷん :2015/10/21(水)09:53:21 ID:uOj
komeってどーいう仕組みなん?
202名無しさん@おーぷん :2015/10/21(水)12:19:27 ID:0Gk
komeの仕組みを調べるスレ
http://open2ch.net/test/read.cgi/php/1397296436/
203名無しさん@おーぷん :2015/11/04(水)19:59:24 ID:WG1
age
204名無しさん@おーぷん :2015/11/04(水)20:01:04 ID:WG1
>>168
【新機能】画像のサムネ画横に並ぶよ
http://hayabusa.open2ch.net/test/read.cgi/news4vip/1446567126/



33 名無しさん@おーぷん[] 2015/11/04(水)01:29:12 ID:Ppm

クリックするとimgurのサイトに飛ぶの俺だけ?

37 名無しさん@おーぷん[] 2015/11/04(水)01:31:29 ID:tRI

>>33
imgurの管理人が画像直りんしてたら一回ブロックされたんよ
サイトに飛ぶようにしないとだめらしい
205名無しさん@おーぷん :2015/11/04(水)21:29:59 ID:D06
imgurが広告を表示させるためなのか
206名無しさん@おーぷん :2015/11/04(水)23:14:41 ID:kta
>>205
単純にAPI制限
207名無しさん@おーぷん :2015/11/12(木)21:29:09 ID:8Vb
強制sage解除条件が緩和されたらしい
208名無しさん@おーぷん :2015/11/12(木)22:09:26 ID:Hmk
ソースもなしに
209名無しさん@おーぷん :2015/11/12(木)22:21:51 ID:GIP
強制sageのことは書いてない

更新状況はここで
http://open.open2ch.net/test/read.cgi/open2ch/1339040173/1031-
210名無しさん@おーぷん :2015/11/14(土)05:32:51 ID:I5y
HTMLソースを書き込めない
211名無しさん@おーぷん :2015/11/14(土)05:34:02 ID:be5
>>210
行数が多かったとか?
212名無しさん@おーぷん :2015/11/14(土)05:35:18 ID:be5
open.open2ch.net/test/read.cgi/open2ch/1350652390/1697
これはブックマークレットで?
213名無しさん@おーぷん :2015/11/14(土)05:38:11 ID:I5y
>>212
んにゃ、ローカルファイルです
214名無しさん@おーぷん :2015/11/14(土)05:39:37 ID:I5y
>>211
たかだか10行です

1行ずつなら書き込めるようだ
215名無しさん@おーぷん :2015/11/14(土)05:41:16 ID:be5
左側のメニュー部分が
普通のメニューの項目と違うように見えるのだけど
216名無しさん@おーぷん :2015/11/14(土)05:41:20 ID:I5y
関係あるところだけ抜き出す

<head><title>おーぷん2ちゃんねる</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
217名無しさん@おーぷん :2015/11/14(土)05:41:32 ID:I5y
<frameset cols="92,*">
<frame id="menu" src="open2chmenu.html" frameBorder=0 marginWidth=0 marginHeight=0></frame>
218名無しさん@おーぷん :2015/11/14(土)05:41:46 ID:I5y
<frame id="view" name="headline" src="http://open2ch.net/headline.cgi?mode=all&o=updated" frameBorder=1></frame>
</frameset>

これで分ると思う
219名無しさん@おーぷん :2015/11/14(土)05:43:19 ID:I5y
で、open2chmenu.htmlが、

<base href="http://open2ch.net/headline.cgi" target="headline">
<font size=2>

<form action=http://open2ch.net/headline.cgi method=get>
<input name=q size=15 placeholder="スレタイ検索"><dt>
</form>
<a href=?bbs=all&o=created&n=100>作成順</a> <a href=http://open2ch.net/test/history.cgi>履歴</a><dt>
<a href=?bbs=open2ch&o=updated>open2ch</a>
<a href=http://open2ch.net/open2ch/#menu>□</a><dt>
<a href=?bbs=news4vip&o=updated>ニュー速VIP</a><dt>
<a href=?bbs=livejupiter&o=updated>なんJ</a><dt>
<br>
220名無しさん@おーぷん :2015/11/14(土)05:45:41 ID:I5y
219はいけた

>>216-218のHTMLを一つにして書き込んでみて
cloudflareが危険視するみたい
221名無しさん@おーぷん :2015/11/14(土)05:46:19 ID:be5
>>215
open2chmenu.htmlをローカルに作って
自分の必要なスレをリストアップしているということなんだね
222名無しさん@おーぷん :2015/11/14(土)05:47:34 ID:I5y
昔ここに書き込んでたわ
思い出した

要望スレ               
http://open.open2ch.net/test/read.cgi/open2ch/1350652349/496-497
223名無しさん@おーぷん :2015/11/14(土)05:49:29 ID:I5y
>>221
open2chmenu.htmlとあと、親のファイルね
224名無しさん@おーぷん :2015/11/14(土)05:51:52 ID:be5
>>223
なるほど
仕組みはわかった


このスレは>>223が立てたスレなの?
225名無しさん@おーぷん :2015/11/14(土)05:55:04 ID:I5y
>>224
そだよ

>222のスクショ
http://image.open2ch.net/p/open2ch-1350652349-493.png
226名無しさん@おーぷん :2015/11/14(土)05:57:06 ID:I5y
ヘッドラインの見た目が違うのは、
Firefoxの拡張でやってます

↓が何もしていないヘッドライン

227名無しさん@おーぷん :2015/11/14(土)05:59:18 ID:be5
自分用のhtmlで管理するというのは
いいアイデアだね
参考にさせてもらうわ
228名無しさん@おーぷん :2015/11/14(土)06:02:09 ID:be5
話しかわるけど

firefox使っているのだけど
ここ数日前にメニューバーのあたりに見慣れないアイコンがでてきたんだよ
これって自動のアップデートのせいなんだろうか
229名無しさん@おーぷん :2015/11/14(土)06:07:37 ID:I5y
これじゃないかな

Firefox 42.0 リリースノート
http://www.mozilla.jp/firefox/42.0/releasenotes/
音声を再生しているタブにアイコンが表示されるようになりました。そのアイコンをクリックすることで、
音声をミュートできます
230名無しさん@おーぷん :2015/11/14(土)06:10:11 ID:be5
>>229
なるほどそれだわ
突然だからびっくりした
もう
自動更新できないようにしとこ。
231名無しさん@おーぷん :2015/11/14(土)06:14:39 ID:I5y
ただ、
フレームメニューはアドレスバーやタイトルバーが変わってくれないという欠点がある
解決しようといろいろやったけど難しかったです
232名無しさん@おーぷん :2015/11/27(金)14:00:37 ID:1hG
ヘッドラインで、指定した板IDのスレ、指定したキーワードを含むタイトルを非表示

// http://open2ch.net/headline.cgi?n=500

var delBBS = ["news4vip", "livejupiter"];
var delTitle = ["艦これ"];

var doc = gBrowser.contentDocument;
var tbody = doc.getElementsByTagName("tbody");
var a = tbody[1].getElementsByTagName("a");
233名無しさん@おーぷん :2015/11/27(金)14:00:53 ID:1hG
function checkTitle(title) {
 for (var i = 0; i < delTitle.length; i++) {
  if (title.indexOf(delTitle[i]) >= 0) return true;
 }
 return false;
}
234名無しさん@おーぷん :2015/11/27(金)14:01:10 ID:1hG
for (var i = 0; i < a.length; i++) {
 var bbs = a[i].pathname.split("/")[3];
235名無しさん@おーぷん :2015/11/27(金)14:01:16 ID:1hG
 if ((delBBS.indexOf(bbs) >= 0) || checkTitle(a[i].textContent))
  a[i].parentElement.parentElement.setAttribute("hidden", 1);
}
236名無しさん@おーぷん :2015/11/27(金)14:01:41 ID:1hG
一度に書き込めない
one more step 云々が出る
237名無しさん@おーぷん :2015/11/27(金)14:12:16 ID:1hG
JavaScriptを有効にしたら書き込めた
238名無しさん@おーぷん :2015/11/27(金)20:02:21 ID:1hG
/*
ヘッドラインで、指定した板IDのスレ、指定したキーワードを含むタイトルを非表示
URIで指定するバージョン
Firefoxでテスト
実行環境はWebページとブラウザの両方に対応
http://open2ch.net/headline.cgi?o=updated&n=500&delbbs=news4vip%20livejupiter&deltitle=艦これ
*/

function getURIQueryObj(uri) {
 var result = {};
 var m = uri.match(/\?.*/); // find ?
 if (m) {
  var s = m[0];
  s = s ? s.slice(1) : "";
  s = s.replace(/#.*$/, "");
  var a = s.split("&");
  for (var i = 0; i < a.length; i++) {
   var p = a[i].indexOf("=");
   if (p) {
    var name = decodeURIComponent(a[i].slice(0, p));
    var value = decodeURIComponent(a[i].slice(p + 1));
    result[name] = value;
   }
  }
 }
 return result;
}

var doc = window.gBrowser ? gBrowser.contentDocument : document;
var delBBS = getURIQueryObj(doc.location.href)["delbbs"];
delBBS = delBBS ? delBBS.split(" ") : [];
var delTitle = getURIQueryObj(doc.location.href)["deltitle"];
delTitle = delTitle ? delTitle.split(" ") : [];
var tbody = doc.getElementsByTagName("tbody");
var a = tbody[1].getElementsByTagName("a");

function checkTitle(title) {
 for (var i = 0; i < delTitle.length; i++) {
  if (title.indexOf(delTitle[i]) >= 0) return true;
 }
 return false;
}

for (var i = 0; i < a.length; i++) {
 var bbs = a[i].pathname.split("/")[3];
 if ((delBBS.indexOf(bbs) >= 0) || checkTitle(a[i].textContent))
  a[i].parentElement.parentElement.setAttribute("hidden", 1);
}
239名無しさん@おーぷん :2015/11/27(金)20:04:26 ID:1hG
http://open2ch.net/headline.cgi
が表示されたときに、238を、
実行するようにすると、スレを削除できます。

「表示されたときに実行する」
これが知らない人には大変なわけですけど。
240名無しさん@おーぷん :2015/11/27(金)20:37:38 ID:1hG
おーぷん2ちゃんねるヘッドライン
http://open2ch.net/headline.cgi?o=updated&delbbs=news4vip%20livejupiter
のイメージ
URIで指定する方が、複数のパターンを選べて便利
拡張に埋め込んだり、外部ファイルに設定を置くのは不便
あと、,はURLの予約文字語なので、news4vip,livejupiterのようにしない

「指定したキーワードを含むタイトルを非表示」
全角文字を含むことになると、URIでエンコードされて長くなるのが問題かも

241名無しさん@おーぷん :2015/11/27(金)20:52:38 ID:1hG
http://open2ch.net/headline.cgi?o=updated&n=200

n=200とn=400 が n=50になる
意味わかんない

n=300 n=500 はちゃんと 300, 500 表示になる
500がmaxみたいだけど

http://open2ch.net/headline.cgi?o=updated&n=200
http://open2ch.net/headline.cgi?o=updated&n=300
http://open2ch.net/headline.cgi?o=updated&n=400
http://open2ch.net/headline.cgi?o=updated&n=500
242名無しさん@おーぷん :2015/11/27(金)21:04:07 ID:1hG
nは、50 100 300 500 のみ対応かな
全部確認してられない

総合ヘッドラインからVIPとなんJを削除する場合、
n=100で 約34レス残る
n=300で 約111レス残る
n=500で 約184レス残る

n=100で十分かも
お好きなほうを
243名無しさん@おーぷん :2015/11/27(金)22:18:12 ID:1hG
なんでJavaScriptが有効でないと One more step に飛ばされるのか解らない
googleが要求しているようだけど

http://www.google.com/recaptcha/api/noscript?k=

他にも出た人がいるようですが、長文ソース等を書き込むときは、
専ブラからJavaScriptが有効だと、ヘッダに付け加える必要があるのかも
具体的なやり方は知りません。

要望スレ
http://open.open2ch.net/test/read.cgi/open2ch/1350652390/1710-1720
244名無しさん@おーぷん :2015/11/28(土)16:54:42 ID:VpA
view-source:http://open.open2ch.net/test/read.cgi/nohara/1447244804/l10
http://open.open2ch.net/lib/lazyload/jquery.lazyload.min.js

一般ブラウザの場合、
JavaScriptが有効なら、画像が見えたら読み込みが発生している。
無効なら最初から画像の読み込みは発生しない。
245名無しさん@おーぷん :2015/12/04(金)17:38:49 ID:U4Q
あげあげ
246名無しさん@おーぷん :2015/12/16(水)07:47:18 ID:MrV
おーぷんで文字の反転が禁止になって、ついでに文字参照も無効になったな
247名無しさん@おーぷん :2016/01/14(木)13:40:54 ID:EAU
新年になって名前欄の処理が変わったな
【】が{}に変えられて工作ができなくなったり
<b>がある程度適切に挿入されるようになったりと
248名無しさん@おーぷん :2016/08/02(火)14:47:57 ID:su7
ageテスト
249名無しさん@おーぷん :2016/08/02(火)14:51:36 ID:su7
mailがsageでないときは上がるようになったのか
250名無しさん@おーぷん :2016/10/27(木)18:25:42 ID:PCj
運営がソースをいじってるようで色々不具合が出てるな

datが破損しているスレ
http://hayabusa.open2ch.net/test/read.cgi/news4vip/1477532378/
251名無しさん@おーぷん :2016/10/27(木)19:14:55 ID:PCj
ヘッドラインがメンテ中
http://open2ch.net/headline.cgi?p=&o=updated&rn=&n=100&q=&bbs=

> mente
252名無しさん@おーぷん :2017/01/23(月)23:00:08 ID:nmU
てs
253名無しさん@おーぷん :2017/01/23(月)23:00:45 ID:nmU
>>251
メンテは直った模様
254名無しさん@おーぷん :2017/01/23(月)23:09:05 ID:nmU
先ほどchromeのシークレットモードでopen2chにアクセスした際に生成されたcookie(※valueは一部のみ表示)





注目すべきはExpires/Max-Ageの項目
2018/01/23 22:56頃にcookieの賞味期限が切れるらしい

このことから、cookieの賞無期限は1年間であることがわかる
つまり、履歴(http://open2ch.net/test/history.cgi )は「※6ヶ月以上経過した履歴は自動消去されるべ」であるし、
かつ初めておーぷん2ちゃんねるに訪問してから1年経つと「履歴も主権限もいろいろ消えてしまう」のでは
と思われる
255名無しさん@おーぷん :2017/01/24(火)00:25:58 ID:eLQ
>>254
前はCookieの期限は10年あったのにな
256名無しさん@おーぷん :2017/08/09(水)05:54:21 ID:zyl
履歴がどんどん削除されてる
もしかして、6ヶ月経過の基準って履歴を更新した日じゃなくて、初めて登録した日なのか
そうだとしたら使いにくい機能だな
257名無しさん@おーぷん :2017/08/09(水)05:59:34 ID:zyl
もしかして、最近履歴機能を運営がいじったのか?

> 604 :名無しさん@おーぷん :2017/08/07(月)05:00:47 ID:bvn
> 新着レスがあるのに経歴に表示されなかった+0のまま
> この不具合は初めてだ

http://open.open2ch.net/test/read.cgi/open2ch/1426352312/604
258名無しさん@おーぷん :2017/08/09(水)06:03:42 ID:zyl
>>256
6ヶ月って、180日とか日にちとかを基準にしてるんじゃなくて、月が変わったらカウントするっぽいな
2/20ぐらいに登録したスレも消えてる
259名無しさん@おーぷん :2017/10/20(金)08:36:48 ID:RHm
さとるがGitHubのリポジトリを作ってたみたいだ
https://github.com/satorunet/open2ch

中身はただの画像置き場だったが
260名無しさん@おーぷん :2017/10/20(金)15:24:45 ID:RHm
スレにyomiボタンが出てレスが読み上げられるようになってる
現在進行形でソースを編集してるっぽい
読まれるのは表示されてる最初のレスだけで、二回以上は再生できない

input要素の下にソースがある
<input type=button value="yomi" id=yomiage playing=0>
261名無しさん@おーぷん :2017/10/20(金)16:30:50 ID:RHm
直接ソース貼れない
https://jsfiddle.net/7n8t6smh/
262名無しさん@おーぷん :2017/10/20(金)16:32:38 ID:RHm
>>260
結局削除されたな
263名無しさん@おーぷん :2018/02/14(水)09:59:32 ID:Bsw
今日はレスの末尾に♦♣の内どれか3つがつくのか
何故かスペードがない♣
264名無しさん@おーぷん :2018/02/14(水)10:27:58 ID:Bsw
ところで6ヶ月経過してない履歴がいきなり消えるのは何なんだ
古いのが全て消えてるわけではないしバグか?♣♦
265名無しさん@おーぷん :2018/02/14(水)10:30:46 ID:Bsw
履歴が消えるのは>>256なのかな♦♣
266名無しさん@おーぷん :2018/08/15(水)08:42:57 ID:akp
おーぷんしっかりしろ

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache Server at open01.open2ch.net Port 80
267名無しさん@おーぷん :2018/08/15(水)09:10:47 ID:akp
>>266
一時的なエラーじゃなくてバグっぽいな
(URL)(スペース)(ASCII文字)の並びで特定のパターンのときにエラーを吐くようだ
268名無しさん@おーぷん :2018/08/15(水)09:31:23 ID:akp
(URL)(特定の文字列) か
スペースがなくてもエラーになる

新着レスの表示 | ここまで読んだ

名前: mail:





open2chのソース
CRITEO