[scrolller] add 'user' extractor (#8961)
This commit is contained in:
@@ -170,6 +170,32 @@ class ScrolllerSubredditExtractor(ScrolllerExtractor):
|
||||
"SubredditChildrenQuery", variables, subreddit["children"])
|
||||
|
||||
|
||||
class ScrolllerUserExtractor(ScrolllerExtractor):
|
||||
"""Extractor for media from a scrolller Reddit user"""
|
||||
subcategory = "user"
|
||||
directory_fmt = ("{category}", "User", "{posted_by}")
|
||||
pattern = BASE_PATTERN + r"/reddit-user/([^/?#]+)(?:/?\?([^#]+))?"
|
||||
example = "https://scrolller.com/reddit-user/USER"
|
||||
|
||||
def posts(self):
|
||||
query = "UserPostsQuery"
|
||||
variables = {
|
||||
"username": text.unquote(self.groups[0]),
|
||||
"iterator": None,
|
||||
"limit" : 40,
|
||||
"filter" : None,
|
||||
"sortBy" : "RANDOM",
|
||||
"isNsfw" : True,
|
||||
}
|
||||
|
||||
posts = self._request_graphql(query, variables)["getUserPosts"]
|
||||
if not posts.get("items"):
|
||||
posts = None
|
||||
variables["isNsfw"] = False
|
||||
|
||||
return self._pagination(query, variables, posts)
|
||||
|
||||
|
||||
class ScrolllerFollowingExtractor(ScrolllerExtractor):
|
||||
"""Extractor for followed scrolller subreddits"""
|
||||
subcategory = "following"
|
||||
|
||||
@@ -25,6 +25,39 @@ query SubredditPostQuery(
|
||||
}
|
||||
"""
|
||||
|
||||
UserPostsQuery = """\
|
||||
query UserPostsQuery(
|
||||
$username: String!
|
||||
$iterator: String
|
||||
$limit: Int!
|
||||
$filter: GalleryFilter
|
||||
$sortBy: GallerySortBy
|
||||
$isNsfw: Boolean
|
||||
) {
|
||||
getUserPosts(
|
||||
data: {
|
||||
username: $username
|
||||
iterator: $iterator
|
||||
limit: $limit
|
||||
filter: $filter
|
||||
sortBy: $sortBy
|
||||
isNsfw: $isNsfw
|
||||
}
|
||||
) {
|
||||
iterator items {
|
||||
__typename id url title posted_by reddit_posted_by subredditId
|
||||
subredditTitle subredditUrl subredditIsFollowing redditPath isNsfw
|
||||
hasAudio fullLengthSource gfycatSource redgifsSource ownerAvatar
|
||||
username displayName favoriteCount isPaid tags commentsCount
|
||||
commentsRepliesCount duration createdAt isFavorite
|
||||
albumContent { mediaSources { url width height isOptimized } }
|
||||
mediaSources { url width height isOptimized }
|
||||
blurredMediaSources { url width height isOptimized type }
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
SubredditQuery = """\
|
||||
query SubredditQuery(
|
||||
$url: String!
|
||||
|
||||
Reference in New Issue
Block a user