[reddit] implement Reddit Mobile share links

pull/4693/head
inty 11 months ago
parent 95a74be2a5
commit b68aad3dab

@ -712,7 +712,7 @@ Consider all sites to be NSFW unless otherwise known.
<tr>
<td>Reddit</td>
<td>https://www.reddit.com/</td>
<td>Home Feed, individual Images, Submissions, Subreddits, User Profiles</td>
<td>Home Feed, individual Images, Redirects, Submissions, Subreddits, User Profiles</td>
<td><a href="https://github.com/mikf/gallery-dl#oauth">OAuth</a></td>
</tr>
<tr>

@ -292,6 +292,29 @@ class RedditImageExtractor(Extractor):
yield Message.Url, url, data
class RedditRedirectExtractor(Extractor):
"""Extractor for personalized share URLs produced by the mobile app"""
category = "reddit"
subcategory = "redirect"
pattern = (r"(?:https?://)?(?:"
r"(?:\w+\.)?reddit\.com/(?:(?:r)/([^/?#]+)))"
r"/s/([a-zA-Z0-9]{10})")
example = "https://www.reddit.com/r/SUBREDDIT/s/abc456GHIJ"
def __init__(self, match):
Extractor.__init__(self, match)
self.subreddit = match.group(1)
self.share_url = match.group(2)
def items(self):
url = "https://www.reddit.com/r/" + self.subreddit + "/s/" + \
self.share_url
data = {"_extractor": RedditSubmissionExtractor}
response = self.request(url, method="HEAD", allow_redirects=False,
notfound="submission")
yield Message.Queue, response.headers["Location"], data
class RedditAPI():
"""Interface for the Reddit API

@ -240,4 +240,12 @@ __tests__ = (
"#pattern" : r"^https://i\.redd\.it/00af44lpn0u51\.jpg$",
},
{
"#url" : "https://www.reddit.com/r/analog/s/hKrTTvFVwZ",
"#comment" : "Mobile share URL",
"#category": ("", "reddit", "redirect"),
"#class" : reddit.RedditRedirectExtractor,
"#pattern" : r"^https://www\.reddit\.com/r/analog/comments/179exao/photographing_the_recent_annular_eclipse_with_a",
},
)

Loading…
Cancel
Save