Closed H41Ri0 closed 21 hours ago
NEXT_PAGEで指定するクラスは次のページだけのリンクなので、ノベルアップ+の場合は次のページへのリンクのクラスが決まっていなので使えそうにはない。 ノベルアップ+に対応したページャーの取得方法を考える必要がありそう。
extract.txtに次のページに値するURLを正規表現で書いて\?\=(?!0|1)\d
それ参照してページ取得するのはどうなのでしょうか。
現状だとなろうもノベルアップ+も次のページはxxxx?=2やxxxx?=3なので有効そうだとは思うのですが、次のページのURLをハッシュ化とかされたら詰みますかね?
現行と改善案のアルゴリズムを比較
改善案
勉強になります。あくまで自分の理解用に書いたのですが以下のようなアルゴリズムで合ってます?
1.ページャーと次のページが定義されている時ページャーを見に行く 2.ページャーURL(xxxxx?p=n)をページ読み込みエラーが出るまで取得し格納しておく 3.2で取得したURLリストをダウンロード部分に投げる 4.3で取得した内容をINDEXに追加 5.ページャーURLが終わるまで3-4を繰り返し 6.取得終了したINDEXを任意形式で出力
ページャー機能を作ったときのメモ書き https://kyukyunyorituryo.github.io/i/narou100/
Chrome デベロッパー ツールでDOMの取得を試したりなど。
「ノベルアップ+でのページャー対応」の仮対応をしてみた。 なろうの方はまだやっていないので動かない。
https://github.com/kyukyunyorituryo/AozoraEpub3/commit/4295351d7f551ce408534c63e82e737eace2ad1d
素早い対応有難うございます。
ページャー対応ノベルアップ+は確認できましたがページ対応まで進んでいない作品(100話以降まで続いていない作品)ではエラーが発生しました。確認作品:オットー・フォン・ハイデッカーはゲーム脳∵悪魔の軍団
extract.txt
はgitから落とした状態のままです。
エラー内容は以下になります。
https://novelup.plus/story/406531126 を読み込みます
URL修正
https://novelup.plus/story/406531126 : List Loaded.
ページャーがありません
java.lang.NullPointerException: Cannot invoke "org.jsoup.select.Elements.attr(String)" because "last_page" is null
at com.github.hmdev.web.WebAozoraConverter.convertToAozoraText(WebAozoraConverter.java:308)
at AozoraEpub3Applet.convertWeb(AozoraEpub3Applet.java:3908)
at AozoraEpub3Applet$ConvertWorker.doInBackground(AozoraEpub3Applet.java:4066)
at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:305)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:342)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
エラーが発生しました : Cannot invoke "org.jsoup.select.Elements.attr(String)" because "last_page" is null
エラー見るに100話超えてないのでlast_pageがHTML上に存在しておらず取得できないエラーですかね?多分
last_pageのnull判定の前にlast_pageを使おうとしてnullエラーが出ていた。 https://github.com/kyukyunyorituryo/AozoraEpub3/commit/3fa88842641436fe021da587813275afc9b854ff なろうの方も対応させた。 https://github.com/kyukyunyorituryo/AozoraEpub3/commit/067516e973d44927b519bc594f0706f27bca2839
素早い対応有難うございます。 101話以上、100話以下のなろうとノベルアップ+の作品の取得成功確認を行いました。 エラーも確認できませんでした。 なろう、ノベルアップ+以外の確認は行ってません。
改めてありがとうございます。
ノベルアップ+もページ対応型になっていました。
web/novelup.plus/extract.txt
にページャーの上限
PAGER_MAX 100
ページャーリンクのクラスネーム
NEXT_PAGE .js-gtag を追加してもエラーが発生しました。 取得を行おうとした作品は【web版】Lv2からチートだった元勇者候補のまったり異世界ライフです。 以下エラー内容になります。
素人なのでざっとしか追えませんでしたがダウンロード部分でエラーが発生しているようです。