Add furaffinity support
This commit is contained in:
45
app/logical/source/url/furaffinity.rb
Normal file
45
app/logical/source/url/furaffinity.rb
Normal file
@@ -0,0 +1,45 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Source::URL::Furaffinity < Source::URL
|
||||
attr_reader :work_id, :username, :filename
|
||||
|
||||
def self.match?(url)
|
||||
url.domain == "furaffinity.net"
|
||||
end
|
||||
|
||||
def parse
|
||||
case [host, *path_segments]
|
||||
|
||||
# https://www.furaffinity.net/view/46821705/
|
||||
# https://www.furaffinity.net/view/46802202/ (scrap)
|
||||
in _, "view", /^\d+$/ => work_id
|
||||
@work_id = work_id
|
||||
|
||||
# https://d.furaffinity.net/art/iwbitu/1650222955/1650222955.iwbitu_yubi.jpg
|
||||
in _, "art", username, subdir, filename
|
||||
@username = username
|
||||
@filename = filename
|
||||
|
||||
# https://www.furaffinity.net/gallery/iwbitu
|
||||
# https://www.furaffinity.net/scraps/iwbitu/2/?
|
||||
# https://www.furaffinity.net/gallery/iwbitu/folder/133763/Regular-commissions
|
||||
in _, ("gallery" | "user" | "favorites" | "scraps" | "journals"), username, *pages
|
||||
@username = username
|
||||
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
def image_url?
|
||||
@filename.present?
|
||||
end
|
||||
|
||||
def page_url
|
||||
"https://www.furaffinity.net/view/#{work_id}" if work_id.present?
|
||||
end
|
||||
|
||||
def profile_url
|
||||
"https://www.furaffinity.net/user/#{username}" if username.present?
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user