refactored sources

This commit is contained in:
albert
2011-09-29 12:55:15 -04:00
parent f188c6d70d
commit 19add9aa4e
5 changed files with 20 additions and 57 deletions

View File

@@ -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

View File

@@ -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")

View File

@@ -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")

View File

@@ -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/

View File

@@ -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")