diff --git a/src/fetch.cr b/src/fetch.cr index 1bd557e..696b113 100644 --- a/src/fetch.cr +++ b/src/fetch.cr @@ -64,7 +64,7 @@ module Muse::Dl if content_type.is_a? String if /html/.match content_type puts response - response.body_io.each_line do |line| + response.body.each_line do |line| # https://muse.jhu.edu/chapter/2383438/pdf # https://muse.jhu.edu/book/67393 # Errors are Unable to determine page runs / Unable to construct chapter PDF @@ -75,7 +75,7 @@ module Muse::Dl end end File.open(tmp_pdf_file, "w") do |file| - IO.copy(response.body_io, file) + file << response.body if file.size == 0 raise Muse::Dl::Errors::DownloadError.new("Error: downloaded chapter file size is zero. Response Content-Length header was #{headers["Content-Length"]}") end diff --git a/src/muse-dl.cr b/src/muse-dl.cr index 6723c59..c5fa70e 100644 --- a/src/muse-dl.cr +++ b/src/muse-dl.cr @@ -78,19 +78,12 @@ module Muse::Dl if delay_secs >= 2 delay_secs /= 2 end - rescue ex : Muse::Dl::Errors::DownloadError - puts ex.message - puts ex.backtrace.join("\n ") - puts "Download error. Skipping book: #{url}. Waiting for #{delay_secs} seconds before continuing." - # Sleep to prevent hammering the server. - sleep(delay_secs) - delay_secs *= 2 rescue ex puts ex.message puts ex.backtrace.join("\n ") - pp ex - puts "Non-download error. Skipping book: #{url}." - sleep(1) + puts "Error. Skipping book: #{url}. Waiting for #{delay_secs} seconds before continuing." + sleep(delay_secs) + delay_secs *= 2 end end elsif parser.url