507レス(11/11)
1:
作者★2017/11/21(火) 15:28:21
不具合と思われた挙動をした時はこちらに書き込んでください。

報告用テンプレ
-----------------------------------------
Narou.rb のバージョン:

OS のバージョン:

その他環境情報(任意):

何が起きたのか:

再現方法(何をやったら起こったのか詳細に):

-----------------------------------------
エラーメッセージは再現方法に併記。
その際は --backtrace オプションをつけること。
458:
sage2021/08/15(日) 17:36:24 suykhfJ.(3/3)
456ですが、もしかしたらと思うことが出てきましたので書き込んでおきます
ユーザー名が2バイト文字なので(漢字)それが悪影響を及ぼしているのかも?
と思っています。ただ、今まで(ruby2.5環境)は動いていたので本当にそれが原因なのか確信が持てません
459:
sage2021/08/16(月) 05:28:18 fqJzKOmc
456です
進展がありましたので書き込みます

ログを調べていたところ
C:/Ruby30-x64/lib/ruby/3.0.0/fileutils.rb:253:in `mkdir': Permission denied @ dir_s_mkdir - C:/Users/���V���Y/.local (Errno::EACCES)
が気になったのでネット情報を漁ったら書き込み権限がユーザーにないのが原因との情報があり、念のため該当フォルダを確認したところ管理者にしかフルアクセスが無かったのを
ユーザーにもフルアクセスを与えたところ状況が改善しました。
この後書き込みが無ければ問題は解決したものと思ってください
460(1):
名無しさん[sage] 2021/08/20(金) 23:43:46
不具合のように思われるので報告と質問です。

作品の更新時、稀に「更新後の話数: 0」と処理される場合があります。
このとき、narou.rbはエラーを出しません。
再現性が悪く原因がわからないのですが、対処方法はありますか。

-----------------------------------------
Narou.rb のバージョン: 3.8.0
OS のバージョン:FreeBSD 13.0-RELEASE-p3
その他環境情報(任意):
何が起きたのか:

$ narou u -a

実行時に、稀に任意の作品で「更新後の話数: 0」となる場合がある。
数千作品の更新あたり1回くらいの割合で発生する。

(例)- - - - - - - - - - - - - - - - - - - - - - - - - - -
追放された悪役令嬢が家宝の鎧で返り咲く
更新後の話数が保存されている話数より減少していることを検知しました。続き42行
461(1):
作者★2021/08/21(土) 00:03:17
>>460
再現方法がわからないと修正は難しそうですが、
対処方法? とりあえず勝手に更新してほしいなら、
download.choices-of-digest-options
を設定すれば良いと思います
462:
名無しさん[sage] 2021/09/04(土) 14:08:19
>>461
ありがとうございます。
常に全部更新していいかというと微妙なのが困りどころです。
環境はそのままですが、最近調子が良くなって問題が再現しなくなりました。
一時的な何かの支障だったと考えることにします。
463:
名無しさん2021/09/28(火) 09:39:04 J.Dge3wI
Narou.rb のバージョン:3.8.0

OS のバージョン:win10 20H2

その他環境情報(任意):

何が起きたのか: C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/narou-3.8.0/lib/device.rb:153:in `copy_to_documents': パラメーターが間違っています。 (Device::SendFailure)
        と出て止まってしまう
        KindleかPCが悪いかわからない

再現方法(何をやったら起こったのか詳細に):小説のアップデート中に必ず起きます
464:
名無しさん[sage] 2021/10/23(土) 22:33:07
Narou.rb のバージョン:3.8.0
OS のバージョン:Debian 11.1 Intel-x64
何が起きたのか: タイトルにパス区切り記号(/)を含むなろう掲載小説でダウンロード・変換までは正常だが、
AozoraEpub3に変換済みのファイルを渡す際にパス区切り記号の後に余計なデータが繋がり、File name too longで
エラーになる。
再現方法: なろう掲載小説 n6328ec をダウンロード・変換させる。
465(1):
名無しさん[sage] 2021/11/06(土) 23:45:40
win10のシステムロケールの設定で"ベータ: ワールドワイド言語サポートでUnicode UTF-8を使用"にチェック入れてるとファイル変換段階でバグっちゃいますねー
466:
名無しさん[sage] 2021/11/07(日) 16:17:25
>>465だけど、英語環境で動かないって既に議論されてたね。ごめんなさい
467:
名無しさん2021/12/16(木) 20:05:32 fn9EN6v.
"narou l"でリストID:1000以上を表示するとID3桁未満とID4桁でカラムがズレます。
これだけなら大した問題ではないのですが各所で4桁対応がされていない可能性があります。
468:
名無しさん2021/12/20(月) 07:46:42 wRlianl.
Narou.rb のバージョン:3.8.0
OS のバージョン:Windows 10 Pro 21H1 19043.1415
        ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x64-mingw32]
何が起きたのか: なろう小説、特定話にて、ダウンロードが異常終了する

第166部分 162.冬ごもりをしています (166/176)C:/App/Ruby30-x64/lib/ruby/gems/3.0.0/gems/narou-3.8.0/lib/downloader.rb:1047:in `different_section?': undefined method `[]' for false:FalseClass (NoMethodError)
from C:/App/Ruby30-x64/lib/ruby/gems/3.0.0/gems/narou-3.8.0/lib/downloader.rb:1017:in `block in sections_download_and_save'
from C:/App/Ruby30-x64/lib/ruby/gems/3.0.0/gems/narou-3.8.0/lib/downloader.rb:990:in `each'

再現方法:narou d N7295FL

OS再インストール直後で、ほとんどの環境は入れたばかりです。
以前はダウンロードできていたタイトルで、再ダウンロードの現在発生している状況です。
469:
名無しさん2021/12/22(水) 07:06:11 EychTgLQ
>468

お騒がせして申し訳ありませんでした。自己解決しました。

その後、他のタイトルでも同様の「`[]' for false:FalseClass」エラーが出現するようになったため再度調査しました。

結果、rawではダウンロードできている話が本文以下ではサイズ0となっており、ファイルは存在するが中身がない、という状態であることがわかりました。

対処としては、本文以下のサイズ0の.yamlファイルを削除したのちにupdateを掛けることで修復できました。

今回の問題の起点となった、「htmlダウンロード後本文への変換が、いつの間にかサイズ0で失敗していた。しかも最新話ではないことから、途中の特定話が修正されたかなにかで再ダウンロードされた際に発生したと思われる」については、発生タイミング、原因など不明なままですので、今後何かわかればまた投稿させていただきます。

お騒がせしました。
470:
名無しさん2021/12/28(火) 15:06:26 Q5APNNrI(1/2)
Narou.rb のバージョン:3.8.1
OS のバージョン:Windows 8.1 Pro
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x64-mingw32]
何が起きたのか:Narou.rbの変換が失敗する
初ダウンロードの小説です。

C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/narou-3.8.1/lib/extension.rb:39:in `renam
e': No such file or directory @ rb_file_s_rename - (D:/@epub/小説データ/小説家に
なろう/33/n3398fz 【読んで後悔させません!】ブレイドスキル・オンライン ~ゴミ職
業『サモナー』で最弱武/f7e766f057eb554396d1fee1778b1d, D:/@epub/小説データ/小説
家になろう/33/n3398fz 【読んで後悔させません!】ブレイドスキル・オンライン ~ゴ
ミ職業『サモナー』で最弱武/[9月25日漫画『底辺領主の勘違い英雄譚』&『ブレスキ
』発売! さらに『貧乏令嬢』『黒天の魔王』『破滅フラグしかない悪役貴族』『処刑令
嬢逆行記』発売中! 一つでも気になった方は検索を! 作者:馬路まんじ] 【読んで後
悔させません!】ブレイドスキル・オンライン ~ゴミ職業『サモナー』で最弱武器『弓
使い』でクソステータス『幸運値極振り』の俺、いつのまにか『ラスボ...) (Errno::ENO
ENT)
from C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/narou-3.8.1/lib/extension.rb:39:in
`write'
from C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/narou-3.8.1/lib/novelconverter.rb:続き3行
471:
名無しさん2021/12/28(火) 15:09:35 Q5APNNrI(2/2)
backtraceのログを貼ろうとしたら、本文が長過ぎとエラーが出て貼り付けできませんでsi
た。
472:
名無しさん[sage] 2021/12/29(水) 10:17:21
ファイルパスが長すぎるとエラーになるので出力ファイル名の設定等を使って短くしましょう
473(2):
名無しさん2022/01/24(月) 10:13:15 JutCV7xM(1/2)
Narou.rb のバージョン:3.8.1

OS のバージョン: Windows 10 21H2 (19044.1469)

その他環境情報(任意): 改造版AozoraWpub3(kyukyunyorituryo) 1.1.1b12Q

何が起きたのか:特定の小説が返還の際にファイルサイズは正常だが破損する。
正常に変換ができたと表示される

再現方法(何をやったら起こったのか詳細に):https//syosetu.org/novel/232822/
https//kakuyomu.jp/works/1177354054935344286
                      上二つのような小説を変換する際、Narou rb 側では変換が成功したと表示されるが、epubファイルが破損していて開けない。ファイルサイズは正常。

つい先日までは全く同じ環境(Java,Rubyのバージョンも含め)正常に動作していましたが、最近になってepubファイルが破損するようになりました。
naarou rb ではエラーログが一切表示されませんでした。
474(1):
名無しさん[sage] 2022/01/24(月) 13:43:25
>>473
超縦書2.3.1ではエラーが出て開けないね(ファイルが壊れています。コンテンツを再ダウンロードしてお試しください。(003003))
Kinoppy for Windows3.2.16だと開けるけど目次が認識されてない
変換対象をKindleにしてmobiを出力した場合はKindle PaperwhiteとKindle for Windowsどちらでも目次含めて問題なく開ける

Narou.rb Version 3.8.1
Win10 21H2 (OS ビルド 19044.1466)
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x64-mingw32]
AozoraEpub3-1.1.1b12Q
475:
名無しさん2022/01/24(月) 20:05:22 JutCV7xM(2/2)
>>474

超縦書きで開けないのと、メインで使ってるiPadのブックアプリで使えないです...
メイン読書端末がiPadなんでどうしてもepubにしたいんですよ...

他の小説だと全く同じ環境(挿絵ありなしも確認済み)でも正常に作られるんですが...
476:
名無しさん[sage] 2022/01/25(火) 13:46:40
それAozoraWpub3の問題だからここに報告しても解決しない。
改造版を使ってるなら改造した人に報告すれば修正してくれるかも。

試しにチェッカーに通して見た感じnavの入れ子構造に問題があってそれでエラーになってる。
サクッとタグを消したら普通に読み込まれたから、多分ね。
477(1):
名無しさん2022/01/25(火) 23:25:56 nyZ./Ey.
>>473
改造版の小説ダウンロード機能を使って変換したEPUBなら超縦書で開けた。
narou.rbが出力するテキストの見出しが変なのでは。
478:
名無しさん2022/01/27(木) 13:29:46 zfYkuadw
>>477
こちらの環境でも改造版で変換すると確かに開けました。
479(1):
名無しさん2022/01/29(土) 09:07:23 hdp2CtI.
Narou.rb のバージョン:3.8.1

narou clean -af

してもゴミファイルが消えない。

本文の方のyamlはキレイになったが、rawの方のhtmlファイルは掃除されていない。
480:
だんり[sp110011@gmail.com] 2022/02/22(火) 00:17:33
Narou.rb のバージョン:3.8.1

目次データが取得出来ませんでした
何らかの理由により目次が取得できませんでした
481(1):
bulrush2022/02/26(土) 15:18:19 mOLugSBY
Narou.rb のバージョン:3.8.1
m1mac
ruby3.1.0

タイトルの最後に全角スペースがあると変換に失敗する問題があったので
暫定ですが下記の修正をして解決しました。
普段rubyを使っていないので、修正箇所も含めもっと良い方法があるかと思います。
何かと対応していただければ助かります。

例:「八男って、それはないでしょう! 」

def get_file_title
# すでにデータベースに登録されているならそれを引き続き使うようにする
file_title = record&.dig("file_title")

return file_title if file_title
ncode = @setting["ncode"]
return ncode unless @setting["append_title_to_folder_name"]
scrubbed_title_ = Helper.replace_filename_special_chars(get_title, true).strip
scrubbed_title = scrubbed_title_.gsub(/ /," ").strip続き3行
482:
名無しさん2022/03/02(水) 21:00:25 mdzuvD3A
>>479
narou/lib/command/clean.rb を確認したところ
関数 find_orphans では
raw フォルダで拡張子 txt のファイルと
本文 フォルダで拡張子 yaml のファイルのみをチェックし、
拡張子 html のファイルはチェックしていないようです。
このため、raw フォルダで拡張子 html のファイルが削除されないと思います。


>>481
下記の条件で小説家になろうから epub ファイルに変換してみましたが、
問題なく変換できることを確認しました。
このため、環境による影響も考えられます。
報告用テンプレに沿った形式で不具合の詳細を記載してください。

[条件]
Linux Mint 20.3
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
openjdk 11.0.13 2021-10-19
narou 3.8.1続き2行
483(1):
cube2022/03/23(水) 22:11:48 zSqMg0R2
要望スレとどちらに書こうかと思いましたが一応不具合なのでこちらに
Narou.rb のバージョン:3.8.1

OS のバージョン:windows10

その他環境情報(任意):kindleのファームウェアバージョン kindle 5.13.7

何が起きたのか:https://ncode.syosetu.com/n9584gd/ ←この作品をkindle paperwhiteに変換&転送したところ
kindle上でファイルが表示されない

再現方法(何をやったら起こったのか詳細に):PCからはkindle内に変換されたファイルがあるのが確認できましたので
もしやと思ってファイル名を削って短くしたらkindle側でもファイルが表示されました。

変換したファイル名が長すぎた場合narou.rb側で自動で削ってくれる仕様にしていただけるとうれしいです。
484(1):
名無しさん2022/03/24(木) 08:25:12 ljAlifuY
>>483
ebook-filename-length-limit が既に存在します。
詳細はヘルプ等で確認してください。
485(1):
名無しさん2022/03/24(木) 17:32:08 PScVId7w
Narou.rb のバージョン:3.8.1

特定の作品を変換したEPUBが、一部のEPUBリーダーでエラーが出て読み込むことができません。
読めないEPUBを pagina EPUB Checker にてチェックしましたところ、以下のようなエラーが確認されました。
---------------------------------------------------
ERROR (RSC-005) at "sample.epub/OPS/xhtml/nav.xhtml" (行数 36, 桁数 11):
ファイル解析時のエラー: 要素 "ol" はまだここには書けません. ; ここに書かれるべきものは 要素 "a" または "span" です.
---------------------------------------------------

どうやら、目次が「章+話」形式になっている作品で、
<ol>の下に<ol>が入れ子になっているのがEpubの書式として反しているように思われます。

入れ子の<li><ol>タグを削除してみましたところ読み込めるようにはなりました。
しかしその場合は書式チェックで以下のようなエラーが出ます(閲覧には支障ありません)。
---------------------------------------------------
ERROR (PKG-006) at "sample.epub/sample.epub":
mimetypeファイルエントリが存在しないか、アーカイブの先頭以外の場所に存在しています.
---------------------------------------------------

続き9行
486(1):
名無しさん2022/03/24(木) 17:48:31 k8mfOkyI
>>485
古いAozoraEpub3使っているのだろう。せめてAozoraEpub3のバージョン書くべきでは。
487:
4852022/03/25(金) 00:09:39 2QZe3oPI
>>486
AozoraEpub3のバージョン:1.1.0b46
です。公式から誘導されているページにある最新版です。
6年近く更新されていないようなのでバージョンはこれ一択だと思い省きました。
488:
cube2022/03/25(金) 00:48:41 BPrYIEHs
>>484
環境設定→詳細→ebook-filename-length-limitで設定出来ました
ありがとうございました♪
490:
4852022/03/26(土) 00:03:35 sB3twpio
>>489
別に改造版なんてのがあったんですね…
早速導入し解決しました、ありがとうございました
491:
名無しさん2022/04/10(日) 11:06:02 FnCiXqdc
Narou.rb のバージョン:3.8.0(3.8.1でも発生すると思われる)
OS のバージョン:FreeBSD 12.2-RELEASE-p7
何が起きたのか:command diffで差分があっても表示されない
再現方法(何をやったら起こったのか詳細に):
小説の保存フォルダに"["や"{"(globのワイルドカード)があると発生する
https://github.com/whiteleaf7/narou/blob/1b07ae1ae017a581bc987622ba9dcd26728cf28c/lib/downloader.rb#L233
ex: https://ncode.syosetu.com/n6761ha/
挿絵関係やcommand cleanでも不具合が発生すると思われる。
Helper.replace_filename_special_chars に"[]{}"も加えたほうがよい。

確認中にもう一つ見つけたのでついでに。
何が起きたのか:command diffで小説の保存フォルダがないとエラーが発生する
[ERROR] /usr/home/*****/kindle/narourb/小説データ/小説家になろう/n6761ha 初心者キャンパーの異世界転生 スキルキャンプでなんとか生きていきます。 が見つかりません。
保存フォルダが消去されていたため、データベースのインデックスを削除しました。
/usr/home/*****/.gem/ruby/2.7/gems/narou-3.8.0/lib/command/diff.rb:253:in `get_diff_list': undefined method `empty?' for nil:NilClass (NoMethodError)
from /usr/home/*****/.gem/ruby/2.7/gems/narou-3.8.0/lib/command/diff.rb:277:in `display_diff_list'
from /usr/home/*****/.gem/ruby/2.7/gems/narou-3.8.0/lib/command/diff.rb:109:in `execute'
492(1):
名無しさん[sage] 2022/04/16(土) 19:21:53
Narou.rb のバージョン:3.8.1
OS のバージョン:win 10 21H2(2022年4月までのアプデ済み)
Ruby:2.6→3.1.1-1
AozoraEpub3:1.1.0b46
何が起きたのか:更新(ダウンロード後)・変換時にエラーがでて処理が完了しない
windowsの4月のアップデートでKB5012599とKB5012117を適用後に
narou,rbにて更新をしようとしましたが、更新が完了せずエラーで止まっていました
確認のためRubyを更新してnarou.rbを再インスト、Aozoraepub3も新規のフォルダーに設定しました
しかし同様の現象がおこり更新と変換ができません
対応よろしくお願い致します
再現方法:更新もしくは変感を実行する
-> /api/convert
#<Thread:0x000002962d06cb40 xxx/web/web_worker.rb:46 run> terminated with exception (report_on_exception is true):
J:/program/Ruby31-x64/lib/ruby/3.1.0/psych.rb:455:in `parse': (G:/webnovel/.narou/lock.yaml): control characters are not allowed at line 1 column 1 (Psych::SyntaxError)
from J:/program/Ruby31-x64/lib/ruby/3.1.0/psych.rb:455:in `parse_stream'
from xxx/psych.rb:399:in `parse'
from xxx/psych.rb:272:in `unsafe_load'
from xxx/psych.rb:649:in `block in unsafe_load_file'
from xxx/psych.rb:648:in `open'
from xxx/psych.rb:648:in `unsafe_load_file'続き28行
493(1):
名無しさん2022/04/16(土) 19:24:55 qH4gsX3k
>>492
G:/webnovel/.narou/lock.yaml を削除
494:
名無しさん[sage] 2022/04/16(土) 22:22:13
>>493
解決しました
ありがとうございます
495:
名無しさん2022/04/21(木) 15:23:47 7V1SxY1Y
>>254,258,259

なかなか対応されないので、修正方法を検討してみました。

lib/downloader.rb
879-881
[変更前]
if old_subupdate == ""
next latest_subupdate != ""
end

[変更後]
if old_subupdate == ""
next latest_subupdate != "" || latest_subdate > old_subdate
end

また、subdate が download_time より新しい場合は、
restore346 と同じように以下の処理で変更すれば対応できそうです。

def restore_subupdate(toc)続き23行
496(1):
名無しさん2022/07/16(土) 09:39:02 B0TQuIJs
Narou.rb のバージョン:narou 3.6.0
OS のバージョン:windows 10
その他環境情報(任意):
何が起きたのか:Narou rbがアップデートできない。
再現方法(何をやったら起こったのか詳細に):
Narou web の「Narou rbについて」をクリックすると「最新版(3.8.1)があります」と表示され、
更新ボタンを押すと「既に最新版です」とでます。
なのに次に「Narou rbについて」をあけても、表示は常に3.6.0のままです。そしてまた「最新版があります」表示です。
コンソールでupdateをしてもupdateするものは無いとでて、バージョンは3.6.0のままです。
最新版に更新ができない状態です。
497:
名無しさん2022/07/17(日) 17:19:02 UcUPNBXs
>>496

391,392 と同様の現象に見えます。
498:
496です。2022/07/18(月) 10:13:42 bu9fV6e2
返信ありがとうございます。
392と同じ方法でやってみましたが、コンソール上でエラーがでました。やはりアップデートできないようです。
もしかして私個人のコンピューター上の問題なのかもしれません。
499:
名無しさん2022/08/09(火) 04:30:37 mxzR2W0c
>496
RubyのVerがないが、Ver.3.7以降はRuby3.0系以上でないとちゃんと動かなかったはず…
500(2):
名無しさん2022/08/13(土) 19:52:08 OzDoQTAc
Narou.rb のバージョン:Version 3.8.1
OS のバージョン:Windows 10 pro 19044.1889
その他環境構築:
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
openjdk version "18.0.2" 2022-07-19
OpenJDK Runtime Environment (build 18.0.2+9-61)
OpenJDK 64-Bit Server VM (build 18.0.2+9-61, mixed mode, sharing)

何が起きたのか:
convert.copy-to 変換したらこのフォルダにコピーする が動作しない
deviceはEPUB、convert.copy-to-groupingは未設定。

再現方法(何をやったら起こったのか詳細に):
WEB UIで小説を更新してもコマンドラインで更新しても変換したEPUBファイルがコピーされない。
コピー先フォルダにあるファイルの更新日時からすると、最後に動作したのは20220810なので、windowsアップデートの影響かもしれない。
501(1):
名無しさん2022/08/14(日) 20:17:35 OyPIks7g
>>500

Windows 上の OpenJDK 18 系統では変換時にエラーになると
Wiki の ISSUE や質問スレに出ていますが、
変換できてコピーに失敗していると判断している理由は何でしょうか。

通常、以下のような出力があると思いますが、どのような内容になっているのでしょうか。

[13:56:36] 縦書用の変換が終了しました
[13:56:36] AozoraEpub3でEPUBに変換しています..........変換しました
[13:56:40] [AA] BB.epub を出力しました
[13:56:40] EPUBファイルを出力しました
[13:56:40] C:/Users/XX/novel/copy/[AA] BB.epub へコピーしました
502:
500[sage] 2022/08/14(日) 20:21:11
>>500
自己解決
java homeで使っているjavaのversionを18にしてしまったことが原因だったようです。
java11だと普通に動きました。
503:
500[sage] 2022/08/14(日) 20:29:30
>>501
書き込んだ後にレス読みました。お恥ずかしい。
変換できてコピーに失敗していると判断した理由は、保存先フォルダ内のepuファイルはtxtファイルと同じ日付で更新されていたからですね。
が、とっておいたログを読むとモロに変換のところでエラーはいているのですよね。
もう少し状況まとめて書き込むべきでした。
504(1):
名無しさん2022/09/23(金) 20:11:44 vUUPDU7U(1/3)
>>146-151

最近、更新の実行時に変換処理で Out of memory が発生するようになったので、
「Ruby 省メモリ」で検索したところ、
require "objspace"
puts "[#{__FILE__}][#{__LINE__}] memsize_of_all: #{ObjectSpace.memsize_of_all / 1000} KB, rss: #{`ps -o rss= #{Process.pid}`.chomp} KB"
で、メモリ使用量を確認できそうだったので、実施してみました。

実行したところ、KindleStrip の処理で元の mobi ファイルの
2倍以上のメモリを使用していました。

しかも kindlegen で作成される mobi ファイルでは、画像ファイルが多い場合、
1GB 前後の容量になるものもあるため、問題が発生していました。

この問題を回避するため、KindleStrip での処理をファイルベースで行うように
修正したところ、上記のような場合にメモリ使用量を劇的に減らすことができました。

下記の環境で動作確認を行いましたので、適用いただけると幸いです。

[動作環境]続き5行
505:
名無しさん2022/09/23(金) 20:13:29 vUUPDU7U(2/3)
----ここから----
require "tempfile"

KINDLESTRIP_VERSION = '2.00'

class StripException < StandardError; end

class SectionStripper
def self.updateEXTH121(srcs_secnum, srcs_cnt, mobiheader, verbose = false)
mobi_length, = mobiheader[0x14...0x18].unpack("N")
exth_flag, = mobiheader[0x80...0x84].unpack("N")
exth = "NONE"
begin
if exth_flag & 0x40 != 0
exth = mobiheader[16 + mobi_length .. -1]
if exth.length >= 4 && exth[0, 4] == "EXTH"
nitems, = exth[8...12].unpack("N")
pos = 12
nitems.times do
type, size = exth[pos ... pos + 8].unpack("NN")続き66行
506:
名無しさん2022/09/23(金) 20:14:03 vUUPDU7U(3/3)
# for every record after the srcs_cnt SRCS records we must start it
# earlier by 8*srcs_cnt + the length of the srcs sections themselves)
delta = delta - srcs_length
(srcs_secnum + srcs_cnt ... num_sections).each do |i|
offset, = in_file.pread(4 * 2, 78 + i * 8).unpack("NN")
offset += delta
flgval = 2 * (i - srcs_cnt)
temp_file.write([offset].pack("N") + [flgval].pack("N"))
end

# now pad it out to begin right at the first offset
# typically this is 2 bytes of nulls
first_offset, = temp_file.pread(4 * 2, 78).unpack("NN")
temp_file.write("\0" * (first_offset - temp_file.length))

# now finally add on every thing up to the original src_offset
IO.copy_stream(in_file, temp_file, srcs_offset - offset0, offset0)

# and everything afterwards
IO.copy_stream(in_file, temp_file, nil, srcs_offset + srcs_length)続き61行
507:
作者★2022/09/23(金) 21:30:29
>>504
ありがとうございます!
17:59:33時点のスレ終端
続き44秒後位に新着取得可
 元スレ:https://jbbs.shitaraba.net/bbs/read.cgi/computer/44668/1511245701/