add download strategy for artstation
This commit is contained in:
21
app/logical/downloads/rewrite_strategies/art_station.rb
Normal file
21
app/logical/downloads/rewrite_strategies/art_station.rb
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
module Downloads
|
||||||
|
module RewriteStrategies
|
||||||
|
class ArtStation < Base
|
||||||
|
def rewrite(url, headers, data = {})
|
||||||
|
# example: https://cdnb3.artstation.com/p/assets/images/images/003/716/071/large/aoi-ogata-hate-city.jpg?1476754974
|
||||||
|
if url =~ %r!^https?://cdn\w*\.artstation\.com/p/assets/images/images/\d+/\d+/\d+/large/!
|
||||||
|
url, headers = rewrite_large_url(url, headers)
|
||||||
|
end
|
||||||
|
|
||||||
|
return [url, headers, data]
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
def rewrite_large_url(url, headers)
|
||||||
|
# example: https://cdnb3.artstation.com/p/assets/images/images/003/716/071/original/aoi-ogata-hate-city.jpg?1476754974
|
||||||
|
url = url.sub(%r!/large/!, "/original/")
|
||||||
|
return [url, headers]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -10,7 +10,7 @@ module Downloads
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.strategies
|
def self.strategies
|
||||||
[Downloads::RewriteStrategies::Pixiv, Downloads::RewriteStrategies::NicoSeiga, Downloads::RewriteStrategies::Twitpic, Downloads::RewriteStrategies::DeviantArt, Downloads::RewriteStrategies::Tumblr, Downloads::RewriteStrategies::Moebooru, Downloads::RewriteStrategies::Twitter, Downloads::RewriteStrategies::Nijie]
|
[Downloads::RewriteStrategies::Pixiv, Downloads::RewriteStrategies::NicoSeiga, Downloads::RewriteStrategies::ArtStation, Downloads::RewriteStrategies::Twitpic, Downloads::RewriteStrategies::DeviantArt, Downloads::RewriteStrategies::Tumblr, Downloads::RewriteStrategies::Moebooru, Downloads::RewriteStrategies::Twitter, Downloads::RewriteStrategies::Nijie]
|
||||||
end
|
end
|
||||||
|
|
||||||
def rewrite(url, headers, data = {})
|
def rewrite(url, headers, data = {})
|
||||||
|
|||||||
18
test/unit/downloads/art_station_test.rb
Normal file
18
test/unit/downloads/art_station_test.rb
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
module Downloads
|
||||||
|
class ArtStationTest < ActiveSupport::TestCase
|
||||||
|
context "a download for a (small) artstation image" do
|
||||||
|
setup do
|
||||||
|
@source = "https://cdnb3.artstation.com/p/assets/images/images/003/716/071/large/aoi-ogata-hate-city.jpg?1476754974"
|
||||||
|
@tempfile = Tempfile.new("danbooru-test")
|
||||||
|
@download = Downloads::File.new(@source, @tempfile.path)
|
||||||
|
@download.download!
|
||||||
|
end
|
||||||
|
|
||||||
|
should "download the large image instead" do
|
||||||
|
assert_equal("https://cdnb3.artstation.com/p/assets/images/images/003/716/071/original/aoi-ogata-hate-city.jpg?1476754974", @download.source)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user