【ニコニコ】自動ローカル保存プロクシ NicoCache23
■ このスレッドは過去ログ倉庫に格納されています
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
スレ立て時に↑をコピペして3行で書き込んでください
■テンプレートはこちらからコピー:https://www65.atwiki.jp/nicocachenlwiki/pages/23.html
ニコニコ動画のキャッシュを自動的に保存して
二回目以降はローカルから再生することで
ニコニコ動画の回線に負担をかけることもなく再生できるソフトのスレ。
ページにスクリプトを埋め込んで実行したり、見た目を書き換えることもできる。
一度通常画質でローカルに保存すれば
エコノミーモード時間帯でも常に通常画質で再生することができる。
Java で作られており Windows / MacOSX / Linux / Solarisで動作する。
https://adoptopenjdk.net/
■関連サイト
NicoCache_nl wiki (新)
ttps://www65.atwiki.jp/nicocachenlwiki/
■前スレ
【ニコニコ】自動ローカル保存プロクシ NicoCache22
ttps://egg.5ch.net/test/read.cgi/software/1517020277/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured 05_topBarFilter.txtに関して。
05_topBarFilter.txtにあるメニューを追加するやつを新しいヘッダー用に直す場合は、後から要素の有無の判定、指定や移動がしやすいようにユニークなid属性をつけてください。
nd0031に入れている「header_plus.js」では、05_topBarFilter.txtに相当する物をヘッダーに追加するようにしています。
05_topBarFilter.txtで特定のid属性でメニューを追加するようになれば、それに合わせて「header_plus.js」を書き換える予定です。
05_topBarFilter.txtなどで追加するダウンロード用リンクは、ページの変移を防ぐため、全てにdownload属性をつけてください。 nd0031にはサブドメインをまたいだローカルストレージの読み書き用にHeader_plus_localStorage.htmlを入れています。
非表示のiframe要素内にHeader_plus_localStorage.htmlを読み込み、そこでメッセージのやりとりをするようにし、ローカルストレージの内容を受け渡しするようにしています。
これはheader_plus.jsで使う専用の物としてメッセージをやりとりしているので、汎用で使える物を用意してnllib.jsにローカルストレージの読み書きと消去用の処理を用意して欲しいです。
"key"と"value"およびは全て文字列で、次のように使えたら良いと思います。
NicoCache_nl.setItem("key", "value");
NicoCache_nl.getItem("key"); // 戻り値は文字列になる。
NicoCache_nl.removeItem("key");
※iframeとのメッセージのやりとりは、特定の判定用文字列を含むようにして誤動作を防ぐ。
※Header_plus_localStorage.htmlはheader_plus.js専用でキー自体を判定用文字列にしているため、これをコピペする場合は別途判定用文字列と処理を入れてください。 >>685-686
合点承知之助
localStorageのAPIですがPromise返しにしていいでしょうか.
APIが呼ばれたタイミングでiframeを差し込むようにしないと
使わないときも全ページロード直後にiframe設置が必要になってしまいますので.
# Promiseに対応していないIEはサポート切ります
もう一つ、ニコニコのpostMessageを使った実装と干渉してしまうことが懸念されるので
iframeを二重にしてこういう構造にします.
元のページ <-(same-origin: javascript直接呼び出し)-> postMessage処理用iframe <-(cross-origin: postMessageで通信)-> localStorge処理用iframe >>687
www.のnicovideoでは同一ドメインでiframeを使う必要が無いので、直接ローカルストレージを処理しちゃって良いと思います。
他はおまかせします。 nd0032 setAnchorClass.js.txt
7月27日以降仕様のマイページやユーザーページでも動作する動画リンク色設定ユーザースクリプト
たぶんIEとバージョンが古いブラウザだと動かない NGCommentExtensionのNGワード設定が
かんたんコメントエリアとかいう定型文ボタンのワードに引っかかるとコメントの受信に失敗してしまう nd0033 フィルタ改修
・新マイページ・ユーザーページに対応
ヘッダとlocalStorage APIはまた後日
あとIEでの動作確認を忘れたのでそれも後日
>>688
確かに.サブドメインで分岐しておきます. nd0033 フィルタ改修
・マイリスト等でvisitedなキャッシュ済みリンクの色が変わらないのを修正
うっかり見落とし
>>692
ニコニコ動画がなかなかサポート対象外にしないんですよね……生放送は終わったんですが
IE使ってるという方はまだユーザがいるとレスをください.規制されている場合はアップローダをお借りして.
誰もいないようならサポート終了としてIEが対応していない機能を積極的に使い始めます. >>693
下記間違え&上げ直しで nd0035 です IEたまに使うけど、IEなきゃ困るってことはあまりないかな ニコニコをIEだけで見てるユーザーはここ見ないやろ……(偏見 >>693
積極的に新機能を使いながらライブラリとして
src="https://polyfill.io/v3/polyfill.min.js
を読み込ませるようにすることもできるな
パフォーマンスに多大な影響が出そうだけどw >>698
classとかasync-awaitとかのpolyfillで対処できないsyntax周りやつが欲しかったり >>694
iいつも有難うございます。 助かりました。 >>688
nd0036にアルファ版を置きました.
不都合はないでしょうか.仕様を直すなら今のうち.
PW: fordev >>702
使い方の変更点書き忘れました
xsLocalStorage以下に移動してPromiseでこうなっています.keyには自動でprefixが付きます.
await NicoCache_nl.xsLocalStorage.setItem(key, value);
let value = await NicoCache_nl.xsLocalStorage.getItem(key);
await NicoCache_nl.xsLocalStorage.removeItem(key);
prefixを付けたくない場合のためにgetItemWithoutPrefix等も用意してあります.
prepare()は自動で呼ばれますがパフォーマンスチューニングのために
明示的にに呼ぶケースもあるかと思い公開APIにしています.
あとxsSessionStorageでsessionStorageにも対応してます. 今更なんだけどこれってdアニメストアもキャッシュ保存できるのかな 暗号化されてるから復号化キーも一緒に取得しないと意味ない
ってのが上の方に話題として既にある nd0039
サーバー証明書の有効期限を380日にしたNicoCache_CA.jar
Chromeなどでサーバー証明書の有効期限が長すぎると怒られる人向け https://gitlab.com/nchist/nchist
現状可能な範囲で13年分の歴史を記録しました
派生物の権利関係とか色々謎なのでまずかったらどうにかします nd0040 header_light_custom_200825.7z 個人的に弄ったheader_light:nd0037(xsStorage-alpha2.7z)を使うように修正。
nd0041 nico_wallpaperC_20200825.7z 個人的に弄った<用nico_wallpaperのベース:nd0037(xsStorage-alpha2.7z)を使うように修正。設定ページをローカルに用意した。
どちらもローカルストレージにprefix付きのkeyを使います。
設定を消すためのフィルタを入れているので、以前の版の設定を消す場合は、それぞれのお掃除用フィルタを一度有効にしてください。 https://pastebin.com/FDRyGh4P
例えばこんな風にして統一的なコンフィグファイルを作りたいんだが、Requireの先読みアサーションがマッチしない
たすけて あとこういう複雑な条件のRequireはこの書き方であってるのだろうか?
https://pastebin.com/vL3aF72e 解決した
^(?=[\s\S]*hoge1)[\s\S]*hoge2だった
wikiの記述が間違いだった >>711
hoge1の前の[\s\S]*は、無駄に処理を重くするだけかもしれないので不要です。
[\s\S]*hoge2のように直前に[\s\S]がたくさん存在するかもしれない処理は重くなりがちなので、問題が無いなら最短一致が良いです。
※あまりにもたくさんマッチする場合、処理が30秒を超えるケースがあります。
hoge2の内容は、なるべく少ない回数でマッチする文字列が良い。
使う場所がRequireだけなら、なるべく「hoge」1つだけで済ませられる文字列を見つけてマッチさせると軽くなります。
複数のRequireが必要な場合、RequireとMatchでマッチさせて、Replaceに両方にマッチしたことを湿すコメントを挿入。
別のフィルタでReplaceに挿入したコメントを入れることで、記述を簡略化したり処理を軽くできるかもしれません。 >>712
最後のところを訂正。
>複数のRequireが必要な場合、RequireとMatchでマッチさせて、Replaceに両方にマッチしたことを湿すコメントを挿入。
>別のフィルタでReplaceに挿入したコメントを入れることで、記述を簡略化したり処理を軽くできるかもしれません。
複数のRequireが必要な場合、RequireとMatchでマッチさせて、Replaceに両方にマッチしたことを示すコメントを挿入。
別のフィルタのRequireに挿入したコメントを入れることで、記述を簡略化したり処理を軽くできるかもしれません。 複数のRequireを実装してくれたほうが何倍も簡単でメンテナンス性が高く効率的でエレガントです
さらに言えば統一して他のファイルからnlFilterの各コードのON/OFFを制御出来るようにしてくれたら尚良いです
>>712下のほうは自分の頭ではちょっと理解しかねます。すみません。 nlMediaInfoってまだ動いてますか?
18/11/26(月),16:16:12
https://nicocache.jpn.org/second/count.cgi?nc0290.7z
一応https://mediaarea.net/en/MediaInfo/Download/Windowsから
Windows x64 MediaInfo CLI v20.08をダウンロードしてC:\MediaInfoに保存した後、
環境変数を通してコンピュータを再起動してコマンドプロンプトからmediainfoで呼び出せるようにはしたけど、
https://www.nicovideo.jp/cache/mediainfo?sm9にアクセスしても見えるのはこんな情報だけで肝心の詳細が出ない
過去レス漁ってたら「別件の問題がありまして最近のmediainfoコマンドの出力書式が変わってしまって
一部の情報が取得できなくなってます. 」とあったのでその影響かと思うのだが、
https://egg.5ch.net/test/read.cgi/software/1517020277/803-
javaは直し方わからんちんで困っている
https://i.imgur.com/bz0mgsv.png
https://i.imgur.com/pIWRXvM.png MIME typeってどうやって書き換えるの?
# nlフィルタ定義(文字コード判定用なのでこの行は削除しないこと)
規制が激しくて[RequestHeader]
日本語がある程度入ってないとName = nmsgJsonHeaderInfoMIMEChange
ダメなようだFullURL = https?:\/\/nmsg\.nicovideo\.jp/api\.json/.*
Match<
Content-Type: text/json; charset=UTF-8
>
Replace<
Content-Type: application/json; charset=UTF-8
> そういえば昔あった検索画面でのcacheSearchってもう使えないんだろうか >>715
出力が空欄なのは動画ファイル名が取得できてないから。
修正箇所の指摘はできるけど、NicoCacheのコードには詳しくないから正解か分かんない。
nlMediaInfo.java 61行目(要、変数のnullチェック)
- VideoDescriptor video = Cache.altIdToVideoDescriptor(altid);
+ VideoDescriptor video = Cache.getPreferredCachedVideo(altid);
mediainfoコマンドの出力書式変更の影響が出てるのはJavaScriptの方かと。 >>718
ありがとうございます!出るようになりました! nlMovieFetcherを新マイページのニコレポやマイリストに対応させることは可能でしょうか? 試作品つくってるけど微妙なんだよなぁ
全部javascriptで構成+スクロールごとに再構築する仕様になってるから今までのように挿入して終わりっ!って訳に行かない
まぁjson+ld型式でソースに書かれてるデータを改造すりゃいいんだろうけど、どういう仕様なのかよく分かってない >>720-721
「15_thumbInfoFilter(基本).txt」を参考に対応可能。
nd0043 movieFetcherFilter.txt 個人的に弄ったmovieFetcherFilter:新しいマイページとユーザーページにリンクを追加
あんまりテストしていない。 >>722
新マイページにfetchリンク表示&fetch出来るようになりました
ありがとうございます nd0050 nico_wallpaperC_20200915.7z 個人的に弄った<用nico_wallpaperのベース:新しいマイページのスタイルを修正。
nd0049 動画の一覧を見やすくする.txt 動画の一覧を見やすくする.txt:新しいマイページに対応。色を濃くして周りのスタイルを調整。
nd0048 個人的なキャッシュアイコン調整.txt 個人的なキャッシュアイコン調整:シリーズや新しいマイページなどの調整。
nd0047 サムネイル入りのリンク.txt サムネイル入りのリンク:新しいマイページに対応。※サムネイルを内包するリンクをtarget=_blankにするフィルタ。
nd0045 movieFetcherFilter.txt 個人的に弄ったmovieFetcherFilter:新しいマイページ用の履歴に対応。新しいマイページ用のスタイル指定を修正。
新しいマイページのマイリストで「マイリスト一覧」か「マイメモリー」を表示してからマイリストを表示すると、addEarlyやaddLazyが動かない。
同様に新しいマイページの履歴で「いいね!」から「翻訳」のどれかを表示してから動画視聴を表示すると、addEarlyやaddLazyが動かない。
addEarlyやaddLazyが動かなければ、それを通して処理するページの書き換えができなくなる。
これは「08_MutationObserverHooks.txt」のスクリプトの仕様によるものです。
「nd0046」は、とりあえず上記のケースでもaddEarlyやaddLazyを動くようにしてみたサンプル。
nd0046 08_MutationObserverHooks.txt 個人的に弄ったサンプル。新しいマイページのマイリストと履歴でaddEarlyやaddLazyが動かないケースに対応。
p.s.
/local/CustomFilters/UserPageLinkInsert.jsでstrを用意した場所と使用する場所が別スコープであり、エラーになっています。 フィルタまとめ#100うpしました
https://nicocache.jpn.org/download.php?id=52&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
変更が多岐に渡るためクリーンインストールを推奨します
主な変更点
1.新たに導入した100_CustomFilterLoader.txtによって(ほぼ)これ単一でフィルタのオン・オフが切り替えられるようになりました
2.CustomFilters以下がフォルダ分けされ分かりやすくなりました
3.UserPageLinkInsertが大きく進化しました
ほぼすべてのページに挿入されるようになり、watchページ以下では更に特別なリンクが表示されます
nlMovieFetcherとnlMediaInfoと併用推奨 NicoCache_nl(最新movieFetcherやフィルタまとめ等導入済み)を経由し
watchページのニコる機能を使うと「このコメントをニコれませんでした」と出てしまい
コメントをニコることが出来ません(nlを経由しない場合はニコることが出来ました)
原因が分からないため、どのようにすれば解決出来るのかご教授願います。 >>726
100_PremiumStatusModificator.txtがあったら無効にする。 >>727
お早いレスに感謝!無事解決出来ました。フィルタまとめクリーンインストール後に無効化するのを失念してました… https://nvapi.nicovideo.jp/v1/users/[Userid]/videos?sortKey=registeredAt&sortOrder=desc&pageSize=25&page=1にfetchしようとすると400 Bad Requestになるのなんでやろ? nlMovieFetcherの本家?の更新ってまだ続いているのかな?
fetchしたもののリストが結果によらずに全部が同じようにtableで返ってくるのが不便なので、結果ごとに異なるclassかdatasetを持ったdiv要素で返ってきて欲しい。
全部が同じようにtableで返ることで不便な点:
1.flexやgridなどのレイアウトに向かない。
2.fetchできないかできなかったものを探すのが面倒。
更新されたバージョンってあるのかな? watch画面のサムネイルを大きく表示するためのフィルタを探しているのですが見つかりません。
ご存知でしたらどれか教えていただけると嬉しいです。
よろしくお願いいたします。 OpenJDK 15 (Latest)
jdk-15+36
https://adoptopenjdk.net/?variant=openjdk15&jvmVariant=hotspot フィルタまとめ#101うpしました
https://nicocache.jpn.org/download.php?id=55&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
- (主な変更点)
- ■カスタムマイリストを追加しました。
- IndexedDB APIを使用してマイリスト(風)にブラウザのローカルストレージに保存します。
- Firefoxの場合はストレージの半分まで保存できるようです(500GBのSSDなら、250GBまで)
- 追加と閲覧だけができます。他は開発が面倒くさすぎて諦めました。5年後くらいに完成したりしていなかったりするかも知れません。
- スクリプトのコントリビューションお待ちしています。
- ■ランキングにフェッチリンクを追加しました。
- ■#fetchAllBoxに「カスタムマイリスト」リンクと「マイメモリー保存」リンクを追加しました フィルタまとめ#101.01うpしました
https://nicocache.jpn.org/download.php?id=56&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
軽微な修正のため上げ直し フィルタまとめ#102うpしました
https://nicocache.jpn.org/download.php?id=57&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
- (主な変更点)
- ■カスタムマイリスト
- 重複のマイリスト登録を弾くようになりました
- 登録したマイリストを削除出来るようになりました
- トーストを表示するようになりました(toastr.js)
- 順番通りに表示するようになりました
- storeidの一番最後にマイリストを追加するようになりました
- ■UserPage
- 「その他」を追加 ext,flapi,nmsgの情報をまとめて表示するようになりました NicoCache_nlをDockerにしてみました
https://nicocache.jpn.org/download.php?id=58&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
Dockerとdocker-compose入ってないと動きませんが一発で環境構築できます
イメージサイズは160MBぐらいです
拡張機能のインストールも今まで通り特に工夫せずにできます >>735
仕様のか自分の入れ方がまずいのか気になるのでお尋ねします
現段階では新マイページ版ニコレポの動画リストでのfetchボタンは無い感じですか? 自己解決しました
ロダの最新fetcher入れなおしたら出ました
すみません フィルタまとめ#103うpしました
https://nicocache.jpn.org/download.php?id=62&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
https://i.imgur.com/Cj5hczV.png
- (主な変更点)
- ■カスタムマイリスト
- lz-string.jsでlzw圧縮するようになりました
- 導入前にカスタムマイリストの中身を一掃する必要があります
- F12→ストレージ(アプリケーション)→IndexedDBで右クリック全削除
- タブなどにマイリストの動画を開いておいて後からカスタムマイリストに再追加してください
- ■PlaybackRateChanger
- 大幅に改修しました
- タブ形式にして小型化
- ■watchページ整形フィルタ
- Backdrop filterを全面採用しました
- Chromeでは追加の操作は必要ありませんが、Firefoxでは
about:configでlayout.css.backdrop-filter.enabledをtrueにする必要があります フィルタまとめを入れた後、背景画像を消してwr_BackgroundHTML5の中のbg-colをwhite指定したんですが、
watchページの動画リストのフォントが黒字に影のままです
これを通常のフォントにするにはどこを弄ったらいいですか?
また、nlMediaInfoをクリックするとどの動画であってもTypeError: doc is undefinedって出るのですが何がまずいのでしょうか?
ブラウザはfirefox81.0.1です >740です
前者はwr.cssの中の動画リストの項のblackを全部whiteにしたらできました
追記ですが、後者についてnd0051と0054は当てています path通しなおしたり、フィルタ出し入れし続けてたらnlMediaInfoもちゃんと表示されるようになりました
ただ、動画説明欄にタブで表示されていたinfoは未だ表示されないままです
視聴履歴の動画サムネにホバーした時のポップアップは表示されるのですが… >また、nlMediaInfoをクリックするとどの動画であってもTypeError: doc is undefinedって出るのですが何がまずいのでしょうか?
>ブラウザはfirefox81.0.1です
仕様です。キャッシュが終わると情報が表示されます。
キャッシュ中だとdoc is undefinedの表示になります。(エラー処理を手抜きしている為)
>ただ、動画説明欄にタブで表示されていたinfoは未だ表示されないままです
nlMediaInfo_new.jsではなくてnlMediaInfo.jsと以前のnlmediainfo用nlfilterを使う必要があると思われます
そしてその動作は保証していません
そしてnewと以前のjsの同時動作も保証していません >>743
成程わかりました。
レスありがとうございます。 とりあえずflapiの方はfetchにvar options = {
credentials:"include",
}
を付与することで解決できましたが、
nvapiにリクエスト投げると400 bad request invalid parameterが返ってくるんですけどどうすりゃいいんですかね? 本体の/local/mime.types.defaultにimage/svg+xml svgとかを追加しておいて欲しいです。
niconicoでSVGがよく使われているのにローカルのSVGファイルが表示されないので確認したらプレーンテキストとして読み込んでいました。
CSSでurl("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' 〜%3E%3Cpath 〜/%3E%3C/svg%3E");形式で指定すれば/local/mime.typesの設定に影響されないけど、指定もメンテナンスもしにくいです。 Nアニメの個別ページだけNicocache_nlが効いてないみたいなんですが他の方はどうですか?
https://anime.nicovideo.jp/special/premium-video/
↑のページは効いてるけど↓のページは効いてない
https://anime.nicovideo.jp/detail/mahouritsu2/index.html
ログを見たら以下のようなメッセージが出てました
failed to process: anime.nicovideo.jp:443
javax.net.ssl.SSLProtocolException: 既存の接続はリモート ホストに強制的に切断されました。
Caused by java.io.IOException: 既存の接続はリモート ホストに強制的に切断されました。 nlApiUtilExtensionってなにをする拡張機能なんだろう… >>745
解決
url,{
mode: 'cors',
credentials: 'include',
timeout: 5000,
headers: {
'X-Frontend-Id': 6,
'X-Frontend-Version': 0
} >>739
フィルタまとめ#102や#103に入っている「/local/CustomMylist/img/mylist.svg」の中身がSVGではなくPNGになっています。
>>748
APIで動画やマイリストなどの情報を取得して表示する拡張機能。
更新されたのを全然見かけないので、更新は止まっているみたい。
サムネイルやキャッシュアイコンが表示できなかったりと不便だったので、nd0064およびnd0065でとりあえず表示できるようにしています。 popThumb_FA.cssに関して。
classやidの指定なしで要素に対してスタイル指定がされている場合、その指定でポップアップ内のレイアウトが影響を受けるケースがあります。
例:ページ内に「td { width: 100%; }」の指定があるケース。
ポップアップ内でサムネイルを含むセルとタイトルやタグを含むセルが横幅を二分するようなレイアウトになります。
※サムネイルの横に広い空白ができ、その下の文字がたくさん折り返されて縦書きみたいになります。
対策として、100行目辺りにある「#nico_popThumb_container * { 〜 }」のスタイル指定を2行目辺りに移しておくと良いです。 フィルタまとめ#104うpしました
https://nicocache.jpn.org/download.php?id=69&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
https://i.imgur.com/vk6JjUj.png
### フィルタまとめ#104 (2020/11/05) リリースノート
- (主な変更点)
- ■PlaybackRateChanger
- ミニモードを搭載
- localstoragを使用してミニモードを記憶するようにした
- ■UserPage
- ミニモードを搭載
- localstoragを使用してミニモードを記憶するようにした
- こちらからでもカスタムマイリストに追加可能にした
- キャッシュ率を表示するようにした
- ■カスタムマイリスト
- CMManagerの上部にリンクを表示
- fetchAll(マイリスト)
とfetchAll(投稿動画)追加しました 初歩的な事を失敗していたら大変申し訳無いのですがnd0064とnd0065の「nlApiUtilExtension」のコンパイルがうまくいきません
コマンドプロンプトでコンパイルすると「シンボルを見つけられません」のエラーがズラッとでます
extensions内のbuildすると「正常に完了できません」と出ます
txtはjavaに変えてあります
やり方を教えてくださいお願いしますm(_ _)m >>755
コマンドプロンプトで「javac -version」はどうなっていますか? >>757
javacは正常なようですね
シンボルが見つけられないというのは、必要なファイルが見つけられないということ
なのでいま一度カレントディレクトリを見直してはどうでしょうか
もしくはLTSのjava11にしか対応してないのかもしれません
java11では67warningsが出ながら一応コンパイル出来ました >>758
ありがとうございました
カウントディレクトリを見直したり、いろいろしていたらwarningsが出ながらもclaassファイルができました 新しくなったマイページにキャッシュアイコンが表示されません
どのファイルを導入すればよいでしょうか?
chrome 86.0.42 です nd0072 フィルタ改修, nllib.js
・マイリスト・履歴でページ切り替えを追跡できていなかったのを修正(>724)
・マイリスト等のページ構造変更に対応(>761)
・nllib.jsにxsStorageを追加
数ヶ月いろいろ放り出していました.ごめんなさい.
フィルタが動かなくなったのでその修正だけ取り急ぎ.
レスしないといけないのが溜まっているかもしれませんがすみませんまた後日……
>>nd0038
その後の投稿を追えていないので状況が変わっているかもしれませんが
> ローカルストレージのkeyはプレフィックス付きで使用
新規で作ったものができるだけ混ざらないようにprefixを付けましたが
互換性を捨ててまでやる必要はないかなと思ってWithoutPrefixを用意していました.
> hoge = localStorage.getItem(key);
> NicoCache_nl.xsLocalStorage.getItemWithoutPrefix(key).then((result) => { hoge = result; })
この使い方はバグってます.
Promiseのthenの挙動はsetTimeoutのようなものなので,
hoge = result;の処理も全部thenの中に書く必要があります.
> サブドメインが異なる場合
調査する余裕がないのでこれもまた後日 >>762
マイリストでキャッシュアイコンでました
ありがとうございます!m(_ _)m zenzawatchで削除済みの動画を見る方法あります?
cacheはあります >>762
お忙しい中、いつもありがとうございます。 ホント助かります >>762
> hoge = result;の処理も全部thenの中に書く必要があります.
「NicoCache_nl.xsLocalStorage.getItemWithoutPrefix(key).then((result) => { hoge = result; });」※行末にセミコロン追加
↑は、アロー関数「(result) => { hoge = result; }」が「NicoCache_nl.xsLocalStorage.getItemWithoutPrefix(key).then();」の中にあるという解釈だけど、「hoge = result;の処理も全部thenの中」とは?
「nd0040」の中にある「/local/header_light/header_plus.js」の435行目〜の処理に当てはめたら、どのように直せば良いですか?
また、「nicovideo」の前が「www.」でない場合、ローカルストレージの処理が「NicoCache_nl._xsStorage.prepare().then(() => { 〜 });」の中を経由しないとiframeの生成を待ちません。
そのためローカルストレージの処理ができず、後の処理が進みません。
この部分の正しい書き方があれば、それも記して欲しいです。 横から失礼。スレしか見てないんでアレだけど、こういうことだよね?
hoge = localStorage.getItem(key);
NicoCache_nl.xsLocalStorage.getItemWithoutPrefix(key).then((result) => {
hoge = result;
/* hogeを使う処理をここに書く */
});
/* ここではない */ nd0038で行末のセミコロンが抜けていたので、それを補うと次のように書いています。
備考:例えば↓これにnd0036を使う場合、↓↓のように変更しました。
hoge = localStorage.getItem(key);
NicoCache_nl.xsLocalStorage.getItemWithoutPrefix(key).then((result) => { hoge = result; });
「例えば↓これにnd0036を使う場合、↓↓のように変更しました。」は、「色々なゲームとかのwikiでコメント欄に用いられるような表記」で、意味するところは次の通りです。
例えば「hoge = localStorage.getItem(key);」をnd0036を使った書き方にする場合、「NicoCache_nl.xsLocalStorage.getItemWithoutPrefix(key).then((result) => { hoge = result; });」のように変更しました。
1行で書いてある「NicoCache_nl.xsLocalStorage.getItemWithoutPrefix(key).then((result) => { hoge = result; });」に改行を入れると >>768 のようにできます。
「hoge = result;」を書いている場所は、「then()」の中です。
「hoge = result;がthen()の中にあるのに中に書く必要がある」と指摘する、「hoge = result;の処理も全部thenの中に書く必要があります.」はどういう意味?という趣旨のレスが >>766 です。
※恐らく文からくみ取って解釈している物が違うため、 >>762 を見ても、具体的に処理を直してもらわないと意図したところが伝わらない。
>>767
申し訳ないですが、恐らく解釈している物が異なるため、「落とし物をした」と警察署に行って伝えた結果、日本地図を出してきて「この中のどこかにある」と言われたような状況です。
問題点がわかっているのであれば、上記をくみ取って具体的に書いていただけると助かります。 非同期処理を理解した上でのこのレスならかなり酷いと思う 問題があって解決に向かわないのであれば、upしているものを全て取り下げるのも問題の解決方法の一つと考えます。
削除用のキーを設定していないものもあるため、それらについてはお手数をおかけしますtが、「削除用のキーを指定している物の削除」を確認することで「意思の確認」とし、削除してください。
来週まで様子を見て、削除時にはこちらに書き込むかメッセージをupしておきます。
>>771
答えがわかっているということであれば、答えを書いていただけると問題が解決に向かうので助かります。 まさかとは思うけど、
hoge = localStorage.getItem(key);
を
NicoCache_nl.xsLocalStorage.getItemWithoutPrefix(key).then((result) => { hoge = result; })
に変えただけ?
だったら動くわけない。Promiseについて勉強しないとどうにもならないぞ。
>>762でPromiseについて言及があるんだから、ナニソレ?って自分で調べないと。
>>767にはURLまで貼られてるんだから、ちゃんと読んでくれ。
さらに、>>771で「非同期処理」というヒントまで与えられてるんだ。ヒントとしては十分すぎるだろう。
にもかかわらず逆切れ?勘弁してくれ。見てて痛い。
俺は当分レスしないわ。NicoCacheの話というよりJavaScriptの話だしな。
まぁ頑張ってくれ。 upしているファイルは、「確実に問題が無い」のであれば今のところ放置。
しかし、「hoge = result;の処理も全部thenの中に書く必要があります.」の意図がわからないので、問題の解決以前に認識ができません。
「upしている物を全て取り下げる」のは根本的な解決ではありませんが、「問題がある前提でそれを消す手段」としては、何もおかしな方法ではないと考えます。
予告なしの削除ではないため、「問題があるかもしれないと認識した上で、それでも必要」と思う人は、今のうちにダウンロードしておいてください。
>>773
> まさかとは思うけど、
> hoge = localStorage.getItem(key);
> を
> NicoCache_nl.xsLocalStorage.getItemWithoutPrefix(key).then((result) => { hoge = result; })
> に変えただけ?
認識による部分なので、「私の認識が違うであっても、他の人の認識では違わないであるかもしれない」という前提で、以下どうぞ。
具体的にやっていることは、>>766 の次の部分に記しているファイルの行数参照で、これ自体は意図した動作をしています。
> 「nd0040」の中にある「/local/header_light/header_plus.js」の435行目〜の処理に当てはめたら、どのように直せば良いですか?
ただし、「hoge = result;の処理も全部thenの中に書く必要があります.」が >>768 のコメントと異なるのであれば、この部分が >>766 に記しているように何を意図しているのかわかりません。
なので、バグがあるというのであれば、書き方が違うかもしれません。
ヒントは、上記のように前提となる認識、たとえるなら問題文がぼやけている状態なので、ヒントとして活用できません。
逆ギレ云々は、文章でわかるのか知りませんが、キレてはいないので何のことかわかりません。
まとめると「わからない何か」と「別の何か」を比較しているような状態なので、「わからない何か」が「わかる何か」にならないと比較結果がわかりません。
というわけでお手上げです。申し訳ない。 >>762
nd0072の差分にnllib_xsStorage.htmlがありません
nd0037に同名ファイルを見つけたのですが、このファイルで大丈夫でしょうか? >>772
Promiseと非同期処理,asyncを勉強してくれ
ES6(ECMAScript 2015)についても勉強するといい
基本的にはthenの中のresult(hoge)はthenの中の処理でしか行えない
同期処理は非同期処理より先に実行が終わるためタイミングが合わない
result の値を他の処理で使いたいときはresolve()やreturnで出す nd0074 フィルタ改修, nllib.js
・nllib_xsStorage.html同梱忘れ(>775)
しばらく見てない間にあわわわ
>>766
すみません.まず「hoge = result;の【後の】処理も」と書こうとしていたのが抜け落ちてました.
そしてnd0040は未確認だったのですが、Promise.all().thenで
処理がチェーンされるように書いてあるのでこれで問題ありません.
ちゃんと追いかけていない状態で不要な指摘をしてしまって申し訳ないです.
>>775
同梱忘れましたorz
nd0037と内容が変わっているので新バージョンじゃないとダメです. nd0075 フィルタ改修, nllib.js
・複数のxsStorageクエリを同時発行するとprepareが機能しないのを修正(>766)
>>766
www以外のサブドメインのprepareトラブル,nd0040を見てようやく再現できました.
複数のgetItemが同時実行された場合にレースコンディションが発生して
prepareが完了していないのに処理が進んでしまっていました.
割り込んだ処理もprepare完了まで待機するように修正したので
もうNicoCache_nl._xsStorage.prepare()を手動で呼ばなくとも大丈夫なはずです. NicoCache_nlのログ画面に
NicoCache_nl+150304mod+200412mod (く) (based on NicoCache v0.45)
Running with Java 11.0.1(amd64) on Windows 10
と表示されますがこれにビルド番号も表示すべきだとおもいます
Windows 10もバージョンごとにかなり前提が変わるようになってきました
例えばこんな風に:
NicoCache_nl+150304mod+200412mod (く) (based on NicoCache v0.45)
Running with Java 11.0.1(amd64) on Windows 10.0.19042 N/A ビルド 19042 >>778
どうしてもプリロードボタンが出ないのですが、nd0077の一番下のURL?(ディレクトリ?)の記述を以前同梱してあったものと同じdef経由にしてもいいですか?
extra作ってその下にjs置いたほうがいいですか?
プログラムからっきしなので的外れな事言ってたとしたら無視してください >>780
作者が違います(改変したバージョン)のでその人宛のレスはよしてください
extraで合ってます >>781
これは失礼いたしました
すみません
extra作って下にjs置きますね
>778もすみませんでした >>777-778
更新お疲れ様です。
> すみません.まず「hoge = result;の【後の】処理も」と書こうとしていたのが抜け落ちてました.
文面のつじつまが合わなかった点が解消し、問題が無いと結論しました。
> 割り込んだ処理もprepare完了まで待機するように修正したので
> もうNicoCache_nl._xsStorage.prepare()を手動で呼ばなくとも大丈夫なはずです.
大丈夫である事を確認しました。
--------
nllib.jsの198行目について。
HTMLのソース内でbody要素よりも前にあるスクリプトから処理が呼び出されるとき、スクリプトが「document.body」が用意されるのを待たずに動くと次のようなエラーになります。
Uncaught TypeError: Cannot read property 'appendChild' of null
※Google Chromeで確認。
「nllib.jsを使うスクリプト」がHTMLの解釈を待つかbody要素の中にあれば問題ないです。
consoleに上記を説明するメッセージを出すか、「document.body」が用意されるまで198行目の処理を待つのが無難だと思います。 ■ このスレッドは過去ログ倉庫に格納されています