From 864349dc7b8a0944355838475ca874b8f94d3280 Mon Sep 17 00:00:00 2001 From: evazion Date: Sat, 6 Oct 2018 00:58:22 -0500 Subject: [PATCH] moebooru: fetch tags (#3911). --- app/logical/sources/strategies/moebooru.rb | 6 +++ test/unit/sources/moebooru_test.rb | 43 ++++++++++++++-------- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/app/logical/sources/strategies/moebooru.rb b/app/logical/sources/strategies/moebooru.rb index 1e8b2c05c..ec31c29e6 100644 --- a/app/logical/sources/strategies/moebooru.rb +++ b/app/logical/sources/strategies/moebooru.rb @@ -76,6 +76,12 @@ module Sources nil end + def tags + api_response[:tags].to_s.split.map do |tag| + [tag.tr("_", " "), "https://#{site_name}/post?tags=#{CGI.escape(tag)}"] + end + end + def headers { "Referer" => "http://#{site_name}" } end diff --git a/test/unit/sources/moebooru_test.rb b/test/unit/sources/moebooru_test.rb index 63f57df24..1dd41fc08 100644 --- a/test/unit/sources/moebooru_test.rb +++ b/test/unit/sources/moebooru_test.rb @@ -2,7 +2,7 @@ require "test_helper" module Sources class MoebooruTest < ActiveSupport::TestCase - def assert_source_data_equals(url, referer = nil, site_name: nil, image_url: nil, page_url: nil, size: nil) + def assert_source_data_equals(url, referer = nil, site_name: nil, image_url: nil, page_url: nil, size: nil, tags: []) site = Sources::Strategies.find(url) assert_equal(site_name, site.site_name) @@ -10,6 +10,7 @@ module Sources assert_equal([image_url], site.image_urls) assert_equal(image_url, site.canonical_url) assert_equal(page_url, site.page_url) if page_url.present? + assert_equal(tags.sort, site.tags.map(&:first).sort) assert_equal(size, site.size) assert_nothing_raised { site.to_h } end @@ -29,11 +30,13 @@ module Sources @samp = "https://files.yande.re/sample/7ecfdead705d7b956b26b1d37b98d089/yande.re%20482880%20sample%20bayashiko%20journey_to_the_west%20sun_wukong.jpg" @full = "https://files.yande.re/image/7ecfdead705d7b956b26b1d37b98d089/yande.re%20482880.jpg" @page = "https://yande.re/post/show/482880" + @tags = ["bayashiko", "journey to the west", "sun wukong"] @size = 362_554 + @data = { site_name: "yande.re", image_url: @full, page_url: @page, size: @size, tags: @tags} - assert_source_data_equals(@samp, site_name: "yande.re", image_url: @full, page_url: @page, size: @size) - assert_source_data_equals(@full, site_name: "yande.re", image_url: @full, page_url: @page, size: @size) - assert_source_data_equals(@page, site_name: "yande.re", image_url: @full, page_url: @page, size: @size) + assert_source_data_equals(@samp, @data) + assert_source_data_equals(@full, @data) + assert_source_data_equals(@page, @data) end end @@ -43,12 +46,14 @@ module Sources @jpeg = "https://files.yande.re/sample/fb27a7ea6c48b2ef76fe915e378b9098/yande.re%20398018%20detexted%20misaki_kurehito%20saenai_heroine_no_sodatekata%20sawamura_spencer_eriri%20thighhighs.jpg" @full = "https://files.yande.re/image/fb27a7ea6c48b2ef76fe915e378b9098/yande.re%20398018.png" @page = "https://yande.re/post/show/398018" + @tags = ["misaki kurehito", "saenai heroine no sodatekata", "sawamura spencer eriri", "detexted", "thighhighs"] @size = 9_118_998 + @data = { site_name: "yande.re", image_url: @full, page_url: @page, size: @size, tags: @tags} - assert_source_data_equals(@samp, site_name: "yande.re", image_url: @full, page_url: @page, size: @size) - assert_source_data_equals(@jpeg, site_name: "yande.re", image_url: @full, page_url: @page, size: @size) - assert_source_data_equals(@full, site_name: "yande.re", image_url: @full, page_url: @page, size: @size) - assert_source_data_equals(@page, site_name: "yande.re", image_url: @full, page_url: @page, size: @size) + assert_source_data_equals(@samp, @data) + assert_source_data_equals(@jpeg, @data) + assert_source_data_equals(@full, @data) + assert_source_data_equals(@page, @data) end end @@ -57,11 +62,13 @@ module Sources @samp = "https://files.yande.re/sample/fb27a7ea6c48b2ef76fe915e378b9098.jpg" @jpeg = "https://files.yande.re/jpeg/fb27a7ea6c48b2ef76fe915e378b9098.jpg" @full = "https://files.yande.re/image/fb27a7ea6c48b2ef76fe915e378b9098.png" + @tags = [] @size = 9_118_998 + @data = { site_name: "yande.re", image_url: @full, page_url: @page, size: @size, tags: @tags} - assert_source_data_equals(@samp, site_name: "yande.re", image_url: @full, size: @size) - assert_source_data_equals(@jpeg, site_name: "yande.re", image_url: @full, size: @size) - assert_source_data_equals(@full, site_name: "yande.re", image_url: @full, size: @size) + assert_source_data_equals(@samp, @data) + assert_source_data_equals(@jpeg, @data) + assert_source_data_equals(@full, @data) end end end @@ -74,11 +81,17 @@ module Sources @full = "https://konachan.com/image/ca12cdb79a66d242e95a6f958341bf05/Konachan.com%20-%20270916.png" @page = "https://konachan.com/post/show/270916" @size = 8_167_593 + @tags = %w[ + anthropomorphism bed blonde_hair bow brown_eyes doll + girls_frontline hara_shoutarou hoodie long_hair pantyhose scar skirt + twintails ump-45_(girls_frontline) ump-9_(girls_frontline) + ].map { |tag| tag.tr("_", " ") } - assert_source_data_equals(@samp, site_name: "konachan.com", image_url: @full, page_url: @page, size: @size) - assert_source_data_equals(@jpeg, site_name: "konachan.com", image_url: @full, page_url: @page, size: @size) - assert_source_data_equals(@full, site_name: "konachan.com", image_url: @full, page_url: @page, size: @size) - assert_source_data_equals(@page, site_name: "konachan.com", image_url: @full, page_url: @page, size: @size) + @data = { site_name: "konachan.com", image_url: @full, page_url: @page, size: @size, tags: @tags} + assert_source_data_equals(@samp, @data) + assert_source_data_equals(@jpeg, @data) + assert_source_data_equals(@full, @data) + assert_source_data_equals(@page, @data) end end end