normalize_for_artist_finder!: Don't crash on bad URLs

If we can't normalize the URL (because of bad IDs, it's malformed, or
the HTML page changed), just return the unnormalized URL.
This commit is contained in:
evazion
2014-10-05 12:13:38 -05:00
parent dcbe061809
commit c75d2d208e
2 changed files with 11 additions and 5 deletions

View File

@@ -1,6 +1,8 @@
# encoding: UTF-8 # encoding: UTF-8
module Sources module Sources
class Error < Exception ; end
class Site class Site
attr_reader :url, :strategy attr_reader :url, :strategy
delegate :get, :referer_url, :site_name, :artist_name, :profile_url, :image_url, :tags, :artist_record, :unique_id, :page_count, :to => :strategy delegate :get, :referer_url, :site_name, :artist_name, :profile_url, :image_url, :tags, :artist_record, :unique_id, :page_count, :to => :strategy
@@ -22,7 +24,11 @@ module Sources
def normalize_for_artist_finder! def normalize_for_artist_finder!
if available? if available?
return strategy.normalize_for_artist_finder! begin
return strategy.normalize_for_artist_finder!
rescue Sources::Error
return url
end
else else
return url return url
end end

View File

@@ -149,7 +149,7 @@ module Sources
if not stacc_link.nil? if not stacc_link.nil?
stacc_link.attr("href").sub(%r!^/stacc/!i, '') stacc_link.attr("href").sub(%r!^/stacc/!i, '')
else else
raise "Couldn't find Pixiv moniker in page: #{normalized_url}" raise Sources::Error.new("Couldn't find Pixiv moniker in page: #{normalized_url}")
end end
end end
@@ -162,7 +162,7 @@ module Sources
thumbnail_url = elements.first.attr("src") thumbnail_url = elements.first.attr("src")
return rewrite_thumbnails(thumbnail_url, is_manga) return rewrite_thumbnails(thumbnail_url, is_manga)
else else
raise "Couldn't find image thumbnail URL in page: #{normalized_url}" raise Sources::Error.new("Couldn't find image thumbnail URL in page: #{normalized_url}")
end end
end end
@@ -217,7 +217,7 @@ module Sources
metadata = CSV.parse(response.content.force_encoding("UTF-8")).first metadata = CSV.parse(response.content.force_encoding("UTF-8")).first
if metadata.nil? if metadata.nil?
raise "Couldn't get Pixiv API metadata from #{spapi_url}." raise Sources::Error.new("Couldn't get Pixiv API metadata from #{spapi_url}.")
else else
yield metadata yield metadata
end end
@@ -255,7 +255,7 @@ module Sources
$1 $1
else else
raise "Couldn't get illust ID from URL: #{url}" raise Sources::Error.new("Couldn't get illust ID from URL: #{url}")
end end
end end