Giter Site home page Giter Site logo

furubarug / fanbox-downloader Goto Github PK

View Code? Open in Web Editor NEW

This project forked from darekasan/fanbox-downloader

38.0 38.0 4.0 319 KB

pixiv FANBOXの投稿を投稿毎にフォルダ分け → ZIPとして一括ダウンロードするブックマークレット

TypeScript 96.43% JavaScript 3.57%

fanbox-downloader's People

Contributors

aodaruma avatar darekasan avatar eggplants avatar furubarug avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

fanbox-downloader's Issues

URLに使用不可能な文字の変換処理

なんか一部の文字の変換処理が上手くいかないことがある。
コピペだと普通にファイル名として使用出来るから謎
API取得部分か、圧縮・解凍で何か起きてるのかもなと

ファイル名に使えない文字

ファイル名に使えない文字がタイトルとなっている場合に、エスケープして対応する。
ただし、内容htmlでは元の文字列のままであるのが望ましい。

zipダウンロード時、Firefoxで利用すると空の内容のzipがダウンロードされる

こんにちは。いつも利用させていただいております。

Firefoxでブックマークレートから利用すると、jsonのコピー→download開始までは実行できるのですが、zipのダウンロード時に、進行度が進んでいるにも関わらず、100%になっても空のzipのままである、という問題が発生しています。

利用しているFirefox Browserは、最新のFirefoxです。
この問題は、現状Firefoxのみで確認しており、OperaやGoogle Chromeでは正常に動作していることは確認済みです。
また、MacOS (macOS Catalina, 10.15.7) 及び Windows 10 (21H2)で、同様の問題が確認しています。

TypeScript化

  • 型関係がめんどうだからTS化したい
  • 嫌いだから書かないと思うけどテスト追加するのも楽そう
  • uglifyとの連携がめんどうかも

動画ファイルの表示対応

#72 と関連。動画ファイルも <video controls>などで表示するようにしたい。

出来ればファイルリンクもカード化したいのだけれど、文字サイズに合わせた調整とか面倒そう(min-heightとかでいける?)

非アクティブ時のコピー処理

ウィンドウが非アクティブだとクリップボードへの書き込みが失敗する。
失敗時に、ウィンドウクリックイベントにコピー処理を仕込むなどの対応を行う。

ファイル表示方法検討

画像でもファイルとして添付されていることがある。
サムネイル表示されていた方が嬉しいかもしれない。

取得する投稿の選択機能

今は取得する投稿として、無料のを弾くのと件数だけ選択できるようになってる。
個別に見れた方が便利かも。

チェックボックス付きで各投稿並べる感じで、マウスオーバーで説明文とカバー画像出せるといいかな
投稿はタグでフィルタ出来ると便利そう

infoのjsonファイル出力

概要

ダウンロードされるディレクトリに生成されるinfo.txtについて、外部プログラムでも処理できるようにjson形式のデータファイルも生成したい

想定される動作

ダウンロードされるディレクトリに、json形式のinfoを出力する

いつも利用させていただいています、ありがとうございます!

embedMapの表示対応

embedMap: たぶんだけどFANBOXとか支部内部のリンク情報
の表示に対応していない。

同一作者ならローカルのリンク、それ以外は外部リンクが望ましいかも。
ぶっちゃけ仕様調べるのが面倒だからあんまりやりたくない

iframe表示問題

埋め込み型外部リンク(ついったとか)がiframeで表示されてる
Web上なら設定書けばいいんだけど、ローカルだとセキュリティの問題とかで面倒
埋め込みhtml内にiframeがある場合に、正規表現とかでリンク抜き出して外部リンク化表示するのが丸いかなと

投稿情報一覧取得内容が空になる

単体投稿だと問題なし。
軽くJSON見た感じだと、FANBOXのAPI仕様が変わって一覧取得に投稿内容が含まれなくなったっぽい
後で詳しく調べる

UI関連の外だし

ファイル長くなってきたしUI系は分けたい
他のやつでも使いそうだし共通化して外部から読み込む感じで

ユーザーIDの取得バグ

正規表現が正確じゃなくて、ユーザーIDだけじゃなくてそのあとに続く文字もとってきちゃう

重複タイトルに対応していない

投稿オブジェクトを配列でなくオブジェクトで保持してるのが原因。
投稿順序のことも考慮して、配列に変更する。
(逆になんで今までオブジェクトにしてたのか過去の自分が何考えて実装したのかほんとに謎)

不明な型への対応

現在分かってない型

  • 投稿のtype: "text" → テキストだけの投稿でもtypeがarticleのことが多くて確認できてない
  • 投稿のtype: "article"のembedMap → 存在だけあるけど中身詰まってるの見たことない
  • 投稿のtype: "article"のurlEmbedMapのhtml以外の型 → 他と違ってわざわざtypeとなってるので拡張がありそう

DL失敗時の対応

たまに画像のDLに失敗する

失敗したとき、ZIPの生成も失敗する
一応は一時ファイルに残ってるからそこからの解凍は可能

特にサイズでかいときに失敗するととても悲しい
一回くらいは失敗しても再ダウンロード試みて、ダメだったらエラーハンドリングしよう

replaceの不具合

正規表現でなく文字列指定していると、一致した先頭以外は取り替えられないらしい

ZIPアルゴリズムの対応

現状のZIPアルゴリズムは4GBまでしか対応していないらしい

ツールにもよるけど、エラーが出るけど一応4GB越えで最後まで解凍できる

bit云々の問題な感じ?詳しく読んでないけど自前のビット演算でなんかやってる感じな気がする
ZIPアルゴリズムはうろ覚えだけど前組んだことあるから頑張ればいけそう

export functionが消える

webpack(parcelもだけど)でビルドするとなんかexport functionが消失する。
取りあえず今は適当なオプションでwindowに入れさせてるけど、ちゃんとexport functionして欲しい。

クリエイターの投稿のjson収集時にTypeErrorが発生する問題

クリエイターの投稿情報をjsonで収集する際、TypeErrorが発生しjsonをコピーできなかったため、問題を報告させて頂きます。

エラーダイアログ: エラー出た(TypeError: Cannot read properties of undefined (reading 'getEncodedName'))

なお、開発者ツールのコンソールには、該当するエラーの詳細は確認できませんでした。
何卒よろしくお願いします。

メモリの使用量を減らす

ファイル数が増えるとメモリが足りなくなって落ちる
一時ファイルでどうこうする
すとりーむとかでもどうにかなるらしい

外部からimportできない

exportが上手く機能してない感じ

tsconfigのコンパイル方法でコードが変わる
とりあえずmoduleをes2015にして様子見
(es2020にしたいけどuglifyjsがoptional chaining関連でエラー吐く)

画像のフォルダ分け

ユーザー名/投稿タイトルのようにフォルダ分けされて保存された方が便利
普通には保存フォルダが指定できないのでZIP化するとよさそう

同一ファイル名対応

同一タイトルの投稿には対応しているが、一つの投稿に複数の同一名ファイルが存在している場合にエラーとなる。
FANBOXはダウンロード時にファイル名を設定する形式+一括ダウンロードを提供していないことから同一ファイル名を許すようにしているらしい。
タイトルの重複同様に適当な数字を振って重複を解決するようにする。

例. a.jpgのあとにa.jpga(2).jpgとして保存(※最初のa.jpgはナンバリングしない。実装が面倒なので)

  • a.jpg, a.jpg, a(2).jpg, a(2)(2).jpg みたいな場合にナンバリングがおかしくなりそうだけど今回は無視
  • 全部を全部上手く処理するには重複時にフォルダにつっこむとかしかなさそう。a/1.jpg, a/2.jpgみたいな
  • あるいはFANBOXみたくファイル名には適当な名前つけといてhtml側にのみ本来の名前を表示するとかかな
  • html表示前提ならそれでよさそうだけど、これの目的としてはhtml機能はついででファイルの保存がメインだから不採用

タグが入ってない

全体のタグが集まっていない。
プラン関連側のみ入っているので連結時の問題?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.