EndlessMISAKA / AtelierMisaka

To show and download content on Fanbox or Fantia or Patreon.
MIT License
150 stars 20 forks source link

Fantia download error #22

Closed noriokun4649 closed 3 years ago

noriokun4649 commented 3 years ago

There was an error downloading from Fantia.
error massage is

------------------
2021/02/26 8:24:05
長さを 0 未満にすることはできません。
パラメーター名:length
   場所 System.String.Substring(Int32 startIndex, Int32 length)
   場所 AtelierMisaka.FantiaUtils.GetUrls(String pid, List`1 bis)
   場所 AtelierMisaka.FantiaUtils.GetPostIDsFromWebCode(String uid, Int32 index)
   場所 AtelierMisaka.FantiaUtils.<>c__DisplayClass10_0.<GetPostIDs>b__0()
-----------------------------------------------

An exception has occurred on line 340 of FantiaUtils.cs. When I debugged with a debugger, imgUrl was not a string like "https://cc.fantia.jp/uploads/album_image/file/xxxxx/xxxxxx.jpg?Key-Pair-Id=xxxxxxxxx" but "data:image/png;base64,xxxxxxxxxxx=" A character string like this was assigned.

EndlessMISAKA commented 3 years ago

こんなフォーマットのURLも使ってるのか...これは修正が必要ですね。

(日本語でいいよ、英語はちょっと苦手ですwww)

EndlessMISAKA commented 3 years ago

あ、言い忘れてた、そのpostのJsonDataをtxtファイルの形でここにuploadして頂けませんか? その画像に関連しているデータを確認したいです。 Fantiaのkeyは10分後に無効になるから、JsonDataを取得し、10分後にuploadすれば安全です。

noriokun4649 commented 3 years ago

返信ありがとうございます。 https://gist.github.com/noriokun4649/cc68bf0a92d22b1f0b2b4851088681c8 gistに上げておきました。

ことなるコンテンツIDで同じような文字列が4つぐらい出てきてるので謎です......

EndlessMISAKA commented 3 years ago

修正完了です、新しいバージョンでチェックしてくださいね。

data:imageの内容をちらっと見ましたが、1pxのbackgroundみたいです。 Keyは無効になりましたので、ダウンロードの可能性はまだわかりません、返事をお願いします。

noriokun4649 commented 3 years ago

反応遅れまして申し訳ありません。

試して見ましたが、今回問題になっていたdata:imageの奴が該当のID.pngのような画像としてタスクに入ることで、該当のbackgroundが404となりダウンロードが止まってしまい、この投稿以降の投稿分がダウンロードできません。

EndlessMISAKA commented 3 years ago

Http404ですか、Chromeの開発者ツールの「Network」ページに、そのdata:imageの奴のoriginal_urlに関するリクエストはありますでしょうか? これ以降の投稿がダウンロード出来ない原因は継続の判定が甘かったです、いま修正しています。

noriokun4649 commented 3 years ago

Networkにoriginal_urlに関するリクエストは見つけられませんでしたが、urlの「data:image/png;base64,xxxxxxxxxx」のリクエストが1回だけそのまま行われているようです。 リクエストURLも「data:image/png;base64,xxxxxxxxxx」でリクエストメソッドはGETでした。 リファラpolicyはstrict-origin-when-cross-originになっていてオリジン間リソース共有が絡んでそうです。 レスポンスで表示できる物はありませんでしたが、こないだ言われてたような1pxのpng画像で間違い無いようです。

EndlessMISAKA commented 3 years ago

これはちょっと困りますね、ブラウザーでそのpostの内容に何か不自然なところはありますでしょうか? もし画像自体が存在しない場合、Http404のエラーを表示して良いでしょうか? 完全無視にも行かないし、Http404が沢山出るのも迷惑ですね。

noriokun4649 commented 3 years ago

うーんElementタブにてHTML上に該当する1pxの画像を含むタグがあるか見てみたところ、一応通常の画像同様に存在しておりました。 でタグのhrefのリンクに飛んで見ましたが404になったので、「data:image/png;base64,xxxxxxxxxx」におけるoriginal_urlは404になるのが妥当なのかもしれません...... F5で更新してすぐでも404になるので仕様ですかねぇ...... Http404のエラーを表示しても大丈夫だとは思いますが、通常の画像におけるHttp404と区別できる方法があると良いかもです。DLできてない画像があるんじゃないかと気になっちゃうので

EndlessMISAKA commented 3 years ago

それは確かに気になっちゃうよね。 なら、エラーの表示を「Http500」に変更します。 ReadMeも更新しないといけないですね。

EndlessMISAKA commented 3 years ago

リリースしました、確認をお願いします

noriokun4649 commented 3 years ago

確認しました。 該当の画像でHttp500になって居るのを確認しました。 また、Httpエラーが出ても継続的にダウンロードできるのも確認しました。 ありがとうございます!

EndlessMISAKA commented 3 years ago

こちらこそ、レアなバグを見つけてくれて、誠にありがとうございます!