[scrolller] move GraphQL queries

This commit is contained in:
Mike Fährmann
2025-10-21 17:04:12 +02:00
parent cc645984a4
commit 73bf99612a
2 changed files with 145 additions and 142 deletions

View File

@@ -98,7 +98,7 @@ class ScrolllerExtractor(Extractor):
"Sec-Fetch-Site": "same-site",
}
data = {
"query" : QUERIES[opname],
"query" : self.utils("graphql", opname),
"variables" : variables,
"authorization": self.auth_token,
}
@@ -206,144 +206,3 @@ class ScrolllerPostExtractor(ScrolllerExtractor):
variables = {"url": "/" + self.groups[0]}
data = self._request_graphql("SubredditPostQuery", variables)
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
)
}
""",
}

View 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
)
}
"""