#1866: Support Nijie source data getting

This commit is contained in:
Toks
2014-06-03 18:42:24 -04:00
parent 87c8401693
commit 7ca7ac2709
3 changed files with 106 additions and 1 deletions

View File

@@ -4,7 +4,7 @@ module Sources
delegate :get, :referer_url, :site_name, :artist_name, :profile_url, :image_url, :tags, :artist_record, :unique_id, :to => :strategy
def self.strategies
[Strategies::Pixiv, Strategies::NicoSeiga, Strategies::DeviantArt]
[Strategies::Pixiv, Strategies::NicoSeiga, Strategies::DeviantArt, Strategies::Nijie]
end
def initialize(url)

View File

@@ -0,0 +1,97 @@
module Sources
module Strategies
class Nijie < Base
def self.url_match?(url)
url =~ /^https?:\/\/(?:.+?\.)?nijie\.info/
end
def referer_url(template)
if template.params[:ref] =~ /nijie\.info\/view\.php/ && template.params[:ref] =~ /id=\d+/
template.params[:ref]
else
template.params[:url]
end
end
def site_name
"Nijie"
end
def unique_id
profile_url =~ /nijie\.info\/members.php\?id=(\d+)/
"nijie" + $1.to_s
end
def get
agent.get(url) 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
protected
def get_profile_from_page(page)
links = page.search("a.name")
if links.any?
profile_url = "http://nijie.info" + links[0]["href"]
artist_name = links[0].text
else
profile_url = nil
artist_name = nil
end
return [artist_name, profile_url].compact
end
def get_image_url_from_page(page)
image = page.search("div#gallery a img")
if image.any?
image[0]["src"]
else
nil
end
end
def get_tags_from_page(page)
# puts page.root.to_xhtml
links = page.search("div#view-tag a").find_all do |node|
node["href"] =~ /search\.php/
end
if links.any?
links.map do |node|
[node.inner_text, "http://nijie.info" + node.attr("href")]
end
else
[]
end
end
def agent
@agent ||= begin
mech = Mechanize.new
mech.get("http://nijie.info/login.php") do |page|
page.form_with(:action => "/login_int.php") do |form|
form['email'] = Danbooru.config.nijie_login
form['password'] = Danbooru.config.nijie_password
end.click_button
end
# This cookie needs to be set to allow viewing of adult works while anonymous
cookie = Mechanize::Cookie.new("R18", "1")
cookie.domain = ".nijie.info"
cookie.path = "/"
mech.cookie_jar.add(cookie)
mech
end
end
end
end
end

View File

@@ -288,6 +288,14 @@ module Danbooru
nil
end
def nijie_login
nil
end
def nijie_password
nil
end
def amazon_ses
# {:smtp_server_name => "smtp server", :user_name => "user name", :ses_smtp_user_name => "smtp user name", :ses_smtp_password => "smtp password"}
nil