Fix #3877: Add sta.sh strategy.
Co-authored-by: lllusion3469 <31420484+lllusion3469@users.noreply.github.com>
This commit is contained in:
@@ -5,6 +5,7 @@ module Sources
|
|||||||
Strategies::Pixiv,
|
Strategies::Pixiv,
|
||||||
Strategies::NicoSeiga,
|
Strategies::NicoSeiga,
|
||||||
Strategies::Twitter,
|
Strategies::Twitter,
|
||||||
|
Strategies::Stash, # must come before DeviantArt
|
||||||
Strategies::DeviantArt,
|
Strategies::DeviantArt,
|
||||||
Strategies::Tumblr,
|
Strategies::Tumblr,
|
||||||
Strategies::ArtStation,
|
Strategies::ArtStation,
|
||||||
|
|||||||
@@ -198,15 +198,19 @@ module Sources
|
|||||||
self.class.artist_name_from_url(url) || self.class.artist_name_from_url(referer_url)
|
self.class.artist_name_from_url(url) || self.class.artist_name_from_url(referer_url)
|
||||||
end
|
end
|
||||||
|
|
||||||
def page
|
def api_url
|
||||||
return nil if deviation_id.blank?
|
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(
|
options = Danbooru.config.httparty_options.deep_merge(
|
||||||
format: :plain,
|
format: :plain,
|
||||||
headers: { "Accept-Encoding" => "gzip" }
|
headers: { "Accept-Encoding" => "gzip" }
|
||||||
)
|
)
|
||||||
resp = HTTParty.get(deviation_url, **options)
|
resp = HTTParty.get(api_url, **options)
|
||||||
|
|
||||||
if resp.success?
|
if resp.success?
|
||||||
body = Zlib.gunzip(resp.body)
|
body = Zlib.gunzip(resp.body)
|
||||||
|
|||||||
39
app/logical/sources/strategies/stash.rb
Normal file
39
app/logical/sources/strategies/stash.rb
Normal 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
|
||||||
Reference in New Issue
Block a user