Fix #3877: Add sta.sh strategy.

Co-authored-by: lllusion3469 <31420484+lllusion3469@users.noreply.github.com>
This commit is contained in:
evazion
2018-09-10 18:47:13 -05:00
parent 10358d4211
commit 7d5d098636
3 changed files with 47 additions and 3 deletions

View File

@@ -5,6 +5,7 @@ module Sources
Strategies::Pixiv,
Strategies::NicoSeiga,
Strategies::Twitter,
Strategies::Stash, # must come before DeviantArt
Strategies::DeviantArt,
Strategies::Tumblr,
Strategies::ArtStation,

View File

@@ -198,15 +198,19 @@ module Sources
self.class.artist_name_from_url(url) || self.class.artist_name_from_url(referer_url)
end
def page
def api_url
return nil if deviation_id.blank?
deviation_url = "https://www.deviantart.com/deviation/#{deviation_id}"
"https://www.deviantart.com/deviation/#{deviation_id}"
end
def page
return nil if api_url.blank?
options = Danbooru.config.httparty_options.deep_merge(
format: :plain,
headers: { "Accept-Encoding" => "gzip" }
)
resp = HTTParty.get(deviation_url, **options)
resp = HTTParty.get(api_url, **options)
if resp.success?
body = Zlib.gunzip(resp.body)

View File

@@ -0,0 +1,39 @@
module Sources
module Strategies
class Stash < DeviantArt
STASH = %r{\Ahttps?://sta\.sh/(?<post_id>[0-9a-zA-Z]+)}i
def self.match?(*urls)
urls.compact.any? { |x| x =~ STASH }
end
def site_name
"Sta.sh"
end
def canonical_url
page_url
end
def page_url
"https://sta.sh/#{stash_id}"
end
def api_url
page_url
end
def self.stash_id_from_url(url)
if url =~ STASH
$~[:post_id].downcase
else
nil
end
end
def stash_id
[url, referer_url].map{ |x| self.class.stash_id_from_url(x) }.compact.first
end
end
end
end