[scrolller] move GraphQL queries
This commit is contained in:
@@ -98,7 +98,7 @@ class ScrolllerExtractor(Extractor):
|
|||||||
"Sec-Fetch-Site": "same-site",
|
"Sec-Fetch-Site": "same-site",
|
||||||
}
|
}
|
||||||
data = {
|
data = {
|
||||||
"query" : QUERIES[opname],
|
"query" : self.utils("graphql", opname),
|
||||||
"variables" : variables,
|
"variables" : variables,
|
||||||
"authorization": self.auth_token,
|
"authorization": self.auth_token,
|
||||||
}
|
}
|
||||||
@@ -206,144 +206,3 @@ class ScrolllerPostExtractor(ScrolllerExtractor):
|
|||||||
variables = {"url": "/" + self.groups[0]}
|
variables = {"url": "/" + self.groups[0]}
|
||||||
data = self._request_graphql("SubredditPostQuery", variables)
|
data = self._request_graphql("SubredditPostQuery", variables)
|
||||||
return (data["getPost"],)
|
return (data["getPost"],)
|
||||||
|
|
||||||
|
|
||||||
QUERIES = {
|
|
||||||
|
|
||||||
"SubredditPostQuery": """\
|
|
||||||
query SubredditPostQuery(
|
|
||||||
$url: String!
|
|
||||||
) {
|
|
||||||
getPost(
|
|
||||||
data: { url: $url }
|
|
||||||
) {
|
|
||||||
__typename id url title subredditId subredditTitle subredditUrl
|
|
||||||
redditPath isNsfw hasAudio fullLengthSource gfycatSource redgifsSource
|
|
||||||
ownerAvatar username displayName favoriteCount isPaid tags
|
|
||||||
commentsCount commentsRepliesCount isFavorite
|
|
||||||
albumContent { mediaSources { url width height isOptimized } }
|
|
||||||
mediaSources { url width height isOptimized }
|
|
||||||
blurredMediaSources { url width height isOptimized }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
""",
|
|
||||||
|
|
||||||
"SubredditQuery": """\
|
|
||||||
query SubredditQuery(
|
|
||||||
$url: String!
|
|
||||||
$iterator: String
|
|
||||||
$sortBy: GallerySortBy
|
|
||||||
$filter: GalleryFilter
|
|
||||||
$limit: Int!
|
|
||||||
) {
|
|
||||||
getSubreddit(
|
|
||||||
data: {
|
|
||||||
url: $url,
|
|
||||||
iterator: $iterator,
|
|
||||||
filter: $filter,
|
|
||||||
limit: $limit,
|
|
||||||
sortBy: $sortBy
|
|
||||||
}
|
|
||||||
) {
|
|
||||||
__typename id url title secondaryTitle description createdAt isNsfw
|
|
||||||
subscribers isComplete itemCount videoCount pictureCount albumCount
|
|
||||||
isPaid username tags isFollowing
|
|
||||||
banner { url width height isOptimized }
|
|
||||||
children {
|
|
||||||
iterator items {
|
|
||||||
__typename id url title subredditId subredditTitle subredditUrl
|
|
||||||
redditPath isNsfw hasAudio fullLengthSource gfycatSource
|
|
||||||
redgifsSource ownerAvatar username displayName favoriteCount
|
|
||||||
isPaid tags commentsCount commentsRepliesCount isFavorite
|
|
||||||
albumContent { mediaSources { url width height isOptimized } }
|
|
||||||
mediaSources { url width height isOptimized }
|
|
||||||
blurredMediaSources { url width height isOptimized }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
""",
|
|
||||||
|
|
||||||
"SubredditChildrenQuery": """\
|
|
||||||
query SubredditChildrenQuery(
|
|
||||||
$subredditId: Int!
|
|
||||||
$iterator: String
|
|
||||||
$filter: GalleryFilter
|
|
||||||
$sortBy: GallerySortBy
|
|
||||||
$limit: Int!
|
|
||||||
$isNsfw: Boolean
|
|
||||||
) {
|
|
||||||
getSubredditChildren(
|
|
||||||
data: {
|
|
||||||
subredditId: $subredditId,
|
|
||||||
iterator: $iterator,
|
|
||||||
filter: $filter,
|
|
||||||
sortBy: $sortBy,
|
|
||||||
limit: $limit,
|
|
||||||
isNsfw: $isNsfw
|
|
||||||
},
|
|
||||||
) {
|
|
||||||
iterator items {
|
|
||||||
__typename id url title subredditId subredditTitle subredditUrl
|
|
||||||
redditPath isNsfw hasAudio fullLengthSource gfycatSource
|
|
||||||
redgifsSource ownerAvatar username displayName favoriteCount isPaid
|
|
||||||
tags commentsCount commentsRepliesCount isFavorite
|
|
||||||
albumContent { mediaSources { url width height isOptimized } }
|
|
||||||
mediaSources { url width height isOptimized }
|
|
||||||
blurredMediaSources { url width height isOptimized }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
""",
|
|
||||||
|
|
||||||
"GetFollowingSubreddits": """\
|
|
||||||
query GetFollowingSubreddits(
|
|
||||||
$iterator: String,
|
|
||||||
$limit: Int!,
|
|
||||||
$filter: GalleryFilter,
|
|
||||||
$isNsfw: Boolean,
|
|
||||||
$sortBy: GallerySortBy
|
|
||||||
) {
|
|
||||||
getFollowingSubreddits(
|
|
||||||
data: {
|
|
||||||
isNsfw: $isNsfw
|
|
||||||
limit: $limit
|
|
||||||
filter: $filter
|
|
||||||
iterator: $iterator
|
|
||||||
sortBy: $sortBy
|
|
||||||
}
|
|
||||||
) {
|
|
||||||
iterator items {
|
|
||||||
__typename id url title secondaryTitle description createdAt isNsfw
|
|
||||||
subscribers isComplete itemCount videoCount pictureCount albumCount
|
|
||||||
isFollowing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
""",
|
|
||||||
|
|
||||||
"LoginQuery": """\
|
|
||||||
query LoginQuery(
|
|
||||||
$username: String!,
|
|
||||||
$password: String!
|
|
||||||
) {
|
|
||||||
login(
|
|
||||||
username: $username,
|
|
||||||
password: $password
|
|
||||||
) {
|
|
||||||
username token expiresAt isAdmin status isPremium
|
|
||||||
}
|
|
||||||
}
|
|
||||||
""",
|
|
||||||
|
|
||||||
"ItemTypeQuery": """\
|
|
||||||
query ItemTypeQuery(
|
|
||||||
$url: String!
|
|
||||||
) {
|
|
||||||
getItemType(
|
|
||||||
url: $url
|
|
||||||
)
|
|
||||||
}
|
|
||||||
""",
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
144
gallery_dl/extractor/utils/scrolller_graphql.py
Normal file
144
gallery_dl/extractor/utils/scrolller_graphql.py
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Copyright 2026 Mike Fährmann
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License version 2 as
|
||||||
|
# published by the Free Software Foundation.
|
||||||
|
|
||||||
|
|
||||||
|
SubredditPostQuery = """\
|
||||||
|
query SubredditPostQuery(
|
||||||
|
$url: String!
|
||||||
|
) {
|
||||||
|
getPost(
|
||||||
|
data: { url: $url }
|
||||||
|
) {
|
||||||
|
__typename id url title subredditId subredditTitle subredditUrl
|
||||||
|
redditPath isNsfw hasAudio fullLengthSource gfycatSource redgifsSource
|
||||||
|
ownerAvatar username displayName favoriteCount isPaid tags
|
||||||
|
commentsCount commentsRepliesCount isFavorite
|
||||||
|
albumContent { mediaSources { url width height isOptimized } }
|
||||||
|
mediaSources { url width height isOptimized }
|
||||||
|
blurredMediaSources { url width height isOptimized }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
SubredditQuery = """\
|
||||||
|
query SubredditQuery(
|
||||||
|
$url: String!
|
||||||
|
$iterator: String
|
||||||
|
$sortBy: GallerySortBy
|
||||||
|
$filter: GalleryFilter
|
||||||
|
$limit: Int!
|
||||||
|
) {
|
||||||
|
getSubreddit(
|
||||||
|
data: {
|
||||||
|
url: $url,
|
||||||
|
iterator: $iterator,
|
||||||
|
filter: $filter,
|
||||||
|
limit: $limit,
|
||||||
|
sortBy: $sortBy
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
__typename id url title secondaryTitle description createdAt isNsfw
|
||||||
|
subscribers isComplete itemCount videoCount pictureCount albumCount
|
||||||
|
isPaid username tags isFollowing
|
||||||
|
banner { url width height isOptimized }
|
||||||
|
children {
|
||||||
|
iterator items {
|
||||||
|
__typename id url title subredditId subredditTitle subredditUrl
|
||||||
|
redditPath isNsfw hasAudio fullLengthSource gfycatSource
|
||||||
|
redgifsSource ownerAvatar username displayName favoriteCount
|
||||||
|
isPaid tags commentsCount commentsRepliesCount isFavorite
|
||||||
|
albumContent { mediaSources { url width height isOptimized } }
|
||||||
|
mediaSources { url width height isOptimized }
|
||||||
|
blurredMediaSources { url width height isOptimized }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
SubredditChildrenQuery = """\
|
||||||
|
query SubredditChildrenQuery(
|
||||||
|
$subredditId: Int!
|
||||||
|
$iterator: String
|
||||||
|
$filter: GalleryFilter
|
||||||
|
$sortBy: GallerySortBy
|
||||||
|
$limit: Int!
|
||||||
|
$isNsfw: Boolean
|
||||||
|
) {
|
||||||
|
getSubredditChildren(
|
||||||
|
data: {
|
||||||
|
subredditId: $subredditId,
|
||||||
|
iterator: $iterator,
|
||||||
|
filter: $filter,
|
||||||
|
sortBy: $sortBy,
|
||||||
|
limit: $limit,
|
||||||
|
isNsfw: $isNsfw
|
||||||
|
},
|
||||||
|
) {
|
||||||
|
iterator items {
|
||||||
|
__typename id url title subredditId subredditTitle subredditUrl
|
||||||
|
redditPath isNsfw hasAudio fullLengthSource gfycatSource
|
||||||
|
redgifsSource ownerAvatar username displayName favoriteCount isPaid
|
||||||
|
tags commentsCount commentsRepliesCount isFavorite
|
||||||
|
albumContent { mediaSources { url width height isOptimized } }
|
||||||
|
mediaSources { url width height isOptimized }
|
||||||
|
blurredMediaSources { url width height isOptimized }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
GetFollowingSubreddits = """\
|
||||||
|
query GetFollowingSubreddits(
|
||||||
|
$iterator: String,
|
||||||
|
$limit: Int!,
|
||||||
|
$filter: GalleryFilter,
|
||||||
|
$isNsfw: Boolean,
|
||||||
|
$sortBy: GallerySortBy
|
||||||
|
) {
|
||||||
|
getFollowingSubreddits(
|
||||||
|
data: {
|
||||||
|
isNsfw: $isNsfw
|
||||||
|
limit: $limit
|
||||||
|
filter: $filter
|
||||||
|
iterator: $iterator
|
||||||
|
sortBy: $sortBy
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
iterator items {
|
||||||
|
__typename id url title secondaryTitle description createdAt isNsfw
|
||||||
|
subscribers isComplete itemCount videoCount pictureCount albumCount
|
||||||
|
isFollowing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
LoginQuery = """\
|
||||||
|
query LoginQuery(
|
||||||
|
$username: String!,
|
||||||
|
$password: String!
|
||||||
|
) {
|
||||||
|
login(
|
||||||
|
username: $username,
|
||||||
|
password: $password
|
||||||
|
) {
|
||||||
|
username token expiresAt isAdmin status isPremium
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
ItemTypeQuery = """\
|
||||||
|
query ItemTypeQuery(
|
||||||
|
$url: String!
|
||||||
|
) {
|
||||||
|
getItemType(
|
||||||
|
url: $url
|
||||||
|
)
|
||||||
|
}
|
||||||
|
"""
|
||||||
Reference in New Issue
Block a user