したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

スクリプト#3 @避難所

1名無しさん@避難所:2019/08/17(土) 04:06:55 ID:/RfgUwQc0
スクリプトに関する話題なら何でも

V2C使用法[スクリプト]
ttp://v2c.s50.xrea.com/manual/script.html

V2Cwikiにもスクリプト関連の情報があります
ttp://v2c.kaz-ic.net/wiki/?%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88

■前スレ
スクリプト#2 @避難所
https://jbbs.shitaraba.net/bbs/read.cgi/computer/43680/1433054157/

41名無しさん@避難所:2019/09/03(火) 13:01:53 ID:wB57hml20
https://www.instagram.comにアクセスするときは
Request HeadersにCookie設定しないで
Form Dataでユーザー情報を渡してるみたいだけど
V2Cだとどうやってアクセスすればいいんだ?

42名無しさん@避難所:2019/09/03(火) 14:38:22 ID:RryWoQG60
HttpRequestオブジェクト
createHttpRequest(java.net.URL u,String d)
URLuに対してデータdをPOSTするHttpRequestオブジェクトを作成する。(dはそのまま送信されるので適切にencodeされている必要がある。)

のdでjsonを飛ばすしかないんじゃないの?

43名無しさん@避難所:2019/09/03(火) 15:48:59 ID:wB57hml20
https://www.instagram.com/?Form Data=access_token=…
をURLエンコードでつなげればいいみたい

44名無しさん@避難所:2019/09/03(火) 16:32:39 ID:wB57hml20
やっと出来た
原因がわかったCookieを読み込む処理を読んでないバグだった
Cookieが空白なら失敗するに決まってる
いろいろ勉強になったからいいか

45名無しさん@避難所:2019/09/05(木) 12:38:40 ID:d0ZYGpxw0
>>38
これは投稿時間でソートしてないので
タイムスタンプを終了判定に使えない
DATファイルに存在してるかで判断するしかないので処理に時間がかかるが
これで規制を回避して更新チェックができるようになった

46名無しさん@避難所:2019/09/07(土) 11:11:43 ID:KejHdGyo0
[0][node][taken_at_timestamp]
[1][node][taken_at_timestamp]

このjson配列をtaken_at_timestampでソートする場合
下の関数に添字とか入れても動きそうにないから
[node]の下の子ノードで配列作り直してソートするしかないのかな

//. 比較関数
function compare( a, b ){
var r = 0;
if( a.age < b.age ){ r = -1; }
else if( a.age > b.age ){ r = 1; }

return r;
}
myArray.sort( compare );

47名無しさん@避難所:2019/09/07(土) 12:45:41 ID:KejHdGyo0
これを使えばいいのか
mapがなんなのかもわからん

Sorting maps
一時的な配列に実際にソートに使用する値を抜き出して、その一時的な配列をソートし、 一時的な配列から元の配列を正しい順序で取得します。

// ソート対象の配列
var list = ["Delta", "alpha", "CHARLIE", "bravo"];
// 一時的な変数mapへ位置とソート順の値を保持します
var map = list.map(function(e, i){
return {index: i, value: e.toLowerCase()}
})
// 減算値を使用してmapをソートします
map.sort(function(a, b) {
return a.value > b.value ? 1 : -1;
});
// 結果の順序を反映して取得します
var result = map.map(function(e){
return list[e.index]
})

48名無しさん@避難所:2019/09/07(土) 12:59:35 ID:D2G.Ujc20
[node]の下に[taken_at_timestamp]が一つしかない、かつ他のnodeのtaken_at_timestampと内容が重複しないなら

var 連想配列 = {}
連想配列[[0][node][taken_at_timestamp]] = [0]
連想配列[[1][node][taken_at_timestamp]] = [1]

でtaken_at_timestampをキーにした連想配列にして
それをソートすりゃいいんじゃね?

https://www.sejuku.net/blog/27965

49名無しさん@避難所:2019/09/07(土) 14:23:30 ID:KejHdGyo0
java rhinoのjavascriptにはDOMがないから検索の面倒な処理をしてたのか
javaならDOM操作が出来るからjavaを使えばいいのか

50名無しさん@避難所:2019/09/07(土) 15:51:15 ID:KejHdGyo0
java8にrhino-1.7.11.jarを入れてみたが
エラーになったり変な動作したりして使えなかった

51名無しさん@避難所:2019/09/07(土) 15:55:58 ID:smCQbhXI0
そもそもあれは7に入れるようのものだから競合して当然だよ

52名無しさん@避難所:2019/09/07(土) 16:03:19 ID:4T9WhHBo0
ソートされたnodeが欲しいなら>>46でいいじゃない何を無駄に難しくしてるんだ

53名無しさん@避難所:2019/09/07(土) 20:28:52 ID:D2G.Ujc20
V2C-R 2.11.8とその派生はRhinoと相性が悪い

54名無しさん@避難所:2019/09/08(日) 11:19:15 ID:xWlPuNsQ0
上手くいきそうだけどHTMLが完璧じゃないとエラーになる

var factory = javax.xml.parsers.DocumentBuilderFactory.newInstance();
var documentBuilder = factory.newDocumentBuilder();
var document = documentBuilder.parse(Url);←67行目

var root = document.getDocumentElement();

//ルート要素のノード名を取得する
v2c.alert("ノード名:" +root.getNodeName());

67行目org.xml.sax.SAXParseException: The element type "img" must be terminated by the matching end-tag "</img>".

javaソースだとこれが指定されてるけどなんか関係あるのかな
public void domRead(String file) throws SAXException, IOException, ParserConfigurationException

55名無しさん@避難所:2019/09/08(日) 12:48:49 ID:xWlPuNsQ0
https://jsoup.org/download
これでhtml読めそうだからやってみるか

56名無しさん@避難所:2019/09/08(日) 15:20:56 ID:xWlPuNsQ0
>>55
これ使ったら成功したみたいだが
ドキュメントがわかりにくいのとサンプルプログラムがないから
子ノードを配列にしてfor文で回すのがわからん
javaのlib/extフォルダにjarを入れとけば設定なしで使えたので助かった

var document = org.jsoup.Jsoup.connect("http://www.babymetal.com/jp/&quot;).get();
v2c.alert(document.title());

57名無しさん@避難所:2019/09/08(日) 17:23:50 ID:xWlPuNsQ0
var document = org.jsoup.Jsoup.connect("http://www.babymetal.com/jp/&quot;).get();
var elements = document.getElementById("news_list");
var newurl = elements.getElementsByTag("li");
v2c.alert(newurl.html());

<a href="http://www.toysfactory.co.jp/artist/babymetal/metalgalaxy20191011 " target="_blank">
urlを抜き出したいが上手くいかない
もう少しでどうにかなりそう

58名無しさん@避難所:2019/09/08(日) 18:18:36 ID:xWlPuNsQ0
javaだとこのfor文使えるが
for (Element element : allElements)
javascriptのfor( of )はオブジェクトに使えないから次が読めない
困った
javaのfor文を使える裏技ないのかな

59名無しさん@避難所:2019/09/08(日) 18:48:54 ID:xWlPuNsQ0
>>58
html化にして\nで区切って配列にして
for文で一行ずつ再オブジェクト化したら
URLを抜き出せた
var array = newurl.html().split('\n')
for(var i = 0; i < array.length; i++) {
var doc = org.jsoup.Jsoup.parse(array[i]);
var doc2 = doc.getElementsByTag("a");
var attr2 = doc2.attr("href");
}

間抜けだけどしょうがない
matchで抜き出すよりはこっちの方がスマートだな

60名無しさん@避難所:2019/09/08(日) 18:53:06 ID:epth1PWU0
newurlはliが複数あるから配列で帰ってくると思ったんで

for(var i=0; i<newurl.length; i++){
 var elm = newurl[i];
var a = elm.getElementByTag('A');
}
とかで抜いてキャいいんじゃね?

#2年くらい作ってないんで全部記憶

61名無しさん@避難所:2019/09/08(日) 18:57:00 ID:xWlPuNsQ0
>>60
newurl.lengthはundefinedでダメだった

62名無しさん@避難所:2019/09/08(日) 19:20:14 ID:epth1PWU0
そっかJavaScriptじゃなくてjsoupだもんね

63名無しさん@避難所:2019/09/08(日) 19:38:16 ID:epth1PWU0
lengthじゃなくてsize()だとどう?

64名無しさん@避難所:2019/09/08(日) 21:38:56 ID:epth1PWU0
https://jsoup.org/apidocs/org/jsoup/nodes/Element.html
を見るとgetElementsByXXXXXXが返す結果の型はElementsクラス


https://jsoup.org/apidocs/org/jsoup/select/Elements.html
を見るとElementsクラスのの上位クラスはArrayListクラスなんで

http://mdiz1103.xsrv.jp/wordpress/w_1_programming/?p=12
https://i.imgur.com/wOv29iW.png
のArrayListの方ぽい

65名無しさん@避難所:2019/09/09(月) 06:07:29 ID:GRxunFzs0
>>64
ありがとう
これで出来た
var document = org.jsoup.Jsoup.connect("http://www.babymetal.com/jp/&quot;).get();
var element = document.getElementById("news_list");
var elements = element.getElementsByTag("a");
for(var i = 0; i < elements.size(); i++){
var attr = elements.get(i).attr("href");
v2c.alert(attr);
}

66名無しさん@避難所:2019/09/09(月) 07:16:39 ID:GRxunFzs0
URLは.absUrl("href")を使えば../xxx系を
http://www.babymetal.com/jp/news/?id=110
に変換してくれるみたい

var document = org.jsoup.Jsoup.connect("http://www.babymetal.com/jp/&quot;).get();
var element = document.getElementById("news_list");
var elements = element.getElementsByTag("a");

for(var i = 0; i < elements.size(); i++){
var attr = elements.get(i).absUrl("href");
v2c.alert(attr);
}

67名無しさん@避難所:2019/09/10(火) 09:29:01 ID:YnDKZ6oI0
jsoupの欠点
org.jsoup.Jsoup.connecを使うとこれがあると処理が止まる
<meta http-equiv="Refresh" content="0;URL=https://l-tike.com/concert/mevent/?mid=389230&quot;&gt;
htmlをv2cで取得してorg.jsoup.Jsoup.parse(html);した方が安全だった

68名無しさん@避難所:2019/09/11(水) 19:13:14 ID:cUdt5LCA0
jsoupを使うとこういうことが出来るらしい
常識なんだろうけど便利でビックリした
変数Elementsを変更するとセレクト元の変数Docの内容が変更されてた
最後にテキスト化すればHTMLtoTEXTが簡単に出来そう

var Doc = ArticleDoc.select(".news_txt").last();
//画像テキスト化
var Elements = Doc.select('img[src]');
for(var i = 0; i < Elements.size(); i++){
var AbsUrl = Elements.get(i).absUrl('src');
Elements.get(i).text(AbsUrl);
}

69名無しさん@避難所:2019/09/12(木) 15:58:32 ID:xRBdcWSM0
jsoupのHTMLtoTEXTスクリプト出来たが
一部文字化けするから使いものにならなかった

変換しない文字
&ndash;

◼︎

70名無しさん@避難所:2019/09/12(木) 18:53:46 ID:sFPzbDMk0
>>69
多分これっしょ
https://qiita.com/motoki1990/items/fd7473f4d1e28c6a3ed6

71名無しさん@避難所:2019/09/12(木) 19:29:43 ID:jpyok6Cs0
チルダは本当によくある
あと文字コードは基本的なようでいて実は慣れてても時々躓く面倒な問題

72名無しさん@避難所:2019/09/12(木) 20:05:12 ID:sFPzbDMk0
いつ化けたかやね
jsoupに取り込んでDOMにした時点か
HTMLtoTEXTした時点か
outputに出力/表示した時点か

73名無しさん@避難所:2019/09/12(木) 20:25:55 ID:xRBdcWSM0
jsoupオブジェクトをhtml()で出力すると化けないが
text()で出力すると化けるみたい

74名無しさん@避難所:2019/09/12(木) 21:05:51 ID:sFPzbDMk0
試しに
https://www.dropbox.com/s/den49d6u6389da5/getdat.js_20190508232210_.zip?dl=1
の2308行目をコピペしてtext()した結果を置換してみて
jsはUTF-8
https://i.imgur.com/w1Drgs0.png
これで文字化けをコントロール出来れば文字化けを回避できるはず

したらばの過去ログをgetdatjsでスレを表示する場合に文字化けを回避するために使用してる置換です

75名無しさん@避難所:2019/09/12(木) 21:19:37 ID:sFPzbDMk0
jsの文字コードはUTF-8だよね?

76名無しさん@避難所:2019/09/13(金) 08:04:04 ID:b6cSdxb60
HTMLがUTF-8でDATがShift_JISだから漢字はこれでも化けるのか
text()は&#xxx;文字を削除してるみたいなので
&#を全角にして最後に&#に戻したら漢字は上手くいったが
&ndash;が化ける

77名無しさん@避難所:2019/09/13(金) 11:45:17 ID:My4Y/o2c0
Javaはよく知らんがcharsetの変換とかないの
ないならtextをバイト列経由でshiftjisにするとか

78名無しさん@避難所:2019/09/13(金) 11:48:02 ID:b6cSdxb60
HTMLは↓これで記述してるのに
&Eacute;
&eacute;
jsoupの中では&Eacute;と&eacute;の文字に変換されてた
エスケープをそのままにさせる設定があればどうにかなるのに

79名無しさん@避難所:2019/09/13(金) 12:32:45 ID:b6cSdxb60
v2c.writeLinesToFile(Thread.localFile, DatData, 'Shift_JIS');
これやると消えるみたいだから
変換不能文字→参照(G)を読み出して変えてやればいいのかも

80名無しさん@避難所:2019/09/13(金) 14:20:31 ID:b6cSdxb60
Shift_JISにする前にこのコードにしたら文字化けがなくなった
& #65288;& #29694;& #22320;& #26178;& #38291;& #65289;
(現地時間)

81名無しさん@避難所:2019/09/13(金) 15:06:07 ID:00XLl0kM0
なんか自分も通った記憶のある道でワロタ
全ての文字を数値文字参照(文字参照)に変換すると
文字化けは補償されるんだけどログが全部&#xxxxxになって何が何だか分からなくなる
というオチ

82名無しさん@避難所:2019/09/13(金) 15:16:46 ID:b6cSdxb60
昔janeとの互換性のためにShift_JISに変更したんだよな

83名無しさん@避難所:2019/09/13(金) 15:32:49 ID:00XLl0kM0
【test】書き込みテスト_02
https://egg.5ch.net/test/read.cgi/software/1560389875/848
https://i.imgur.com/cOof1Xk.png
 
↑のWEBページソース
https://i.imgur.com/cc0VzGE.png
 
dat(SJIS)の中身
https://i.imgur.com/FOrYDjg.png

5ちゃんはSJIS、ベビメタのサイトはUTF-8だけど
Javaに取り込めばメモリ上は両方ともUTF-16?になるからWEBページの文字コードの違いは吸収される

で出力対象がなんなのかわからんけど例えば出力対象がSJISのdatでも可読文字を数値文字参照(文字参照)で保存しとけば
Javaのレンダラはdat中の数値文字参照(文字参照)を可読可能な文字に置き変えて表示してくれる

なんで文字化けする文字だけ数値文字参照(文字参照)に置き変えればいいのではと

あとサロゲートペアの考慮もいるのかな?
その辺やってるのが昨日上げたgetdat.jsのしたらば対応の処理

84名無しさん@避難所:2019/09/13(金) 15:40:24 ID:00XLl0kM0
UNICODE周りのコード変換なら
https://www.marbacka.net/msearch/tool.php
が便利

85名無しさん@避難所:2019/09/13(金) 17:04:29 ID:b6cSdxb60
v2cが使ってるエスケープ配列見つかったから
エスケープ系と>>74だけ数値化すればいいのか

86名無しさん@避難所:2019/09/14(土) 08:00:52 ID:DhOH1CbI0
◼こういう文字はどうやって判断するんだ
文字をShift_JISにエンコードしてUTF-8でデコードして
文字と違っていたら数値文字参照にすればいいのかな
上位bitがなんちゃらとかさぱりわからん

87名無しさん@避難所:2019/09/14(土) 12:52:26 ID:DhOH1CbI0
String str = "あ";
byte[] bytes = str.getBytes("SJIS");
String newStr = new String(bytes, "SJIS")
strとnewStrが違ったら数値文字参照にするで上手くいかないのかな

88名無しさん@避難所:2019/09/14(土) 13:14:31 ID:rfao2vlI0
どういうアウトプットにしたいのか分からんから何も言えん
普通の絵文字だからフォントさえ入ってれば参照形式でも表示されると思うんだが

89名無しさん@避難所:2019/09/14(土) 14:12:04 ID:DhOH1CbI0
これで上手くいった
俺天才かも

//【数値文字参照変換】
function EncodeChar(Text) {
var EncodeText = '';
var TextArray = Text.split('');
var BiteArray = [];
var JString = '';
var NewString = '';

for(var i = 0; i < TextArray.length; i++) {
JString = new java.lang.String(TextArray[i]);
BiteArray = JString.getBytes('SJIS');
NewString = new java.lang.String(BiteArray, "SJIS");
if(JString == NewString) {
EncodeText += TextArray[i];
} else {
EncodeText += '&#' + Text.charCodeAt(i) + ';';
}
}
return EncodeText;
}

90名無しさん@避難所:2019/09/14(土) 16:11:41 ID:DhOH1CbI0
BiteArray スペルが違ってたbyteだった

91名無しさん@避難所:2019/09/15(日) 08:29:00 ID:fmxhQmME0
jsoupの使い方
最初にどちらかでオブジェクト化して
Doc = org.jsoup.Jsoup.parse(Html);
Doc = org.jsoup.Jsoup.connect(NewsUrl).get();

これでテキスト化出来る

//【テキスト変換】
function HtmlToText(NewsDocument) {
var Message = ''; //メッセージ欄
var Doc = '';
var Elements = '';
var AbsUr = '';
var Text = '';

Doc = NewsDocument.select(".news_txt").last(); //class選択

//画像URLテキスト化
Elements = Doc.select('img[src]');
for(var i = 0; i < Elements.size(); i++){
AbsUrl = Elements.get(i).attr("src") + '';
if(AbsUrl.match('../..')) {
AbsUrl = AbsUrl.replace('../..', 'http://www.babymetal.com');
Elements.get(i).text(AbsUrl + '.jpg');
} else {
Elements.get(i).text(AbsUrl);
}
}

//YoutubeURLテキスト化
Elements = Doc.select('iframe[src]');
for(var i = 0; i < Elements.size(); i++){
AbsUrl = Elements.get(i).absUrl('src') + '';
if(AbsUrl.match(/http:\/\/www\.youtube\.com\/embed\/(.+?)\?/i)) {
Elements.get(i).text('https://www.youtube.com/watch?v=' + RegExp.$1);
}
}

//リンクURLテキスト化
//Elements = Doc.select('a[href]');
//for(var i = 0; i < Elements.size(); i++){
// Text = Elements.get(i).text() + '';
// if(Text.match(/https?:\/\//i) == null) {
// AbsUrl = Elements.get(i).absUrl('href');
// Elements.get(i).text(Text + ' ' + AbsUrl);
// }
//}

//<p>改行
Doc.select('p').prepend("%br2n%%br2n%"); //ダミー改行変換
//<br>置換
Doc.select('br').append("%br2n%"); //ダミー改行変換

Message = Doc.text() + ''; //テキスト化
Message = EncodeChar(Message); //【数値文字参照変換】
Message = Message.replace(/%br2n%/g,'<br>') + ''; //ダミー改行置換

return Message;
}

92名無しさん@避難所:2019/09/17(火) 11:59:13 ID:hiDEKj.k0
PopupTools_20190917.zip
https://www.dropbox.com/s/0sdhxtjc8t5crc1/PopupTools_20190917.zip?dl=1
 
popupTwitterInfo.js
PopupStatusYoutubeV3.js
PopupStatusInstagram.js
PopupStatusDailymotion.js
の詰め合わせです
 
Java7,8,9用とJava6用にわけてあります
Java6では同梱のjson2.jsも必要となります
 
修正箇所
・Instagramのポップアップで画像のサムネが表示されなくなったのを修正

93名無しさん@避難所:2019/09/19(木) 03:55:30 ID:y60gHxsQ0
V2C+ ver1.1.3[R20171103]に対応している必死チェッカーもどきもどきのスクリプトってありますか?
https://amekujira.seesaa.net/article/269587207.html
のhissi_ken.jsを入れてみたんですけど、無反応でした。
V2Cwikiのhissi.jsは正常に動いてます。

94名無しさん@避難所:2019/09/19(木) 05:12:55 ID:Hc.OmSwQ0
>>93
スクリプトなんて不要
IDを右クリックしてみろ

95名無しさん@避難所:2019/09/19(木) 07:38:03 ID:DzEcvHEA0
//書き込み欄のマルチポスト規制中URLをjump.5ch経由に変換
// ${SCRIPT:} URLJump.js

var vcx = v2c.context;
var th = vcx.thread;
var wp = th.openWritePanel();

var text = wp.message.text + '';
wp.message.text = text.replace(/https?:\/\/(?!jump.5ch.net)/g, 'https://jump.5ch.net/?');

96名無しさん@避難所:2019/09/19(木) 10:49:25 ID:l1aEDbkU0
>>93
動いたよ

97名無しさん@避難所:2019/09/19(木) 15:41:22 ID:DzEcvHEA0
var rb = new java.awt.Robot();
キー入力を偽装しようとしてこれをスクリプトで使うと
java.security.AccessControlException: access denied ("java.awt.AWTPermission" "createRobot")
のエラーになる

java.security.AccessControlException when using java.awt.Robot class for screen capture in applet - Stack Overflow
https://stackoverflow.com/questions/15381538/java-security-accesscontrolexception-when-using-java-awt-robot-class-for-screen

これだとjava.home\lib\security\java.policy (Windows)にこれを追加すればいいと書いてあるが
追加してもエラーになるなんでだ

permission java.awt.AWTPermission "createRobot";

98名無しさん@避難所:2019/09/19(木) 18:22:46 ID:DzEcvHEA0
>>97
class V2CScriptUtilで指定しないと無理なのか

99名無しさん@避難所:2019/09/19(木) 20:19:30 ID:l1aEDbkU0
>>98
今そのクラスはB11のほうにいるからテスト的にいれてみようか?

100名無しさん@避難所:2019/09/19(木) 20:37:18 ID:DzEcvHEA0
>>99
permission java.awt.AWTPermission "createRobot";
permission java.awt.AWTPermission "accessClipboard";
permission java.awt.AWTPermission "accessEventQueue";
permission java.awt.AWTPermission "showWindowWithoutWarningBanner";
permission java.awt.AWTPermission "readDisplayPixels", "read";
permission java.io.FilePermission "<<ALL FILES>>", "read, write, delete, execute";

入れるんならこれ全部入れといて下さい

101名無しさん@避難所:2019/09/19(木) 21:25:55 ID:DzEcvHEA0
>>95
java8にしたら動かなくなったから変更

//書き込み欄の.jpg:origを?format=jpgに変換
// ${SCRIPT:} ReplaceTwitterjpg.js

var vcx = v2c.context;
var th = vcx.thread;
var wp = th.openWritePanel();

var text = wp.message.text;
wp.message.text = (text+'').replace(/.jpg:orig/g, '?format=jpg');

//書き込み欄のマルチポスト規制中URLをjump.5ch経由に変換
// ${SCRIPT:} URLJump.js

var vcx = v2c.context;
var th = vcx.thread;
var wp = th.openWritePanel();

var text = wp.message.text;
wp.message.text = (text+'').replace(/https?:\/\/(?!jump.5ch.net)/g, 'https://jump.5ch.net/?');

102名無しさん@避難所:2019/09/19(木) 21:37:31 ID:l1aEDbkU0
>>100
目途ついたんだけど使ってるV2Cって何に?

103名無しさん@避難所:2019/09/19(木) 21:44:28 ID:l1aEDbkU0
>>100
書き忘れ申し訳だけどV2C+はダメです
B11のほうにV2CScriptUtilを持ってないんで・・・

104名無しさん@避難所:2019/09/19(木) 21:47:47 ID:Qd4Hovmk0
インスタのパスコード忘れたらどうすればいいの

105名無しさん@避難所:2019/09/19(木) 21:55:25 ID:DzEcvHEA0
>>102
【V2C】 2.11.4.2.19.9 (V2CMOD/2) [R20190921] (L-0.7.0:x86)
【Java】 1.8.0_40-b25 (Oracle Corporation)

106名無しさん@避難所:2019/09/19(木) 22:28:42 ID:l1aEDbkU0
>>104
ログインし直す

>>105
日が変わる上げます

107名無しさん@避難所:2019/09/19(木) 22:56:20 ID:l1aEDbkU0
>>105
B11.27.2
https://www.dropbox.com/s/jugfo98r0zyyb97/v2c_api_patch_B11.27.2.zip?dl=1
テストソースがないんでノーテスト

パーミッションは
createRobot → Tr
readDisplayPixels → Td

readDisplayPixelsはちょっと自信なし

既存仕様では、T配下の小文字パーミッションは小文字を省略してTとした場合に全て有効になるんだけど
rとdは悪意を持たれると画面情報を盗まれるレベルなのでTとしか書かなかった場合はrとdは有効になりません
Aの場合も同じ
なのでパーミッションAは聞かないのでパーミッションは個別に網羅して下さい

>>102に関しては
accessClipboard → Tc
accessEventQueue → デフォルトで有効
setWindowAlwaysOnTop → Tt
showWindowWithoutWarningBanner → Tw
<<ALL FILES>>, "read, write, delete, execute" → F
で元々実装済み(のはず)

108名無しさん@避難所:2019/09/19(木) 23:23:19 ID:l1aEDbkU0
もしかしたら
replaceKeyboardFocusManager
も必要になるかも
(要不要が分からないので今は入れてない)

109名無しさん@避難所:2019/09/19(木) 23:44:21 ID:Qd4Hovmk0
>>106
あざす

110名無しさん@避難所:2019/09/20(金) 03:41:36 ID:FjAG4ODM0
>>94
あああぁぁぁ
ありがとうございます・・・
>>96
一から全部設定入力し直したらこちらも動きました
hissi.jsのようにポップアップだけで詳細まではわからないのですね

111名無しさん@避難所:2019/09/20(金) 07:08:20 ID:dCnTqhjw0
>>107
ありがとう
これでスレが更新してくれるようになった

//【スレッド更新後表示(アドオンから呼ばれる)】
function DisplayThread(ThreadObj, ResIndex) {

var Rb = new java.awt.Robot(); //キー押し偽装

ThreadObj.viewResIndex = ResIndex; //表示させるレス番
ThreadObj.newMarkResIndex = ResIndex; //新着境界直後のレス番
do {
v2c.openURL(ThreadObj.url); //スレッド表示
} while(ThreadObj.columnIndex == -1); //スレッド非表示は-1
Rb.keyPress(java.awt.event.KeyEvent.VK_R); //スレ更新Rキー押す
Rb.keyRelease(java.awt.event.KeyEvent.VK_R); //スレ更新Rキー離す

v2c.openURL(ThreadObj.board.url); //板スレ一覧表示
}

112名無しさん@避難所:2019/09/20(金) 07:10:12 ID:dKW89Wic0
>>93
これ入ってたけど今やったら動かなかった
一応試してみて

40 :名無しさん@避難所 :2017/08/15(火) 16:13:43
>>2
https://www.axfc.net/u/3834830?key=v2c
hissiWatchoiSearch.js

こんなんでどうでしょう?
リンクに関連づけるとZでしか使えなくなるので
選択テキストのスクリプトです

問題ないようならスクリプトスレにも晒します

113名無しさん@避難所:2019/09/20(金) 11:46:37 ID:izhcM3h60
>>112
>https://www.axfc.net/u/3834830?key=v2c
hissiWatchoiSearch.js

93とは別人だがこれ試しに使ったら通信エラーで駄目だった

http://hissi.link/5ch/php_files/hissi/
10/04 5ch.net対応に修正しました。下記を従来のものと入れ替えて使用してください。
必死チェッカー(コテ) http://hissi.link/5ch/php_files/hissi
/read.php/{$bbs}/{$date[yyyyMMdd]}
/{$id[base64_]}.html{$host[match:5ch.net|2ch.net|bbspink.com$]}
と書いてあるし修正が必要みたい

114名無しさん@避難所:2019/09/20(金) 13:34:08 ID:dCnTqhjw0
最後1レススクロールしたらそれっぽくなった

//【スレッド更新後表示(アドオンから呼ばれる)】
function DisplayThread(ThreadObj, ResIndex) {

var Rb = new java.awt.Robot(); //キー押し偽装
Rb.setAutoDelay(100);

ThreadObj.viewResIndex = ResIndex; //表示させるレス番
ThreadObj.newMarkResIndex = ResIndex; //新着境界直後のレス番
do {
v2c.openURL(ThreadObj.url); //スレッド表示

} while(ThreadObj.columnIndex == -1); //スレッド非表示は-1

Rb.keyPress(java.awt.event.KeyEvent.VK_R); //スレ更新Rキー
Rb.delay(1000);
Rb.keyRelease(java.awt.event.KeyEvent.VK_R); //キー離す

Rb.keyPress(java.awt.event.KeyEvent.VK_SPACE); //1レススクロールSPACEキー
Rb.keyRelease(java.awt.event.KeyEvent.VK_SPACE); //キー離す

v2c.openURL(ThreadObj.board.url); //板スレ一覧表示
}

115名無しさん@避難所:2019/09/20(金) 19:10:59 ID:dCnTqhjw0
java7だと問題ないがjava8に下のjar入れてrhinoで動かすと
error instantiating (access denied ("java.lang.RuntimePermission" "accessDeclaredMembers")): class java.lang.Runnable is interface or abstract (<Unknown source>#175)
こんなエラーなる
${SCRIPT:A}にしたら
jre\lib\security\java.policyみたいなのをV2Cに用意して
登録できるみたいなのがあると便利かも

rhino-1.7.11.jar
js-engine.jar

116名無しさん@避難所:2019/09/20(金) 19:20:54 ID:5QvWG3wU0
accessDeclaredMembers → Rm
getClassLoader → Rc
でおなしゃす

117名無しさん@避難所:2019/09/20(金) 19:28:16 ID:dCnTqhjw0
>>116
ありがとう
なんでバージョンが違うとパーミッションが変わったりするんだ

118名無しさん@避難所:2019/09/20(金) 19:36:00 ID:5QvWG3wU0
>>117
Java7(Rhino)からJava8(Nashorn)に変わった際にまあいろいろ変わったと
Java8でのjsからswingの画面部品の呼び出しでaccessDeclaredMembersとgetClassLoaderのパーミッションエラーになったんでその時に追加

text.replaceを(''text).replaceと書かなきゃならないのと根っこは同じ

119名無しさん@避難所:2019/09/20(金) 21:55:37 ID:dCnTqhjw0
Java8のスクリプトは速い
java7だと25秒くらいだった処理が8秒で終わった

120名無しさん@避難所:2019/09/21(土) 14:36:29 ID:kcUd4Iao0
java.awt.Robot(); はダメだったエディタ使ってるときの更新すると
エディタにrを書き込んでしまう
V2Cにだけrを送信するのは無理なんだろうか

121名無しさん@避難所:2019/09/21(土) 20:40:13 ID:kcUd4Iao0
windowsAPIを読んだりすると大変なので
ロボットのマウス移動を使ってV2Cのタイトルバーでクリックするようにしたら
アクティブアプリに変わってrがV2Cに届いた

122名無しさん@避難所:2019/09/22(日) 14:15:23 ID:nhTyqY3c0
設定ー[キーバウンド]ー[レス表示]の「ここからテキスト選択」して
[選択テキスト(レス表示)]の「画像をダウンロード」を実行すると

https://www.instagram.com/p/B2oe4f9HYFq/
↑これはダウンロードして表示するが

https://scontent-nrt1-1.cdninstagram.com/vp/b8ac6af7d09eefd564af76f865488c58/5E3AA72D/t51.2885-15/e35/70284990_724097124772814_2239838731437793937_n.jpg?_nc_ht=scontent-nrt1-1.cdninstagram.com&amp;_nc_cat=1
こっちはダウンロードしない何でだ
どっちも画像として開くのに

123名無しさん@避難所:2019/09/22(日) 14:25:15 ID:nhTyqY3c0
>>122
ここですべてを選択して画像をダウンロードするでもダウンロードしないな
どうやればダウンロードするようになるんだ

124名無しさん@避難所:2019/09/22(日) 14:32:16 ID:QAcXQcQE0
>>123
DLしないリンクの色は何色?
通常の画像リンクと色がことなるならV2Cからは画像のリックと思われてない

125名無しさん@避難所:2019/09/22(日) 14:36:01 ID:nhTyqY3c0
>>124
同じ色だから画像として認識はしているみたいだけど
https://i.imgur.com/GZ49esC.jpg

126名無しさん@避難所:2019/09/22(日) 14:50:08 ID:QAcXQcQE0
>>125
あと思い当たるのはImageViewURLReplace.datにそのurl用の定義がないくらいかな?
>>112を全選択して選択範囲のリンクを「履歴を削除」→「画像のダウンロード」をしても
サムネを表示するんでこちらではそれ以上のことはわかりません

127名無しさん@避難所:2019/09/22(日) 14:56:59 ID:nhTyqY3c0
俺だけなのか
ImageViewURLReplace.datの定義はこれだけどダメなのかな
https://scontent-nrt1-1.cdninstagram.com/vp/(.*jpg.*)【Tab】$&

128名無しさん@避難所:2019/09/22(日) 15:14:16 ID:QAcXQcQE0
必死盛り合わせ
https://www.dropbox.com/s/3darm5ur5hjkm22/hissi_moriawase.zip?dl=1
 
俺環:Java13+Rhinoスクリプトエンジン+Z
    .Java13+Rhinoスクリプトエンジンなんでスクリプト実行環境はJava7相当
 
Java8でRhinoスクリプトエンジン無しだとJava7とスクリプト記述時のお約束が違うので
エラーが出るかも(その場合は、V2Cが何かは無関係)

hissi.js
 レス表示
 hissi.orgから
 一番ポピュラーなやつ
 
hissi_ken.js
 レス表示
 hissi.linkとame.hacca.jpへのリンクを表示
 
hissiSearch.js
 選択テキスト
 IDを選択して右クリ
 hissi.orgから
 WEBページを強引にポップアップに表示(WEBブラウザで表示が望ましい)
 
hissiWatchoiSearch.js
 選択テキスト
 ワッチョイ xxxx-xxxx を選択して右クリ
 hissi.linkから
 WEBページを強引にポップアップに表示(WEBブラウザで表示が望ましい)

129名無しさん@避難所:2019/09/22(日) 15:14:53 ID:nhTyqY3c0
https?(://(?:[^/.]+\.)+(?:fbcdn\.net|akamaihd\.net|cdninstagram\.com).+/(?:\d+_){3}[on]\.(?:jpe?g|png|gif|bmp)\?.+)$【TAB】https$1【TAB】【TAB】$VIEWER

130名無しさん@避難所:2019/09/22(日) 15:15:38 ID:nhTyqY3c0
>>129
これにしたらダウンロード出来た
>>126さんありがとう

131名無しさん@避難所:2019/09/22(日) 15:44:02 ID:TojdZwpg0
そもそもの疑問としてJava7相当のRhinoなしでV2C本体を動かす事は出来るん
・本体が動かない
・本体は動くがscriptが動かない
・本体もscriptも動くがscriptのフォーマットが多少違う

これのうちどれなん

132名無しさん@避難所:2019/09/22(日) 16:20:00 ID:QAcXQcQE0
Rhino(アメリカのサイ)はスクリプトを動かす環境のこと
Java8以降はRhinoが廃止されてNashorn(ドイツのサイ)ってのに変わった
このNashornも何れ廃止と明言されてる

でスクリプトを動かす環境は
・readcgi.jsの実行
・便利スクリプトの実行
に影響があるだけで
V2C本体にはRhinoがあろうがなかろうが関係なし

readcgi.jsはRhinoでもNashornでも動くように出来てるっぽく問題はなし

ただ便利スクリプトはJava6、Java7全盛期(Rhino期)に作られてるものが多く
またRhinoもNashornも同じサイだけど国が違うんで言葉(文法)が通じない部分が若干ある
なんでスクリプトはやりたいこと次第で動いたり動かなかったり

これが昔Java8問題って言われてたやつ

よくあるのが、Rhinoでは text とだけ書けばいいものが Rhino無し(Nashorn環境)だと
(''+text) と書かないとエラーになるとか

あと余談だけどあまりにもオサレな書き方をすると
Java7で動くスクリプトがJava6で動かなかったりもする

なんで答え的には
・本体は動く
・scriptはjsの書き方や、やりたいことしだい動いたり動かなかったり

133名無しさん@避難所:2019/09/22(日) 16:44:10 ID:nhTyqY3c0
作者さんが生きてたらスクリプトでいろんなことが出来る面白いソフトになったのに残念だな

134名無しさん@避難所:2019/09/22(日) 18:54:26 ID:LFDUvT3g0
派生が多すぎてわけわからなくなったあたりから未来ないとは思っていた

135名無しさん@避難所:2019/09/22(日) 19:17:39 ID:TojdZwpg0
>>132
なるほど、sytem scriptは自分で書いてるからよしたぶん何とかなる
問題はhissiとV2C派生のおまけで付いてくるamazon.jsとかこの辺か

136名無しさん@避難所:2019/09/22(日) 20:17:29 ID:fJbsDVj.0
V2Cの機能を真似て1から作るネ申がいればあるいはわからん

137名無しさん@避難所:2019/09/24(火) 10:03:06 ID:9roM5kY60
>>33
再公開お願いします

138名無しさん@避難所:2019/09/24(火) 11:17:49 ID:Jp5gl3Uc0
Rhinoを切ったら「Rhino ScriptEngineを取得できませんでした」とか言われて文法以前の問題だった
まあ技術的興味の問題で何か困ってる訳じゃないから別にいいけど

139名無しさん@避難所:2019/09/24(火) 12:17:43 ID:5KT8TUMU0
>>137
これかな?
analysis_slip.zip
https://www.dropbox.com/s/a5vwr2lahuzybrh/analysis_slip.zip?dl=1

140名無しさん@避難所:2019/09/24(火) 12:27:47 ID:S/EiVCXw0
GraalVMはSpring Bootとか使うとネーティブコンパイルできないのか
GraalVMスクリプトランチャーみたいなソフトないのかな
板-スレ-レスのclassだけ用意して後は5chプラグインみたいな感じで
ユーザーが自由に追加したり出来るみたいな
v2c.・・・風はjavaのObjectを直接受け取れるみたいな感じの方が楽かも




掲示板管理者へ連絡 無料レンタル掲示板