diff --git a/app/logical/sources/strategies/base.rb b/app/logical/sources/strategies/base.rb index f9d7e6f21..a89df514c 100644 --- a/app/logical/sources/strategies/base.rb +++ b/app/logical/sources/strategies/base.rb @@ -2,6 +2,7 @@ module Sources module Strategies class Base attr_reader :url + attr_reader :artist_name, :profile_url, :image_url, :tags def self.url_match?(url) false @@ -11,6 +12,7 @@ module Sources @url = url end + # No remote calls are made until this method is called. def get raise NotImplementedError end @@ -19,26 +21,6 @@ module Sources raise NotImplementedError end - def artist_name - raise NotImplementedError - end - - def tags - raise NotImplementedError - end - - def profile_url - raise NotImplementedError - end - - def image_url - raise NotImplementedError - end - - def artist_alias - nil - end - def unique_id artist_name end diff --git a/app/logical/sources/strategies/nico_seiga.rb b/app/logical/sources/strategies/nico_seiga.rb index dd2bd1235..965ce3e72 100644 --- a/app/logical/sources/strategies/nico_seiga.rb +++ b/app/logical/sources/strategies/nico_seiga.rb @@ -1,8 +1,6 @@ module Sources module Strategies class NicoSeiga < Base - attr_reader :artist_name, :profile_url, :image_url, :tags - def self.url_match?(url) url =~ /^https?:\/\/(?:\w+\.)?nico(?:seiga|video)\.jp/ end @@ -11,25 +9,21 @@ module Sources "Nico Seiga" end + def unique_id + profile_url =~ /\/illust\/(\d+)/ + "nicoseiga" + $1 + end + def get - url = URI.parse(normalized_url).request_uri - agent.get(url) do |page| + agent.get(URI.parse(url).request_uri) do |page| @artist_name, @profile_url = get_profile_from_page(page) @image_url = get_image_url_from_page(page) @tags = get_tags_from_page(page) end end - def normalized_url - url - end - - def unique_id - profile_url =~ /\/illust\/(\d+)/ - "nicoseiga" + $1 - end - protected + def get_profile_from_page(page) links = page.search("div.illust_user_name a") diff --git a/app/logical/sources/strategies/pixa.rb b/app/logical/sources/strategies/pixa.rb index c79fce3da..9eb3e1e38 100644 --- a/app/logical/sources/strategies/pixa.rb +++ b/app/logical/sources/strategies/pixa.rb @@ -1,8 +1,6 @@ module Sources module Strategies class Pixa < Base - attr_reader :artist_name, :profile_url, :image_url, :tags - def self.url_match?(url) url =~ /^https?:\/\/(?:\w+\.)?pixa\.cc/ end @@ -12,8 +10,8 @@ module Sources end def unique_id - image_url =~ /\/img\/([^\/]+)/ - $1 + profile_url =~ /\/show\/([^\/]+)/ + "pixa" + $1 end def get @@ -25,6 +23,7 @@ module Sources end protected + def get_profile_from_page(page) links = page.search("p.profile_name a") diff --git a/app/logical/sources/strategies/pixiv.rb b/app/logical/sources/strategies/pixiv.rb index a723e5418..f22f93add 100644 --- a/app/logical/sources/strategies/pixiv.rb +++ b/app/logical/sources/strategies/pixiv.rb @@ -1,8 +1,6 @@ module Sources module Strategies class Pixiv < Base - attr_reader :artist_name, :profile_url, :image_url, :tags - def self.url_match?(url) url =~ /^https?:\/\/(?:\w+\.)?pixiv\.net/ end @@ -17,8 +15,7 @@ module Sources end def get - url = URI.parse(normalized_url).request_uri - agent.get(url) do |page| + agent.get(URI.parse(normalized_url).request_uri) do |page| @artist_name, @profile_url = get_profile_from_page(page) @image_url = get_image_url_from_page(page) @tags = get_tags_from_page(page) @@ -26,7 +23,7 @@ module Sources end protected - + def get_profile_from_page(page) links = page.search("div.front-subContent a").find_all do |node| node["href"] =~ /member\.php/ diff --git a/app/logical/sources/strategies/tinami.rb b/app/logical/sources/strategies/tinami.rb index 36c361fa7..18f15109a 100644 --- a/app/logical/sources/strategies/tinami.rb +++ b/app/logical/sources/strategies/tinami.rb @@ -1,8 +1,6 @@ module Sources module Strategies class Tinami < Base - attr_reader :artist_name, :profile_url, :image_url, :tags - def self.url_match?(url) url =~ /^https?:\/\/(?:\w+\.)?tinami\.com/ end @@ -11,26 +9,19 @@ module Sources "Tinami" end + def unique_id + profile_url =~ /\/profile\/(\d+)/ + "tinami" + $1 + end + def get - url = URI.parse(normalized_url).request_uri - agent.get(url) do |page| + agent.get(URI.parse(url).request_uri) do |page| @artist_name, @profile_url = get_profile_from_page(page) @image_url = get_image_url_from_page(page) @tags = get_tags_from_page(page) end end - def normalized_url - # http://localhost:3000/uploads/new?url=http%3A%2F%2Fwww.tinami.com%2Fview%2F308872 - # http://img.tinami.com/illust2/img/259/4e82154d61e74.jpg - url - end - - def unique_id - profile_url =~ /\/profile\/(\d+)/ - "tinami" + $1 - end - protected def get_profile_from_page(page) links = page.search("div.prof a")