furubarug / fanbox-downloader Goto Github PK
View Code? Open in Web Editor NEWThis project forked from darekasan/fanbox-downloader
pixiv FANBOXの投稿を投稿毎にフォルダ分け → ZIPとして一括ダウンロードするブックマークレット
This project forked from darekasan/fanbox-downloader
pixiv FANBOXの投稿を投稿毎にフォルダ分け → ZIPとして一括ダウンロードするブックマークレット
なんか一部の文字の変換処理が上手くいかないことがある。
コピペだと普通にファイル名として使用出来るから謎
API取得部分か、圧縮・解凍で何か起きてるのかもなと
ファイル名に使えない文字がタイトルとなっている場合に、エスケープして対応する。
ただし、内容htmlでは元の文字列のままであるのが望ましい。
こんにちは。いつも利用させていただいております。
Firefoxでブックマークレートから利用すると、jsonのコピー→download開始までは実行できるのですが、zipのダウンロード時に、進行度が進んでいるにも関わらず、100%になっても空のzipのままである、という問題が発生しています。
利用しているFirefox Browserは、最新のFirefoxです。
この問題は、現状Firefoxのみで確認しており、OperaやGoogle Chromeでは正常に動作していることは確認済みです。
また、MacOS (macOS Catalina, 10.15.7) 及び Windows 10 (21H2)で、同様の問題が確認しています。
#93 と関連。
一つの投稿のエラーで他の投稿も巻き込まれてしまうのでスキップ対応するようにする。
適当に例外拾って回すだけで実現出来そう。
余裕があればエラー情報の詳細を吐き出せるようにもしたいね
/で割り算しちゃってる
ファイルの表示後に改行忘れてる
#72 と関連。動画ファイルも <video controls>
などで表示するようにしたい。
出来ればファイルリンクもカード化したいのだけれど、文字サイズに合わせた調整とか面倒そう(min-heightとかでいける?)
分かりにくいのでどうにかする
CSSわからないマン
たすけて
本文欲しい…欲しくない?
ウィンドウが非アクティブだとクリップボードへの書き込みが失敗する。
失敗時に、ウィンドウクリックイベントにコピー処理を仕込むなどの対応を行う。
直したと思ったら後から気づく
寝不足って怖いね
上から順番に画像とかファイルいれてたけど、順番関係ないっぽい
表示順に保存するようにしたい
指摘もらったのでビルド方法とかをてきとうに追加する
ダウンロードの進捗状況を画面に表示しよう
画像でもファイルとして添付されていることがある。
サムネイル表示されていた方が嬉しいかもしれない。
今は取得する投稿として、無料のを弾くのと件数だけ選択できるようになってる。
個別に見れた方が便利かも。
チェックボックス付きで各投稿並べる感じで、マウスオーバーで説明文とカバー画像出せるといいかな
投稿はタグでフィルタ出来ると便利そう
consoleのログに適当に追加する
謎
ダウンロードされるディレクトリに生成されるinfo.txtについて、外部プログラムでも処理できるようにjson形式のデータファイルも生成したい
ダウンロードされるディレクトリに、json形式のinfoを出力する
いつも利用させていただいています、ありがとうございます!
embedMap: たぶんだけどFANBOXとか支部内部のリンク情報
の表示に対応していない。
同一作者ならローカルのリンク、それ以外は外部リンクが望ましいかも。
ぶっちゃけ仕様調べるのが面倒だからあんまりやりたくない
埋め込み型外部リンク(ついったとか)がiframeで表示されてる
Web上なら設定書けばいいんだけど、ローカルだとセキュリティの問題とかで面倒
埋め込みhtml内にiframeがある場合に、正規表現とかでリンク抜き出して外部リンク化表示するのが丸いかなと
type: article だとテキストでなくタグっぽいものがblocksに格納されている。
html を構成できそう?
単体投稿だと問題なし。
軽くJSON見た感じだと、FANBOXのAPI仕様が変わって一覧取得に投稿内容が含まれなくなったっぽい
後で詳しく調べる
ファイル長くなってきたしUI系は分けたい
他のやつでも使いそうだし共通化して外部から読み込む感じで
#registerWorker
が死んでる
正規表現が正確じゃなくて、ユーザーIDだけじゃなくてそのあとに続く文字もとってきちゃう
投稿オブジェクトを配列でなくオブジェクトで保持してるのが原因。
投稿順序のことも考慮して、配列に変更する。
(逆になんで今までオブジェクトにしてたのか過去の自分が何考えて実装したのかほんとに謎)
改行とか幅とか調整する
tsconfigだけの最小限の環境にする
ビルドはtsc --build tsconfig.json
現在分かってない型
type: "text"
→ テキストだけの投稿でもtypeがarticleのことが多くて確認できてないtype: "article"
のembedMap → 存在だけあるけど中身詰まってるの見たことないtype: "article"
のurlEmbedMapのhtml以外の型 → 他と違ってわざわざtypeとなってるので拡張がありそうダウンロードサイズが大きいときになんかダウンロード失敗することが多い気がする
たまに画像のDLに失敗する
失敗したとき、ZIPの生成も失敗する
一応は一時ファイルに残ってるからそこからの解凍は可能
特にサイズでかいときに失敗するととても悲しい
一回くらいは失敗しても再ダウンロード試みて、ダメだったらエラーハンドリングしよう
正規表現でなく文字列指定していると、一致した先頭以外は取り替えられないらしい
type: textに出会ったことがないので分からない
情報募集中
現状のZIPアルゴリズムは4GBまでしか対応していないらしい
ツールにもよるけど、エラーが出るけど一応4GB越えで最後まで解凍できる
bit云々の問題な感じ?詳しく読んでないけど自前のビット演算でなんかやってる感じな気がする
ZIPアルゴリズムはうろ覚えだけど前組んだことあるから頑張ればいけそう
webpack(parcelもだけど)でビルドするとなんかexport functionが消失する。
取りあえず今は適当なオプションでwindowに入れさせてるけど、ちゃんとexport functionして欲しい。
縦横比がダメなので直す
クリエイターの投稿情報をjsonで収集する際、TypeErrorが発生しjsonをコピーできなかったため、問題を報告させて頂きます。
エラーダイアログ: エラー出た(TypeError: Cannot read properties of undefined (reading 'getEncodedName'))
なお、開発者ツールのコンソールには、該当するエラーの詳細は確認できませんでした。
何卒よろしくお願いします。
ファイル数が増えるとメモリが足りなくなって落ちる
一時ファイルでどうこうする
すとりーむとかでもどうにかなるらしい
main関数をexportする
exportが上手く機能してない感じ
tsconfigのコンパイル方法でコードが変わる
とりあえずmoduleをes2015にして様子見
(es2020にしたいけどuglifyjsがoptional chaining関連でエラー吐く)
ネットワークエラー以外rejectされないから response.ok をみないといけないらしい
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#checking_that_the_fetch_was_successful
ユーザー名/投稿タイトルのようにフォルダ分けされて保存された方が便利
普通には保存フォルダが指定できないのでZIP化するとよさそう
同一タイトルの投稿には対応しているが、一つの投稿に複数の同一名ファイルが存在している場合にエラーとなる。
FANBOXはダウンロード時にファイル名を設定する形式+一括ダウンロードを提供していないことから同一ファイル名を許すようにしているらしい。
タイトルの重複同様に適当な数字を振って重複を解決するようにする。
例. a.jpg
のあとにa.jpg
→ a(2).jpg
として保存(※最初のa.jpg
はナンバリングしない。実装が面倒なので)
a.jpg
, a.jpg
, a(2).jpg
, a(2)(2).jpg
みたいな場合にナンバリングがおかしくなりそうだけど今回は無視a/1.jpg
, a/2.jpg
みたいな全体のタグが集まっていない。
プラン関連側のみ入っているので連結時の問題?
fanbox見てきたらテキストは最下部だったので直す
たすけて
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.