Fix #3208: Fix translated tag suggestions for Pixiv.
* Only suggest the Danbooru tag with the same name if there is no matching wiki other name. Example: if we have the Pixiv tag `Fate` and the Danbooru tag `fate_(series)` with other name `fate`, suggest that, not the Danbooru tag `fate`. * Don't suggest tags that are empty or whose wiki is deleted. * Only split tags on "/" if there are no other matches, and only for Pixiv. * For Pixiv, only include traditional media tags in tag list, not digital media (Photoshop, SAI). * Add some tests.
This commit is contained in:
@@ -80,6 +80,23 @@ module Sources
|
||||
(@tags || []).uniq
|
||||
end
|
||||
|
||||
def translated_tags
|
||||
translated_tags = tags.map(&:first).flat_map(&method(:translate_tag)).uniq.sort
|
||||
translated_tags.map { |tag| [tag.name, tag.category] }
|
||||
end
|
||||
|
||||
# Given a tag from the source site, should return an array of corresponding Danbooru tags.
|
||||
def translate_tag(untranslated_tag)
|
||||
translated_tags = Tag.where(name: WikiPage.active.other_names_equal([untranslated_tag]).uniq.select(:title))
|
||||
|
||||
if translated_tags.empty?
|
||||
normalized_name = TagAlias.to_aliased([Tag.normalize_name(untranslated_tag)])
|
||||
translated_tags = Tag.nonempty.where(name: normalized_name)
|
||||
end
|
||||
|
||||
translated_tags
|
||||
end
|
||||
|
||||
# Should be set to a url for sites that prevent hotlinking, or left nil for sites that don't.
|
||||
def fake_referer
|
||||
nil
|
||||
|
||||
Reference in New Issue
Block a user