Navi2ch for Emacs (Part 22)
Emacsen で動く 2ch 専用ブラウザ、Navi2ch のスレッドです。
Navi2ch Project Home Page
http://navi2ch.sourceforge.net/
開発版
% cvs -z3 -d:pserver:anonymous@navi2ch.cvs.sourceforge.net:/cvsroot/navi2ch co navi2ch
過去ログ
>> ~/.navi2ch/etc.txt
> navi2ch
> http://navi2ch.sourceforge.net/log/
> navi2ch
前スレ
Navi2ch for Emacs (Part 21)
https://mevius.5ch.net/test/read.cgi/unix/1405127170/ bbsmenuを他所のカスタムBBSメニューに変更したら普通に動いた また読めるようになった。
このスレだけが頼りだわ。ありがとう。 href= に対応する値が "" で囲まれるようになったのが原因みたい
diff navi2ch-list.el.orig navi2ch-list.el
591c591
< (string-match "href=\\(.+/\\([^/]+\\)/\\)" attr))
---
> (string-match "href=\"?\\(.+/\\([^/]+\\)/\\)" attr)) href= に対応する値が "" で囲まれるようになったのが原因みたい
diff navi2ch-list.el.orig navi2ch-list.el
591c591
< (string-match "href=\\(.+/\\([^/]+\\)/\\)" attr))
---
> (string-match "href=\"?\\(.+/\\([^/]+\\)/\\)" attr)) 2chproxy.pl なしで5chを読むだけならできる ----BEGIN BASE64----(navi2ch-5ch.el.gz)
H4sICCgtf2QCC25hdmkyY2gtNWNoLmVsAKVXbW/bRgz+HGP/oF9umrNJDmTFTrsX
Q5GwFMVarOu+7FuUGLJ9tgXYZ093TruhP34k70UnxU5fltaGxCN5zz3kkXS44MuH
smaifKjG83X8Aj5rtd3EahcvShXXfMU/7ONRj7FwvhPzUrEgXags6J0xFhRFeHsZ
/3J3URRRUcjb+/RuoFdSWMonJVvXfHldBNuy2qjdBPXvi0Drg/XH5U6o2/vsbgAC
4zOdZaA2HOQgShN6gSezlmi3xrIxGjo87iGfIJyL3BmTDFAOUgcrXyu1R0SIIMgJ
SUanSJMSdo7yjmnLL8ngK9UcoP4FGaMhMdLYN09y4PlMS6INtp3xkNgJI7KPNJai
yEmaEmVtUOli4YXhvhCkQ5Io6vXCz4vsuBVZArWoHoBguS8F+GPzTSklcCUO2xmv
garHodcSP/rJY0eZnxgntii33G0AeeARZWRPJ5SfOKWz/ujz7RIu00Ey+noxwdVW
2F3eWTBfeTIgnLfxnXTjH/cJjzNOmUNnd5Q5ejCvZT5Jkhkf6jDN10PBVXKQvE5a
1zbQdNjNdb5lXlx9LjsX4mOaALqMHhBgZt/9K5eCyMHecinLleYCrVUGaexWFcAv
F9NK0HrjRJN2JAKLhSPO5vxBnEz5TSW4ZGGEKb/hasDCcF/zh2nN5VSnN7uMwFf4
6t2vN29fTccvX0//+nMqXr5uy9/88RvK37559zsT1QaXWM0VU5XacDbjK8bFgql/
9pzpW4Y7wp6rHQCZr+FShvtdJVS8rURk1t6vuWBhCXah5GUNyJe7+n1ZL8xFhYOT
+yzALZmiTekP9NXftGu4LRUY4uaXUUvhqMOizguRp8mTftGZ8QtbVEJUYoXeNWyr
pU8ezg7LJa9jeZhJVaOi4aLRrpYsvGZ5CjUHeIjLpQLStcaZc4bEjXpnZwbop3oT
mHqGY3uAz7MeN9jerys8xHG2rDfDEeYPpI+XOaE+Mrq3Ek2boWIUNSEJOdYv87zr
つづく つづき
ao4jFgQOlv0LsTpO16VcH7O5ijqC58aJ3REr0FTyabU4Yv2iozzjI7ftI+UfHymP
Tyv/1FGGTqO4UMeVf24r43X10sI/Qc33m3LObRArYV0EthDht6lsDP5BNuEf+W0c
+VlnkT3le1Zn+AF/gdX/IheIAsu0nSds3au2VBN1S5JUw6kGZ1SMv7+zU4Upxeik
KEYOA/saFOAagUQWy+20jP+9o2/sDYNr7AzQXgaEa0BjmDTtxVv4fHNT0Q34ohgX
xdX/O0JabVcwT8l6fl3oXmP6HhKZJLhaDP1mN1+DANugnRsGZhCVgyQ3zIZw8bc4
DEkp9xPyMjyXpn0Cap1KlMmQiFDMxuxRu4jgRvVcvjFSe35MbdxWUzquVClA+nXc
4B3IW+nfTVbqNY97mb53XxIBZmJwMgjwniS390Mkevizo9+b2dz0od3dPuvf9AdX
Yf+iHz8Lb+4YOpsgKUbD48QjBUtFE7lzmWb6Y5+sNWNNFdU1uCkGToWaFHXilF3i
pCBWag2tbBT50eosjiO76mCwm1eTcxmfywCNSafXBBsqnXs7Eh7ImBFr2kvkB0ef
1gzt9EL9N3L21Megx44uWGfAiU75xPkFXUoWYAiCfvFt2pcQgjT70vcAneHhWHf3
o4j8OHb1m0caByxEOjNu4s0hAkx5LRv5J6bBZg6E62kmwycHR7sXuAUjuhHVTvij
nHsuPzjd3aaSsAMh1m7cKCRgFjfxg0FMY/7mEWy4L/Fhj2kaLyGuiA2ys15JD/6h
3gAzMFeSHMeTJaWAgNQcNUJVbY1w7GkexFwLrxohnI04Cu5p+oabqktmQrc2gaX2
j4hiCKJ+0B5mzUBELZ5ZjwDVMaDBQ8yX1YfutESKNkNnO5jEWHdMaqkcnbmutAqe
6AgkqFbDF7YmBUzj8JKRWG1qSqK4VAn+QBnOV1UCAvhvzZiG6C7WGdH63Q8nMsol
bijwGmN+SOKGUeAoUOhBnw6jM1/U0EJ0gCi5y8VDBXW5hJ9PzTadZGET+IYJO0Y7
TdRJXYQY9f4D/0xnsRASAAA=
----END BASE64---- 書き込みできないのは何で?
5chのAPIって有料なの? 別に API 使わなくても書き込めるよ
現に自分は 2chproxy.pl の他にさらに自作の串挟んで書いてる
確かリクエストヘッダをちょいといじるだけ(自作だけど詳細忘れた)
まあプロバイダと板と時期(選挙期間とか)の組合せによってはダメなこともあるけど てか今は他にもいい串あるみたいだからそれ使えばいけるんじゃない?
正直 Perl スクリプトとかもういじりたくない… >>140
diffに-cも-uもつけないのはなんなんだ
最近多すぎる read.cgiの仕様が変わったんでproxyの対応を待った方が良さそう
2chproxy.plはlinux板のスレでパッチが作られてるし
proxy2chは対応したバージョンに更新されてる >>152
情報ありがとうございます。
復活しました。 そりゃAPIは変わってないんだから読めるだろ
過去ログやread.cgi経由で読む時の話だ
上にもread.cgiと書いてあるだろ ああなるほど
あんまりよく分かっていないもんですから elisp だけで 5ch を読むための navi2ch-5ch.el を書き換えた
必要な変数設定も埋め込んだ
----BEGIN BASE64----(navi2ch-5ch.el.gz)
H4sICJ4gi2QCC25hdmkyY2gtNWNoLmVsAM1YX4/bRBB/vogPsTIctXOyfcm1UE6+
RLSq2opSXpB4iO8ix94kFrETvJtrQX3hHvkUPIKQQOIb8DUQX4JvwMzser32JSlX
XrjrpevZ+fPbmdmZcVzB5TesTK7zYbr0k0rm6Yr7vExm8F+Wz+eszFdez22xrXIh
/dlMSOLaVivmLKXcnIdhwctt8CBdBiWXIXDQ81IWK2enjutklWf+cg3Lii/4602P
0Y+brss0kcyJY9fpHWmiYvHXG8nuuU5txmFOAAoDkdYrTQTzm7z8OkjXBeg4Ii1O
UCTpMoctItfPgVw7nlcbAqteHN9DSs/N+Pw6qQxsMOrjeXy59rOkhu0PehboKJMj
Qo3wJ6f+J5cnpFFMrqLLvtqJYGt8nrBlxecXsVMk+Uquz5H/KnYUP0i/ma9LObka
XfaBoHVGsxGwBf0xkKKQHmCl90KlVks2QoHBYxbjc4RzMjbCRAOU/cjAGmNYEREi
cMaEZESniMIELHvjjmhLL9HgI1I+QP4TEkZB8kgj36xE39IZJeQ2MDvjLnnH9Uje
U1jieEzUiFzWBhVlmRWGq7gkHqLcIbLDVmQJVJZfg4PFJilBH0tXiRDgq3JbzHgF
rrodekWxox/eVjSyE2OPiaTgxgDkgeUoTTucUHbiJEb6je1vk3AjFSTNrzZD3G2F
3eRdDeYdTwYO5218e9XYxz2gccYpc+jsxmXGPZjXYgwFa8YDFSZds7aCV2Hr2jrK
HbVxlW8jK662LzsX4k0UAroRLRDgqH62r1wEJAO74EIkC+ULlJYjSGOzKwF+kk3z
kvYbJcppOyKQZcZxd8j5s1bO66bAIH/h2LUrMy4hxQRbb3hp8G2wki8BonURIrEt
iqT61jyCH1oCeaYib1yufbWPH0Okb0L7Drw9+63wkMsoqVXN0KV0fO7+9dsfv/7+
FVOlxgMTassbd6GpygukAwdsJXadBC2OLZ2/Tvu2+v9foh+8mKbyhjo7jEt4KvN1
J08gwSSHJtW69prTVBOdfCPTjLfl3uxd5SUXzPUwe1dc9pnrbip+Pa24mKrqzE6x
ybtPXn766MWT6fDxs+mXX0zLx8/a9OefP0X6i+cvP1PTD0CpuGQyl3ANZnzBeJkx
dVc8mljcxRowpEu4Wu5mnZfSL/LS03uvlnBD3AREYAJKKgA9X1evkirT1w2OSZpH
Dlpj0swhTE1MaNAtEgmCaPfUazHsVBhX47iEdDuoF5VpvWAiL8u8XKB2r2dzqUO7
つづく つづき
s+18zitfbGHqq5BRu6HhzufMvWDjCCoH+MFP5hL8rTiOamUa39uGKZC4C/8Q+dH8
bm/USiwf2PHa4YG7Aj6znPZqmaO//hUUzFJIUis/XeVd1F9TFD7t9YHXRN/lWOb0
et3lHHrMcQys+sfFwjldJmK5S+bM6xDuayW1RaxmU8GnebZD+kGHecYHxuwt5o9u
MQ/3M3/cYdaVYzfzwzYzFgUroPYJKr5ZJSmvo5iXtQrHLtS6KjL4xbcI/SJhKbLz
pXHvQe3jSTK7RJ1OI2GrqQ94SMmsGuEfKdH8d1JBr0QODthqdq9rc17Q/KEanqA2
Qm2AWvTVh5f1BK/HHlQSxwODgb0LClCNQLway2Sa+N9d0ie2p/4FNifocH3C1afG
K3SHszb+vbienjT4OB7G8dl/O0KUFwt4dxFVehGr1q1bLzoyDHE3Dux+my6BgJ24
nlL6+qVP9MOx9qwL9aPAIUwIga/XoCU4FrqDA2qVkXQhIJ+h/A7Zrd7mwcXsmbRl
xHZ/F9uwzSZVXKngAPXdfEPJ3rpF3WSl7ni78eo6fYcIMB2DvUGA5zCcXAXo6OCh
cb81IZoBSKmb3Pz0w9Obn29+uWT09Qa6Q+9Z3rDcgbWmidmxiEbqr16ZryGsOqGK
eFNNDAt1NJoaInaKA025kEtouwPPjlNnc+jVuwYGe/Tk/Fj4x8JBYeLpNWGGUmme
dgQGcmXAmv7k2WFRp9WvCfRAs4Jn5KkRwjwwOGGdOczbpxPHLFQpmHPz482f309u
/o5Gh1cOCuEhWNfKTst2vLr8zRLUNVDobGjEavMliPJKNPS3DKfNWAoXUA+qB+fY
2haoBSHKeZygrfHSrJPXhneNX6sxMsCUGjOelTDw6zjBcKgwv3cLNtwIf7vBdPTn
ED/EBllYLYQFH7/wc1OYnYiOc8ycQl1CCg4aoswLTRxanNsyVcSzhghnIx85V/Qm
AHdRFcWQ7mUIW+03lTgA0gdOe8DWkxPNAqzWCFCNBxR4iPk8f90dq4ixzsTZGkY2
1p2nWiw7h7MzxYIn2gEJ6hF+ZamqjsMUDisZyatN7QglFzLE1/0gXeQhEOBfLcYU
RHOBjsit79/bk1Emcd0SryvmhyDfMAocBQo1qNNhdNKsgiahAkTJnWTXOVTeJMss
M51kYefwCVO/j3LKUXt5EaLX+wfxp+LSfhYAAA==
----END BASE64---- >>157
いただいたファイルを ~/.emacs.d/elpa/navi2ch-20200130.36/navi2ch-5ch.el に置いて、
emacs-28.2 -q で起動した後
(when (require 'package nil t)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(package-initialize))
(eval-after-load "navi2ch"
(load "navi2ch-5ch"))
を評価して M-x navi2ch しても板一覧が取得できないのですが、何か他に設定が必要でしょうか? >>159
>>140 の変更が必要かな?
他にも*.elファイル中でhttp:決め打ちになってる所をhttps:に変更する必要があるかも Navi2ch完全ふっかああああぁつ!!wwwwwww 書き込みの規制めっちゃ緩くなってるね
いったいどうなってるんだ、いや別に悪いことじゃないんだけど
またすぐ荒らしが来て規制されるのかなあ
スレチスマソ 10年ぶりくらいにnavi2ch使ってみた。書き込めるかな
(setq navi2ch-list-bbstable-url "http://menu.5ch.net/bbsmenu.html") でカテゴリーはとってくるけど板一覧が持ってこれない。
とりあえずスレのURLをChromeで探して直接開いて読んでいるw その1
diff --git a/navi2ch-list.el b/navi2ch-list.el
index 4188735..a2e8cad 100644
--- a/navi2ch-list.el
+++ b/navi2ch-list.el
@@ -567,7 +567,7 @@ changed-list は '((board-id old-board new-board) ...) な alist。
(let ((board-id (cdr (assoc url navi2ch-list-board-id-alist))))
(or board-id
(save-match-data
- (if (string-match "\\`http://.+/\\([^/]+\\)/\\'" url)
+ (if (string-match "\\`https?://.+/\\([^/]+\\)/\\'" url)
(match-string 1 url))))))
(defun navi2ch-list-make-board-txt ()
@@ -590,7 +590,7 @@ changed-list は '((board-id old-board new-board) ...) な alist。
(if (string-match "a" tag)
(let (url board-id id u)
(when (and (not ignore)
- (string-match "href=\\(.+/\\([^/]+\\)/\\)" attr))
+ (string-match "href=\"?\\(.+/\\([^/]+\\)/\\)" attr))
(setq url (match-string 1 attr))
(setq url (or (cdr (assoc
url
@@ -624,7 +624,7 @@ changed-list は '((board-id old-board new-board) ...) な alist。
(defun navi2ch-list-valid-board (uri)
(save-match-data
- (when (string-match "http://\\([^/]+\\)/\\([^/]+\\)/" uri)
+ (when (string-match "https?://\\([^/]+\\)/\\([^/]+\\)/" uri)
(let ((host (match-string 1 uri)))
(and (not (string-match navi2ch-list-invalid-host-regexp host))
(string-match navi2ch-list-valid-host-regexp host)))))) その2
diff --git a/navi2ch-multibbs.el b/navi2ch-multibbs.el
index 8e49f28..d1ef831 100644
--- a/navi2ch-multibbs.el
+++ b/navi2ch-multibbs.el
@@ -345,7 +345,7 @@ START, END, NOFIRST で範囲を指定する"
;;;-----------------------------------------------
-(defsubst navi2ch-2ch-subject-callback ()
+(defsubst navi2ch-2ch-subject-callback (&optional args)
(when navi2ch-board-use-subback-html
(navi2ch-board-make-subject-txt)))
@@ -525,7 +525,7 @@ START, END, NOFIRST で範囲を指定する"
'equal)))
(navi2ch-cache-get
(cons uri file-name)
- (cond ((string-match "http://\\(?:[^@/]+@\\)?\\(.+\\)" uri)
+ (cond ((string-match "https?://\\(?:[^@/]+@\\)?\\(.+\\)" uri)
(navi2ch-expand-file-name
(concat (match-string 1 uri)
file-name))) その3の1
diff --git a/navi2ch-net.el b/navi2ch-net.el
index dc11ec5..972c97f 100644
--- a/navi2ch-net.el
+++ b/navi2ch-net.el
@@ -228,7 +228,8 @@ nil なら常に再接続する。")
host (cdr (assq 'host list))
file (cdr (assq 'file list))
port (cdr (assq 'port list))
- host2ch (cdr (assq 'host2ch list))))
+ host2ch (cdr (assq 'host2ch list))
+ rest (cdr (assq 'rest list))))
(when navi2ch-net-http-proxy
(setq credentials (navi2ch-net-http-basic-credentials
navi2ch-net-http-proxy-userid
@@ -257,11 +258,8 @@ nil なら常に再接続する。")
(setq proc nil)
(unless (navi2ch-net-down-p host)
(condition-case nil
- (if (string-match "^https://" url)
- (setq proc (funcall 'open-tls-stream
- navi2ch-net-connection-name buf host "443"))
- (setq proc (funcall navi2ch-open-network-stream-function
- navi2ch-net-connection-name buf host port)))
+ (setq proc (apply navi2ch-open-network-stream-function
+ navi2ch-net-connection-name buf host port rest))
(error (navi2ch-net-add-down-host host)))))
(when proc
(with-current-buffer buf その3の2
@@ -304,6 +302,10 @@ nil なら常に再接続する。")
(navi2ch-net-cleanup-vars)
(setq navi2ch-net-process proc))))
+(defun navi2ch-net-split-url-scheme-to-rest (scheme)
+ (if (string-prefix-p "https:" scheme)
+ '(:type tls)))
+
(defun navi2ch-net-split-url (url &optional proxy)
(let (host2ch authinfo user pass)
(string-match "https?://\\([^@/]+@\\)?\\([^/]+\\)" url)
@@ -324,16 +326,21 @@ nil なら常に再接続する。")
(cons 'host (match-string 2 proxy))
(cons 'file url)
(cons 'port (string-to-number (match-string 3 proxy)))
- (cons 'host2ch host2ch)))
- (string-match "https?://\\(?:[^@/]+@\\)?\\([^/:]+\\)\\(?::\\([0-9]+\\)\\)?\\(.*\\)" url)
+ (cons 'host2ch host2ch)
+ (cons 'rest (navi2ch-net-split-url-scheme-to-rest (match-string 1 proxy)))))
+ (string-match "\\(https?://\\)\\(?:[^@/]+@\\)?\\([^/:]+\\)\\(?::\\([0-9]+\\)\\)?\\(.*\\)" url)
(list
(cons 'user user)
(cons 'pass pass) - (cons 'host (match-string 1 url))
- (cons 'port (string-to-number (or (match-string 2 url)
- "80")))
- (cons 'file (match-string 3 url))
- (cons 'host2ch host2ch)))))
+ (cons 'host (match-string 2 url))
+ (cons 'port
+ (if (match-string 3 url)
+ (string-to-number (match-string 3 url))
+ (if (string-prefix-p "https:" (match-string 1 url))
+ 443 80)))
+ (cons 'file (match-string 4 url))
+ (cons 'host2ch host2ch)
+ (cons 'rest (navi2ch-net-split-url-scheme-to-rest (match-string 1 url)))))))
(defun navi2ch-net-http-basic-credentials (user pass)
"USER と PASS から Basic 認証の証明書 (?) 部分を返す。"
@@ -999,7 +1006,7 @@ This is taken from RFC 2396.")
"BBS_\\(TITLE_PICTURE\\|FIGUREHEAD\\)=\\(.+\\)" content))
(setq src (match-string 2 content))
(let (url file)
- (setq url (if (string-match "http://" src)
+ (setq url (if (string-match "https?://" src)
src
(navi2ch-board-get-url board src)))
(string-match "/\\([^/]+\\)$" url) なんかタブが潰れたり文字参照になってたりなので、gzip + base64
H4sICC0QsmQAA2RpZmYtMjAyMzA3MTYudHh0ALVYbXPaOBD+DH+hX3Qcc9gHIkBIAum0SdMmbXqd
ppOkNzct1zthC3BjbGKLJp25H3+7K9v4DUKmUyatQdpd7WqffbSy7UwmjPOpo5jY8cQ3p2fNuOuE
qi1dNs6PVB3Plves3x0MDnb32m3RkwNL2Kzb6ez3+1XOedFKtdlsllg6PmZ8b/+gdcCa+gED1kx4
U2mTDHtSP6lfPDFOWMMwxr4IbO7YzHdtTj+YJ+/0N5O1222TxN+iuEBt+PXLr0+qjDHDlYqlLBiW
HTBDhKFvsWXgsrRfPJbiZMSED5oAI37A4rkqqxih+Cb5XCjQs4USVV4BGWfCjFAFjjfVU6w2Gv07
U2pxuLPTbu6MRsbnLzt/N0cjE743ari6WW1u1AyPNumyCtPeaU+0BdalSVM7X2WGLSdLLxvmXNzI
KFZ1D7tj6mwMO5QNevyUbJTHKmpMiWkqHMoY5iZZCP6WKFAx7mbSg/R5kEjPV8yZen4gTUhABbVz
lmeBnDyDvSvsoFljQqnAxP1fr1g72qzLUNUIpbolJOXTsEYKoJTCIE5XosBhmhKx3+tjIvTjpySi
HBbfQCa2A/vvEPiLWKcc6Tzkdk1jPbtdq++IWrDZ3KhPiH/AAkvjxJj5sCvFEnAI/5UVVLKLZQJ3
PB06muKBnMr7BcPvZgLKDcrrVKkA7TJ6nS9d5YzHYZZiU6MRzQ5kfzjpDdptuysng91uOc2m9bJU
m55BXO329xBX+gEDV9cvLq9b7PT9qxZ7f3F2fnl1TXh5/eaic1EPnv716mt9WL8B9NQQMk+fPuWP
+4AWR6CFyzHkKHYL/8HIV2kpbgnXHQvrBjmoua3ob/5COb4nXCaCaahRSniK1XRdLEOJyqjDZ2ru
RlSeFSIqjJcAMtSsSXTYo93Sj8fuVlzUDXm7FG5yjqSWt4Q1k3wqVTwDrOB7ISKXTRxXck/MkdhS
kwDktRV3dPj5yzGUyTHUiaYtYqpVxW20EVfdJisJPccRANShuHjibCJBC1mivCo1H9JnFea6SvFk naota さんのやつにパッチ当てようとしたら結構リジェクトされた…。 curl -s https://pastebin.com/raw/0LMurnzK | tr -d '\r' | patch -p1
でいけたサンクス navi2ch-5ch.elも修正してた
(defun navi2ch-5ch-html-to-dat ()
↓
(defun navi2ch-5ch-html-to-dat (&optional dummy) 誰かパッチまとめて新しいレポジトリたてて(他力本願) 板一覧をjsonで取得する事にした
navi2ch-5ch.elはdatの代わりにhtml取得してdatに変換するもののように思える。
datを直接取得が復活してのでいらなくなったはず(navi2ch-5chを使わないでも読めてる)
https://pastebin.com/d8fh3ghq
>>183
それはめんどい
>>184
サンクス、なおした
パッチに日本語部分も含まれてるのでコード変換が必要
↓でどーぞ
curl https://pastebin.com/raw/d8fh3ghq | iconv -f utf-8 -t iso-2022-jp |tr -d '\r' |patch -p1 Location: を解釈できないので、navi2ch-list-bbstable-url も設定しないといけないっぽい。 defconst navi2ch-list-bbstable-default-url
"https://menu.5ch.net/bbsmenu.json")
になってるから、そっちから読むはずだけど、navi2ch-list-bbstable-urlをカスタマイズしてhttps://menu.5ch.net/bbsmenu.htmlにしてない?
htmlからの読み込みは試してない、これから試してみる どれにどのパッチを当てたらいいのかわからなくなってきた\(^o^)/オワタ >>188
ああっ、よかった仲間がいた
どこをどう弄って動かしてたんだか、記憶から完全に飛んでる >>190
github.com/naota/navi2ch.git
のソースに
>>185のパッチを当てればいいみたい 久しぶりにnavi2chで2ch(5ch)が読めるようになりました。ありがとうございました。 (setq navi2ch-open-network-stream-function 'navi2ch-open-network-stream-via-command)
(setq navi2ch-open-network-stream-command "nc %s %s")
するとうまく動かないのは何でだろうね。本当は ssh -D1080 で socks したいが、socks 外してもうまく動かない…。 Symbol' s function definition is void: json-parse-string json-parse-stringの存在確認も必要なのか…
ちょっとすぐにはパッチ作れ無いのでjson-parse-stringが使えない場合はbbsmenu.htmlを指定してオクレ >>193
proxy使う環境がないので、未検証だった
ssh先でopenssl s_clientやnc -sslとかするのかな
週末までいじる時間取れない スマン >>196
ダイナミックポートフォワーディングだと、いろんな接続先あっても毎回接続し直さなくて済むのよ。
ssh -fN -D1080 どっか
nc -x127.0.0.1:1080 -X5 5ch.net 80
GET / HTTP/1.0
でうまくコネクション切ってくれないのが原因ぽい気がするけど、cloudflare 側の問題かな…。 コネクション切れないのは nc の問題だった…。
https://github.com/larryhou/connect-proxy 入れて、
(setq navi2ch-open-network-stream-function 'navi2ch-open-network-stream-via-command)
(setq navi2ch-open-network-stream-command "connect -R remote -S 127.0.0.1:1080 %s %s")
でもだめで、
(defun navi2ch-net-send-request (url method &optional other-header content)
(message "Now connecting...")
(setq proc nil)
(unless (navi2ch-net-down-p host)
(condition-case nil
(setq proc (apply navi2ch-open-network-stream-function
navi2ch-net-connection-name buf host port rest)) ←このへんでエラーになっているっぽい。
(error (navi2ch-net-add-down-host host)))))
Error: Wrong number of arguments: (lambda (name buffer host service) (let ((command (cond ((stringp navi2ch-open-network-stream-command) (format navi2ch-open-network-stream-command host service)) ((functionp navi2ch-open-network-stream-command) (funcall navi2ch-open-network-stream-command host service))))) (apply #'start-process name buffer (if (stringp command) (list shell-file-name shell-command-switch command) command)))), 6 最近の open-network-stream は TLS 対応なのね。やっとおっしゃっている意味がわかりました…。 ネイティブコンパイラがこけていることに気付いてハマってました。
https://pastebin.com/gWiBJv1i
>>185からの変更点
1 >>193 socks使う場合に対応
2 >>194 json-parse-stringがない場合のデフォルトをbbsmenu.htmlにした
3 バイトコンパイル、ネイティブコンパイルのコンパイルエラーの修正
* このパッチで修正されること
open-network-streamがTLS接続をサポートするようになり、tls-open-streamが利用できなくなっていたので、
httpsを積極的に利用する事にしました。(https:はhttps:のまま取得するように変更しました。
変数navi2ch-net-http-proxyや環境変数HTTP_PROXYでプロキシサーバーを使う方法は利用できません。
外部コマンドを使用してご利用ください。
ネイティブコンパイラのコンパイルエラーを回避するために、相当量の修正が必要でした。
(ネイティブコンパイラがエラー終了すると、ロードのたびにコンパイルしなおしているようだ)
SSL接続して、HTTP/1.0ではプロトコルエラーになるっぽいので、全部HTTP/1.1で接続します。
navi2ch-net-enable-http11はkeep-aliveを使用するフラグに変更になりました。(これを指定するとうまく動作しませんでした)
* 外部コマンドでの利用
navi2ch-open-network-stream-via-commandがコマンドを生成する際に、http:からダウンロードする場合は3番目の引数としてnilが渡されます。
socks4+ncatでの利用例(かなり強引) ncatはnmapの付属品です。
(setq navi2ch-open-network-stream-command
"unset ssl sslsw; host=\"%s\";port=\"%s\";ssl=\"%s\"; if [ ${ssl:-nil} != nil ]; then sslsw=\"--ssl\";fi; ncat --proxy localhost:1080 --proxy-type socks4 $sslsw $host $port")
(setq navi2ch-open-network-stream-function
#'navi2ch-open-network-stream-via-command)
この設定でスレの表示、書き込み、イメージの表情は軽くテストしました。
↓でどーぞ。patchの-lをつけないとリジェクトされます。
curl https://pastebin.com/raw/gWiBJv1i | iconv -f utf-8 -t iso-2022-jp |tr -d '\r' |patch -p1 -l >>200
神
もしかしてオリジナルの作者さんですか!? >>200ってどれに当てれば良いのかな?
>>185を当てた上で当てるのかな?
ついて行けてない >>204
有難うございます
melpaはほとんど使ったことありませんでした
トリ配布よりこちらを使うのが最近は流行りなんですかね >>200のパッチと>>124のhttps://→http://、bbstableをhttpで指定の三つで、
NTEmacs 24.5上でもNavi2chが復活! XPにもNavi2ch入れたくなるw
(NTEmacs 24.5でTLSをうまく動かせなかった) >>204に>>185のパッチを当てて読むのはできるようになったのですが
書き込みをしようとすると
ERROR: 投稿時の認証用クエリがありません
と言われて書き込みできません
i.imgur.com/vkLdOe3.png
どこをなおせばいいのでしょうか? >>207
>>204に改良の加わった>>200のパッチをあてましょう 誰かいるかな?
いまスクリプト攻撃を回避するのに絵文字を使おうという方向になってるんだけど
Navi2chはSJISしか投稿できないでしょう
投稿のエンコードを行ってるファイルがどれか判る人いる?
山下の旧運営がエンコードでブラウザを弾いてきたときもここで詰まってしまった
2ちゃんねる専用ブラウザが重大?なHTTP/HTMLの規約違反をしているかもしれない
https://blog.3qe.us/entry/2013/12/09/031713 >>209
投稿は navi2ch-multibbs.el 内の navi2ch-2ch-send-message
その中に
(coding-system (navi2ch-board-get-coding-system board))
とかあるから辿ればいいんじゃない? >>210
即レスありがとう
ファイル総当りで探してみる
当分誰も来ないと思ってたから驚いたw なんか板一覧が盛大に文字化けして大量の「&#65533;」(実際は半角)が
これ多分 Unicode の U+FFFD だと思うんだけど、コーディング誤認識してる?
>>209 の件と関係あるんだろうか
あと俺環だったらスマソ bbsmenu 読み直したら直ったわ
スレ汚しスマソ >>209-210
の件、まだ途中だけど備忘録に
~/.navi2ch/init.el
;; navi2ch-board-get-coding-system @navi2ch-board.el
;; navi2ch-board-coding-system-alist @navi2ch-vars.el
(navi2ch-auto-modify
(setq navi2ch-board-coding-system-alist
'(("livegalileo" . "utf-8"))))
とするとコーディングが指定できるらしい
BOARD-IDはダブルクオート必須、CODING-SYSTEMは utf-8 だけでなくshift_jisも不可
EmacsはUnicode対応版で設定済みだけれどエラーになる
単に書式の問題かコーディングファイルを書き換える必要があるのかは調査中 CODING-SYSTEM のほうは文字列じゃなくてシンボルを設定するんだよ。
だからダブルクオートで括っちゃダメで、シングルクオートを前置しないといけない。
'shift_jis みたいに。 ごめん、コードちゃんと見てなかった。
そのコードだともう外側でクオートしてるから、シンボルをクオートすると二重になっちゃう。
何も付けずに、単に shift_jis とか書かなきゃいけなかった。 >>216
ありがとう
Unicodeを選択するとサマリーが全て文字化けする…
そもそも読むだけならUnicodee(絵文字)混交で読み込んでるしなぁ
送信だけ変更するには別の関数を探さないといけないのか 過去ログがなんか取得できなくなってない?
Prxy2chでウェブスクレイピングしようとしたら現行スレも取得できない
少し前まで現行スレはダイレクト接続、過去ログはPrxy2chと使い分けてたんだけど
ウェブブラウザでは見られるんだよね
スタンドアロン版html2dat(.exe)があればどうにかなるのに 「DAT関連の設定」→「個別設定」→
「差分取得を許可する」
「スレッド途中でDAT落ちなら最終行に追加する」
を許可したら過去ログも読み込めた
こりゃまだまだproxy現役だな 特定の板やスレだけ過去ログを取得できない、あるいは取得しづらくなってる
http://greta.5ch.net/test/read.cgi/poverty/1697461053
ダメなスレは何度やってもdatが取得できない
HTTPヘッダーの環境変数を見て弾いていると思われ
https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
回避策としてNavi2chに、本来無用な環境変数を与えてみた
これで失敗( not found )したことはない
~/.navi2ch/init.el
(defadvice navi2ch-net-send-request (around navi2ch-net-send-request-ad activate)
(or (assoc "User-Agent" other-header)
;; cf. https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
(add-to-list 'other-header (cons "Accept-Encoding" "gzip, deflate"))
(add-to-list 'other-header (cons "Accept-Language" "Accept-Language: en-US"))
)) >>215
> いまスクリプト攻撃を回避するのに絵文字を使おうという方向になってるんだけど
って、❤😍とか書ければ良い? 絵文字は dat だと文字参照になってるのよね
だから普通に文字参照で投稿すればいいだけじゃないのかと socks.elなるものがemacsに同梱されてたので、これを使うように改造中。
>>221
http://greta.5ch.net/test/read.cgi/poverty/1697461053
のdatを取得しようとすると、not foundだ
過去ログって、無課金で取得できるん?
VERBOSE GET /poverty/dat/1697461053.dat HTTP/1.1
VERBOSE MIME-Version: 1.0
VERBOSE Host: greta.5ch.net
VERBOSE Connection: close
VERBOSE User-Agent: Monazilla/1.00 Navi2ch
VERBOSE Accept-Language: en-US, ja
VERBOSE Accept-Encoding: gzip, deflate
INFO HTTP/1.1 404 Not Found
VERBOSE GET /poverty/kako/1697/16974/1697461053.dat.gz HTTP/1.1
VERBOSE MIME-Version: 1.0
VERBOSE Host: greta.5ch.net
VERBOSE Connection: close
VERBOSE User-Agent: Monazilla/1.00 Navi2ch
VERBOSE Accept-Language: en-US, ja
VERBOSE Accept-Encoding: gzip, deflate
INFO HTTP/1.1 404 Not Found パッチキットをpastebinに貼ろうとしたら、オメーのは攻撃的だからパブリックにはできねーとか言われた。んだもんで、paste.fo
* >>185からの変更点
** >>193 socks使う場合に対応
** >>194 json-parse-stringがない場合のデフォルトをbbsmenu.htmlにした
* >>200からの変更点
** socks直接サポート
** ビルドシステムをmesonに変更 meson,ninja,python, texinfoにパスを通しておいてください。
** 投稿時に、SJISにはない文字を数値文字参照に置換
** oysterから過去ログ取得
** 絵文字対応 SJISに無い文字は数値文字参照に置換します
** thumbnail改良(https:やimepicの増強などに対応)
** h抜きは使えません。
* ソースの取得 gitかzipのいずれかで取得
1 gitでclone
https://github.com/naota/navi2ch.git
2 zipを取得
https://github.com/naota/navi2ch/archive/refs/heads/master.zip
* パッチの適用
展開したソースのトップディレクトリにcdして以下のコマンドでパッチを適用します。
パッチに日本語部分も含まれてるのでコード変換が必要です。
curl -s -L https://paste.fo/raw/6d276a82fc52 | iconv -f utf-8 -t iso-2022-jp |tr -d '\r' |patch -p1 -l
* ビルド, インストール
meson setup builddir
meson compile -C builddir
meson install -C builddir
トップディレクトリのrel-note.txtにもう少し詳しい変更点があります。 autotools死ね死ね団に入団、h抜き死ね死ね団にも入団と書いたのが不味かったのだろうか
何回か試行錯誤したらアドレスでBANNされた
別のところ(past)はXXXを削除しろとか言われるし
.strip() かな? 削除したら動かねーんだよ
と言うわけで寛容なpaste.foに貼れた。rawじゃない方は
https://paste.fo/6d276a82fc52 meson初めて知った
何が変わったか実感することはないがとりあえず動いてる >>223
参照文字のコードで&#127994;(メタ表記、&と#は本来半角)と投稿すると
&amp;#127994;
に置換されてしまう
どれかのウェブブラウザで投稿できた気もするけど、試してみた範囲で同じ結果だった
これは投稿のコーディング選択だけで片付く問題じゃないね パッチが大きくなったので、公開リポジトリを作った
* インストール
https://repo.or.cz/navi2ch.git
cloneして
meson setup builddir
meson compile -C builddir
meson install -C builddir
* autoload, infoの設定
.emacs.d/init.elに以下を追加
(load "~/.emacs.d/lisp/navi2ch/navi2ch-autoloads")
使い方(新規機能)
* socks
変数navi2ch-socks-serverにsocks5://[user[:password]@]hostname[:1080]の形式で指定
* 画像
画像URLっぽい文字列に上で、「,」でプレビュー
プレビューしたサムネイルの上でRETで閲覧(初回は外部/内部ビューアの選択)
内部ビューアを選択するとemacsの中でimage-modeで閲覧。Qで終了。
* 絵文字
CP932で表現できない文字は数値文字参照に置換する。つまり🏺と直に書けば良い。 書き忘れていました
navi2ch-net-5chdat-downgrade-to-http
*non-nilかつnavi2ch-net-http-proxyがnon-nilの場合5chのdat取得の際は強制的にhttpでデータを取得する。
proxy2chのようなHTML -> dat変換を行うプロキシを使うときに指定します。
あと、昨晩サムネイルのバグを修正してpushしました。
内部ビューアの終了がQだと間違えてqを推した時にバッファが残ってしまうので、qで終了に変更。 mesonというコンパイラは初めて知った
導入する余裕がない人向けに弥縫策
1) Detour2ch/Prxy2chを起動
2) 「通信」→「書き込み関連の設定をする」→「パラメータ」
「パラメータの置換を許可する」をチェック
Accept: text/html
Accept-Language: ja
Referer: http://www.5ch.net/
を追加
http://egg.5ch.net/test/read.cgi/software/1605104188/159
3) 「メイン」→
「読み込み」「書き込み」にチェック
522エラーが発生しないスレは、古いNavi2chでもログの取得が可能になる
プロキシを通した書き込みも「リファラが変です」エラーは出なくなる…はず