From c07b099bf8e2c4bba398f59b1aab0b3bcfdf7a91 Mon Sep 17 00:00:00 2001 From: evazion Date: Tue, 3 May 2022 03:59:15 -0500 Subject: [PATCH] Fix #5152: Nicovideo video urls getting bad_source. --- app/logical/source/url/nico_seiga.rb | 24 +++++++++++++++++++++--- test/unit/sources/nico_seiga_test.rb | 4 ++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/app/logical/source/url/nico_seiga.rb b/app/logical/source/url/nico_seiga.rb index dbb38c0a7..99f52bb42 100644 --- a/app/logical/source/url/nico_seiga.rb +++ b/app/logical/source/url/nico_seiga.rb @@ -17,14 +17,12 @@ # # Unhandled URLs # -# * https://www.nicovideo.jp/watch/sm36465441 -# * https://www.nicovideo.jp/watch/nm20676560 # * https://lohas.nicoseiga.jp/material/5746c5/4459092 # * https://dic.nicovideo.jp/oekaki/52833.png # module Source class URL::NicoSeiga < Source::URL - attr_reader :illust_id, :manga_id, :image_id, :user_id, :username, :profile_url + attr_reader :illust_id, :manga_id, :image_id, :sm_video_id, :nm_video_id, :user_id, :username, :profile_url def self.match?(url) url.domain.in?(%w[nicovideo.jp nicoseiga.jp nicomanga.jp nimg.jp nico.ms]) @@ -49,6 +47,14 @@ module Source in /seiga\.nicovideo\.jp$/, "watch", /^mg(\d+)/ => manga_id @manga_id = $1 + # https://www.nicovideo.jp/watch/sm36465441 + in "www.nicovideo.jp", "watch", /^sm(\d+)/ + @sm_video_id = $1 + + # https://www.nicovideo.jp/watch/nm36465441 + in "www.nicovideo.jp", "watch", /^nm(\d+)/ + @nm_video_id = $1 + # https://seiga.nicovideo.jp/image/source/3521156 (single image; page: https://seiga.nicovideo.jp/seiga/im3312222) # https://seiga.nicovideo.jp/image/source/4744553 (manga image; page: https://seiga.nicovideo.jp/watch/mg122274) # @@ -102,6 +108,14 @@ module Source in "nico.ms", /^mg(\d+)$/ @manga_id = $1 + # https://nico.ms/sm36465441 + in "nico.ms", /^sm(\d+)$/ + @sm_video_id = $1 + + # https://nico.ms/nm36465441 + in "nico.ms", /^nm(\d+)$/ + @nm_video_id = $1 + # https://seiga.nicovideo.jp/user/illust/456831 # https://sp.seiga.nicovideo.jp/user/illust/20542122 # https://ext.seiga.nicovideo.jp/user/illust/20542122 @@ -166,6 +180,10 @@ module Source "https://seiga.nicovideo.jp/seiga/im#{illust_id}" elsif manga_id.present? "https://seiga.nicovideo.jp/watch/mg#{manga_id}" + elsif nm_video_id.present? + "https://www.nicovideo.jp/watch/nm#{nm_video_id}" + elsif sm_video_id.present? + "https://www.nicovideo.jp/watch/sm#{sm_video_id}" #elsif image_id.present? # "https://seiga.nicovideo.jp/image/source/#{image_id}" end diff --git a/test/unit/sources/nico_seiga_test.rb b/test/unit/sources/nico_seiga_test.rb index 82dc82881..22cda1d54 100644 --- a/test/unit/sources/nico_seiga_test.rb +++ b/test/unit/sources/nico_seiga_test.rb @@ -201,8 +201,12 @@ module Sources assert(Source::URL.page_url?("https://seiga.nicovideo.jp/seiga/im520647")) assert(Source::URL.page_url?("https://sp.seiga.nicovideo.jp/seiga/im3521156")) assert(Source::URL.page_url?("https://seiga.nicovideo.jp/watch/mg316708")) + assert(Source::URL.page_url?("https://www.nicovideo.jp/watch/sm36465441")) + assert(Source::URL.page_url?("https://www.nicovideo.jp/watch/nm36465441")) assert(Source::URL.page_url?("https://nico.ms/im10922621")) assert(Source::URL.page_url?("https://nico.ms/mg310193")) + assert(Source::URL.page_url?("https://nico.ms/sm36465441")) + assert(Source::URL.page_url?("https://nico.ms/nm36465441")) assert(Source::URL.profile_url?("https://seiga.nicovideo.jp/user/illust/456831")) assert(Source::URL.profile_url?("https://ext.seiga.nicovideo.jp/user/illust/20542122"))