twitter: fix misparsing of https://twitter.com/i/status/:id urls.
Fix URLs like `https://twitter.com/i/status/943446161586733056` parsing the username as `i`. This led to the new artist page recommending the tag name `i` when creating an artist for a source like this. Also fix these URLs not being normalized to `https://twitter.com/:username/status/:id` after upload.
This commit is contained in:
@@ -40,12 +40,13 @@ class Source::URL::Twitter < Source::URL
|
|||||||
in "twitter.com", "i", "web", "status", status_id
|
in "twitter.com", "i", "web", "status", status_id
|
||||||
@status_id = status_id
|
@status_id = status_id
|
||||||
|
|
||||||
|
# https://twitter.com/i/status/943446161586733056
|
||||||
# https://twitter.com/motty08111213/status/943446161586733056
|
# https://twitter.com/motty08111213/status/943446161586733056
|
||||||
# https://twitter.com/motty08111213/status/943446161586733056?s=19
|
# https://twitter.com/motty08111213/status/943446161586733056?s=19
|
||||||
# https://twitter.com/Kekeflipnote/status/1496555599718498319/video/1
|
# https://twitter.com/Kekeflipnote/status/1496555599718498319/video/1
|
||||||
# https://twitter.com/sato_1_11/status/1496489742791475201/photo/2
|
# https://twitter.com/sato_1_11/status/1496489742791475201/photo/2
|
||||||
in "twitter.com", username, "status", status_id, *rest
|
in "twitter.com", username, "status", status_id, *rest
|
||||||
@username = username
|
@username = username unless username.in?(RESERVED_USERNAMES)
|
||||||
@status_id = status_id
|
@status_id = status_id
|
||||||
|
|
||||||
# https://twitter.com/intent/user?user_id=1485229827984531457
|
# https://twitter.com/intent/user?user_id=1485229827984531457
|
||||||
|
|||||||
@@ -181,18 +181,52 @@ module Sources
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "The source site for a https://twitter.com/i/web/status/:id url" do
|
context "A https://twitter.com/:username/status/:id url" do
|
||||||
setup do
|
strategy_should_work(
|
||||||
@site = Source::Extractor.find("https://twitter.com/i/web/status/943446161586733056")
|
"https://twitter.com/motty08111213/status/943446161586733056",
|
||||||
end
|
page_url: "https://twitter.com/motty08111213/status/943446161586733056",
|
||||||
|
image_urls: [
|
||||||
|
"https://pbs.twimg.com/media/DRfKHmgV4AAycFB.jpg:orig",
|
||||||
|
"https://pbs.twimg.com/media/DRfKHioVoAALRlK.jpg:orig",
|
||||||
|
"https://pbs.twimg.com/media/DRfKHgHU8AE7alV.jpg:orig"
|
||||||
|
],
|
||||||
|
profile_url: "https://twitter.com/motty08111213",
|
||||||
|
artist_name: "えのぐマネージャー 丸茂",
|
||||||
|
tag_name: "motty08111213",
|
||||||
|
tags: ["岩本町芸能社", "女優部"],
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
should "fetch the source data" do
|
context "A https://twitter.com/i/web/status/:id url" do
|
||||||
assert_equal("https://twitter.com/motty08111213", @site.profile_url)
|
strategy_should_work(
|
||||||
end
|
"https://twitter.com/i/web/status/943446161586733056",
|
||||||
|
page_url: "https://twitter.com/motty08111213/status/943446161586733056",
|
||||||
|
image_urls: [
|
||||||
|
"https://pbs.twimg.com/media/DRfKHmgV4AAycFB.jpg:orig",
|
||||||
|
"https://pbs.twimg.com/media/DRfKHioVoAALRlK.jpg:orig",
|
||||||
|
"https://pbs.twimg.com/media/DRfKHgHU8AE7alV.jpg:orig"
|
||||||
|
],
|
||||||
|
profile_url: "https://twitter.com/motty08111213",
|
||||||
|
artist_name: "えのぐマネージャー 丸茂",
|
||||||
|
tag_name: "motty08111213",
|
||||||
|
tags: ["岩本町芸能社", "女優部"],
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
should "get the page url" do
|
context "A https://twitter.com/i/status/:id url" do
|
||||||
assert_equal("https://twitter.com/motty08111213/status/943446161586733056", @site.page_url)
|
strategy_should_work(
|
||||||
end
|
"https://twitter.com/i/status/943446161586733056",
|
||||||
|
page_url: "https://twitter.com/motty08111213/status/943446161586733056",
|
||||||
|
image_urls: [
|
||||||
|
"https://pbs.twimg.com/media/DRfKHmgV4AAycFB.jpg:orig",
|
||||||
|
"https://pbs.twimg.com/media/DRfKHioVoAALRlK.jpg:orig",
|
||||||
|
"https://pbs.twimg.com/media/DRfKHgHU8AE7alV.jpg:orig"
|
||||||
|
],
|
||||||
|
profile_url: "https://twitter.com/motty08111213",
|
||||||
|
artist_name: "えのぐマネージャー 丸茂",
|
||||||
|
tag_name: "motty08111213",
|
||||||
|
tags: ["岩本町芸能社", "女優部"],
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
context "A deleted tweet" do
|
context "A deleted tweet" do
|
||||||
@@ -297,6 +331,7 @@ module Sources
|
|||||||
assert(Source::URL.image_url?("https://pbs.twimg.com/ext_tw_video_thumb/1243725361986375680/pu/img/JDA7g7lcw7wK-PIv.jpg"))
|
assert(Source::URL.image_url?("https://pbs.twimg.com/ext_tw_video_thumb/1243725361986375680/pu/img/JDA7g7lcw7wK-PIv.jpg"))
|
||||||
assert(Source::URL.image_url?("https://pbs.twimg.com/amplify_video_thumb/1215590775364259840/img/lolCkEEioFZTb5dl.jpg"))
|
assert(Source::URL.image_url?("https://pbs.twimg.com/amplify_video_thumb/1215590775364259840/img/lolCkEEioFZTb5dl.jpg"))
|
||||||
|
|
||||||
|
assert(Source::URL.page_url?("https://twitter.com/i/status/1261877313349640194"))
|
||||||
assert(Source::URL.page_url?("https://twitter.com/i/web/status/1261877313349640194"))
|
assert(Source::URL.page_url?("https://twitter.com/i/web/status/1261877313349640194"))
|
||||||
assert(Source::URL.page_url?("https://twitter.com/BOW999/status/1261877313349640194"))
|
assert(Source::URL.page_url?("https://twitter.com/BOW999/status/1261877313349640194"))
|
||||||
assert(Source::URL.page_url?("https://twitter.com/BOW999/status/1261877313349640194/photo/1"))
|
assert(Source::URL.page_url?("https://twitter.com/BOW999/status/1261877313349640194/photo/1"))
|
||||||
@@ -309,6 +344,10 @@ module Sources
|
|||||||
assert(Source::URL.profile_url?("https://twitter.com/i/user/889592953"))
|
assert(Source::URL.profile_url?("https://twitter.com/i/user/889592953"))
|
||||||
|
|
||||||
refute(Source::URL.profile_url?("https://twitter.com/home"))
|
refute(Source::URL.profile_url?("https://twitter.com/home"))
|
||||||
|
|
||||||
|
assert_nil(Source::URL.parse("https://twitter.com/i/status/1261877313349640194").username)
|
||||||
|
assert_nil(Source::URL.parse("https://twitter.com/i/web/status/1261877313349640194").username)
|
||||||
|
assert_equal("BOW999", Source::URL.parse("https://twitter.com/BOW999/status/1261877313349640194").username)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user