107 lines
4.1 KiB
Ruby
107 lines
4.1 KiB
Ruby
# frozen_string_literal: true
|
||
|
||
# Unhandled:
|
||
#
|
||
# * https://pic01.nijie.info/nijie_picture/20120211210359.jpg
|
||
# * https://pic01.nijie.info/nijie_picture/2012021022424020120210.jpg
|
||
# * https://pic01.nijie.info/nijie_picture/diff/main/2012061023480525712_0.jpg
|
||
# * https://pic05.nijie.info/dojin_main/dojin_sam/1_2768_20180429004232.png
|
||
# * https://pic04.nijie.info/horne_picture/diff/main/56095_20160403221810_0.jpg
|
||
# * https://pic04.nijie.info/omata/4829_20161128012012.png (page: http://nijie.info/view_popup.php?id=33224#diff_3)
|
||
|
||
class Source::URL::Nijie < Source::URL
|
||
attr_reader :work_id, :user_id
|
||
|
||
def self.match?(url)
|
||
url.domain.in?(%w[nijie.net nijie.info])
|
||
end
|
||
|
||
def parse
|
||
case [domain, *path_segments]
|
||
|
||
# https://nijie.info/view.php?id=167755 (deleted post)
|
||
# https://nijie.info/view.php?id=218856
|
||
# https://nijie.info/view_popup.php?id=218856
|
||
# https://nijie.info/view_popup.php?id=218856#diff_1
|
||
# https://www.nijie.info/view.php?id=218856
|
||
# https://sp.nijie.info/view.php?id=218856
|
||
in "nijie.info", ("view.php" | "view_popup.php") if params[:id].present?
|
||
@work_id = params[:id]
|
||
|
||
# https://nijie.info/members.php?id=236014
|
||
# https://nijie.info/members_illust.php?id=236014
|
||
in "nijie.info", ("members.php" | "members_illust.php") if params[:id].present?
|
||
@user_id = params[:id]
|
||
|
||
# https://pic.nijie.net/07/nijie/17/95/728995/illust/0_0_403fdd541191110c_c25585.jpg
|
||
# https://pic.nijie.net/06/nijie/17/14/236014/illust/218856_1_7646cf57f6f1c695_f2ed81.png
|
||
in _, /^\d{2}$/, "nijie", /^\d{2}$/, /^\d{2}$/, user_id, "illust", _ if image_url?
|
||
@user_id = user_id
|
||
parse_filename
|
||
|
||
# https://pic01.nijie.info/nijie_picture/diff/main/218856_0_236014_20170620101329.png (page: http://nijie.info/view.php?id=218856)
|
||
# https://pic01.nijie.info/nijie_picture/diff/main/218856_1_236014_20170620101330.png
|
||
# https://pic05.nijie.info/nijie_picture/diff/main/559053_20180604023346_1.png (page: http://nijie.info/view_popup.php?id=265428#diff_2)
|
||
# https://pic04.nijie.info/nijie_picture/diff/main/287736_161475_20181112032855_1.png (page: http://nijie.info/view_popup.php?id=287736#diff_2)
|
||
# https://pic03.nijie.info/nijie_picture/28310_20131101215959.jpg (page: https://www.nijie.info/view.php?id=64240)
|
||
# https://pic03.nijie.info/nijie_picture/236014_20170620101426_0.png (page: https://www.nijie.info/view.php?id=218856)
|
||
# https://pic.nijie.net/03/nijie_picture/236014_20170620101426_0.png (page: https://www.nijie.info/view.php?id=218856)
|
||
# https://pic.nijie.net/01/nijie_picture/diff/main/196201_20150201033106_0.jpg
|
||
in [*, "nijie_picture", *] if image_url?
|
||
parse_filename
|
||
|
||
# http://pic.nijie.net/01/dojin_main/dojin_sam/20120213044700コピー ~ 0011のコピー.jpg (NSFW)
|
||
# http://pic.nijie.net/01/__rs_l120x120/dojin_main/dojin_sam/20120213044700コピー ~ 0011のコピー.jpg
|
||
in _, /^\d+$/, *subdir, "dojin_main", "dojin_sam", file if image_url?
|
||
nil
|
||
|
||
else
|
||
nil
|
||
end
|
||
end
|
||
|
||
def parse_filename
|
||
case filename.split("_")
|
||
|
||
# 28310_20131101215959.jpg
|
||
# 236014_20170620101426_0.png
|
||
# 829001_20190620004513_0.mp4
|
||
# 559053_20180604023346_1.png
|
||
in /^\d+$/ => user_id, /^\d{14}$/ => timestamp, *rest
|
||
@user_id = user_id
|
||
|
||
# 218856_0_236014_20170620101329.png
|
||
in /^\d+$/ => work_id, /^\d+$/, /^\d+$/ => user_id, /^\d{14}$/ => timestamp
|
||
@work_id, @user_id = work_id, user_id
|
||
|
||
# 287736_161475_20181112032855_1.png
|
||
in /^\d+$/ => work_id, /^\d+$/ => user_id, /^\d{14}$/ => timestamp, /^\d+$/
|
||
@work_id, @user_id = work_id, user_id
|
||
|
||
# 0_0_403fdd541191110c_c25585.jpg
|
||
# 218856_1_7646cf57f6f1c695_f2ed81.png
|
||
in /^\d+$/ => work_id, /^\d+$/, /^\h+$/, /^\h+$/
|
||
@work_id = work_id if work_id.to_i != 0
|
||
|
||
else
|
||
nil
|
||
end
|
||
end
|
||
|
||
def image_url?
|
||
subdomain.to_s.starts_with?("pic")
|
||
end
|
||
|
||
def full_image_url
|
||
to_s.remove(%r{__rs_\w+/}i).gsub("http:", "https:") if image_url?
|
||
end
|
||
|
||
def page_url
|
||
"https://nijie.info/view.php?id=#{work_id}" if work_id.present?
|
||
end
|
||
|
||
def profile_url
|
||
"https://nijie.info/members.php?id=#{user_id}" if user_id.present?
|
||
end
|
||
end
|