Compare commits
10
Commits
1.5.1
...
54c109ae3b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
54c109ae3b | ||
|
|
d3bc93f6c9 | ||
|
|
0384f570c5 | ||
|
|
6925cd4e08 | ||
|
|
23960e0613 | ||
|
|
669b41c62c | ||
|
|
c54a11e7bd | ||
|
|
b6bdee4df6 | ||
|
|
cbda217d18 | ||
|
|
ceb756a1a8 |
@@ -36,3 +36,4 @@ http-client.private.env.json
|
|||||||
|
|
||||||
# Build artifacts
|
# Build artifacts
|
||||||
build/*.tar.gz
|
build/*.tar.gz
|
||||||
|
./AniTrack
|
||||||
|
|||||||
+707
-202
@@ -74,37 +74,83 @@ func (a *App) GetAniListItem(aniId int, login bool) AniListGetSingleAnime {
|
|||||||
mediaId
|
mediaId
|
||||||
userId
|
userId
|
||||||
media {
|
media {
|
||||||
id
|
id
|
||||||
idMal
|
idMal
|
||||||
title {
|
title {
|
||||||
romaji
|
userPreferred
|
||||||
english
|
romaji
|
||||||
native
|
english
|
||||||
}
|
native
|
||||||
description
|
}
|
||||||
coverImage {
|
description
|
||||||
large
|
coverImage {
|
||||||
}
|
extraLarge
|
||||||
season
|
large
|
||||||
seasonYear
|
medium
|
||||||
status
|
color
|
||||||
episodes
|
}
|
||||||
nextAiringEpisode {
|
startDate {
|
||||||
airingAt
|
year
|
||||||
timeUntilAiring
|
month
|
||||||
episode
|
day
|
||||||
}
|
}
|
||||||
genres
|
endDate {
|
||||||
tags{
|
year
|
||||||
id
|
month
|
||||||
name
|
day
|
||||||
description
|
}
|
||||||
rank
|
bannerImage
|
||||||
isMediaSpoiler
|
format
|
||||||
isAdult
|
season
|
||||||
}
|
seasonYear
|
||||||
isAdult
|
status
|
||||||
}
|
episodes
|
||||||
|
duration
|
||||||
|
countryOfOrigin
|
||||||
|
source
|
||||||
|
synonyms
|
||||||
|
averageScore
|
||||||
|
meanScore
|
||||||
|
popularity
|
||||||
|
trending
|
||||||
|
favourites
|
||||||
|
isFavourite
|
||||||
|
relations {
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
title {
|
||||||
|
userPreferred
|
||||||
|
romaji
|
||||||
|
english
|
||||||
|
native
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nextAiringEpisode {
|
||||||
|
airingAt
|
||||||
|
timeUntilAiring
|
||||||
|
episode
|
||||||
|
}
|
||||||
|
airingSchedule {
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
airingAt
|
||||||
|
timeUntilAiring
|
||||||
|
episode
|
||||||
|
mediaId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
genres
|
||||||
|
tags {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
description
|
||||||
|
rank
|
||||||
|
isMediaSpoiler
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
status
|
status
|
||||||
startedAt{
|
startedAt{
|
||||||
year
|
year
|
||||||
@@ -204,37 +250,84 @@ func (a *App) AniListSearch(query string) (interface{}, error) {
|
|||||||
perPage
|
perPage
|
||||||
}
|
}
|
||||||
media (search: $search, type: $listType) {
|
media (search: $search, type: $listType) {
|
||||||
id
|
id
|
||||||
idMal
|
idMal
|
||||||
title {
|
title {
|
||||||
|
userPreferred
|
||||||
|
romaji
|
||||||
|
english
|
||||||
|
native
|
||||||
|
}
|
||||||
|
description
|
||||||
|
coverImage {
|
||||||
|
extraLarge
|
||||||
|
large
|
||||||
|
medium
|
||||||
|
color
|
||||||
|
}
|
||||||
|
bannerImage
|
||||||
|
format
|
||||||
|
season
|
||||||
|
seasonYear
|
||||||
|
status
|
||||||
|
episodes
|
||||||
|
duration
|
||||||
|
countryOfOrigin
|
||||||
|
source
|
||||||
|
synonyms
|
||||||
|
averageScore
|
||||||
|
meanScore
|
||||||
|
popularity
|
||||||
|
trending
|
||||||
|
favourites
|
||||||
|
isFavourite
|
||||||
|
relations{
|
||||||
|
nodes{
|
||||||
|
id
|
||||||
|
title{
|
||||||
|
userPreferred
|
||||||
romaji
|
romaji
|
||||||
english
|
english
|
||||||
native
|
native
|
||||||
}
|
}
|
||||||
description
|
}
|
||||||
coverImage {
|
|
||||||
large
|
|
||||||
}
|
|
||||||
season
|
|
||||||
seasonYear
|
|
||||||
status
|
|
||||||
episodes
|
|
||||||
nextAiringEpisode{
|
|
||||||
airingAt
|
|
||||||
timeUntilAiring
|
|
||||||
episode
|
|
||||||
}
|
|
||||||
genres
|
|
||||||
tags{
|
|
||||||
id
|
|
||||||
name
|
|
||||||
description
|
|
||||||
rank
|
|
||||||
isMediaSpoiler
|
|
||||||
isAdult
|
|
||||||
}
|
|
||||||
isAdult
|
|
||||||
}
|
}
|
||||||
|
startDate{
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
endDate{
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
nextAiringEpisode{
|
||||||
|
airingAt
|
||||||
|
timeUntilAiring
|
||||||
|
episode
|
||||||
|
}
|
||||||
|
airingSchedule{
|
||||||
|
nodes{
|
||||||
|
id
|
||||||
|
airingAt
|
||||||
|
timeUntilAiring
|
||||||
|
episode
|
||||||
|
mediaId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
genres
|
||||||
|
tags{
|
||||||
|
id
|
||||||
|
name
|
||||||
|
description
|
||||||
|
rank
|
||||||
|
isMediaSpoiler
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
@@ -271,93 +364,140 @@ func (a *App) GetAniListUserWatchingList(page int, perPage int, sort string) (An
|
|||||||
Variables Variables `json:"variables"`
|
Variables Variables `json:"variables"`
|
||||||
}{
|
}{
|
||||||
Query: `
|
Query: `
|
||||||
query(
|
query (
|
||||||
$page: Int
|
$page: Int
|
||||||
$perPage: Int
|
$perPage: Int
|
||||||
$userId: Int
|
$userId: Int
|
||||||
$listType: MediaType
|
$listType: MediaType
|
||||||
$status: MediaListStatus
|
$status: MediaListStatus
|
||||||
$sort:[MediaListSort]
|
$sort: [MediaListSort]
|
||||||
) {
|
) {
|
||||||
Page(page: $page, perPage: $perPage) {
|
Page(page: $page, perPage: $perPage) {
|
||||||
pageInfo {
|
pageInfo {
|
||||||
total
|
total
|
||||||
perPage
|
perPage
|
||||||
currentPage
|
currentPage
|
||||||
lastPage
|
lastPage
|
||||||
hasNextPage
|
hasNextPage
|
||||||
}
|
}
|
||||||
mediaList(userId: $userId, type: $listType, status: $status, sort: $sort) {
|
mediaList(userId: $userId, type: $listType, status: $status, sort: $sort) {
|
||||||
id
|
id
|
||||||
mediaId
|
mediaId
|
||||||
userId
|
userId
|
||||||
media {
|
media {
|
||||||
id
|
id
|
||||||
idMal
|
idMal
|
||||||
title {
|
title {
|
||||||
|
userPreferred
|
||||||
romaji
|
romaji
|
||||||
english
|
english
|
||||||
native
|
native
|
||||||
}
|
}
|
||||||
description
|
description
|
||||||
coverImage {
|
coverImage {
|
||||||
|
extraLarge
|
||||||
large
|
large
|
||||||
|
medium
|
||||||
|
color
|
||||||
}
|
}
|
||||||
|
bannerImage
|
||||||
|
format
|
||||||
season
|
season
|
||||||
seasonYear
|
seasonYear
|
||||||
status
|
status
|
||||||
episodes
|
episodes
|
||||||
|
duration
|
||||||
|
countryOfOrigin
|
||||||
|
source
|
||||||
|
synonyms
|
||||||
|
averageScore
|
||||||
|
meanScore
|
||||||
|
popularity
|
||||||
|
trending
|
||||||
|
favourites
|
||||||
|
isFavourite
|
||||||
|
relations{
|
||||||
|
nodes{
|
||||||
|
id
|
||||||
|
title{
|
||||||
|
userPreferred
|
||||||
|
romaji
|
||||||
|
english
|
||||||
|
native
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
startDate{
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
endDate{
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
nextAiringEpisode{
|
nextAiringEpisode{
|
||||||
airingAt
|
airingAt
|
||||||
timeUntilAiring
|
timeUntilAiring
|
||||||
episode
|
episode
|
||||||
}
|
}
|
||||||
genres
|
airingSchedule{
|
||||||
tags{
|
nodes{
|
||||||
id
|
id
|
||||||
name
|
airingAt
|
||||||
description
|
timeUntilAiring
|
||||||
rank
|
episode
|
||||||
isMediaSpoiler
|
mediaId
|
||||||
isAdult
|
|
||||||
}
|
|
||||||
isAdult
|
|
||||||
}
|
|
||||||
status
|
|
||||||
startedAt {
|
|
||||||
year
|
|
||||||
month
|
|
||||||
day
|
|
||||||
}
|
|
||||||
completedAt {
|
|
||||||
year
|
|
||||||
month
|
|
||||||
day
|
|
||||||
}
|
|
||||||
notes
|
|
||||||
progress
|
|
||||||
score
|
|
||||||
repeat
|
|
||||||
user {
|
|
||||||
id
|
|
||||||
name
|
|
||||||
avatar{
|
|
||||||
large
|
|
||||||
medium
|
|
||||||
}
|
|
||||||
statistics {
|
|
||||||
anime {
|
|
||||||
count
|
|
||||||
statuses {
|
|
||||||
status
|
|
||||||
count
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
genres
|
||||||
|
tags{
|
||||||
|
id
|
||||||
|
name
|
||||||
|
description
|
||||||
|
rank
|
||||||
|
isMediaSpoiler
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
isAdult
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
status
|
||||||
|
startedAt {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
completedAt {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
notes
|
||||||
|
progress
|
||||||
|
score
|
||||||
|
repeat
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
avatar {
|
||||||
|
large
|
||||||
|
medium
|
||||||
|
}
|
||||||
|
statistics {
|
||||||
|
anime {
|
||||||
|
count
|
||||||
|
statuses {
|
||||||
|
status
|
||||||
|
count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
`,
|
`,
|
||||||
Variables: Variables{
|
Variables: Variables{
|
||||||
Page: page,
|
Page: page,
|
||||||
@@ -424,86 +564,138 @@ func (a *App) AniListUpdateEntry(updateBody AniListUpdateVariables) AniListGetSi
|
|||||||
Variables AniListUpdateVariables `json:"variables"`
|
Variables AniListUpdateVariables `json:"variables"`
|
||||||
}{
|
}{
|
||||||
Query: `
|
Query: `
|
||||||
mutation(
|
mutation (
|
||||||
$mediaId:Int,
|
$mediaId: Int
|
||||||
$progress:Int,
|
$progress: Int
|
||||||
$status:MediaListStatus,
|
$status: MediaListStatus
|
||||||
$score:Float,
|
$score: Float
|
||||||
$repeat:Int,
|
$repeat: Int
|
||||||
$notes:String,
|
$notes: String
|
||||||
$startedAt:FuzzyDateInput,
|
$startedAt: FuzzyDateInput
|
||||||
$completedAt:FuzzyDateInput,
|
$completedAt: FuzzyDateInput
|
||||||
){
|
) {
|
||||||
SaveMediaListEntry(
|
SaveMediaListEntry(
|
||||||
mediaId:$mediaId,
|
mediaId: $mediaId
|
||||||
progress:$progress,
|
progress: $progress
|
||||||
status:$status,
|
status: $status
|
||||||
score:$score,
|
score: $score
|
||||||
repeat:$repeat,
|
repeat: $repeat
|
||||||
notes:$notes,
|
notes: $notes
|
||||||
startedAt:$startedAt
|
startedAt: $startedAt
|
||||||
completedAt:$completedAt
|
completedAt: $completedAt
|
||||||
){
|
) {
|
||||||
id
|
id
|
||||||
mediaId
|
idMal
|
||||||
userId
|
title {
|
||||||
media {
|
userPreferred
|
||||||
id
|
romaji
|
||||||
idMal
|
english
|
||||||
title {
|
native
|
||||||
romaji
|
}
|
||||||
english
|
description
|
||||||
native
|
coverImage {
|
||||||
}
|
extraLarge
|
||||||
description
|
large
|
||||||
coverImage {
|
medium
|
||||||
large
|
color
|
||||||
}
|
}
|
||||||
season
|
bannerImage
|
||||||
seasonYear
|
format
|
||||||
status
|
season
|
||||||
episodes
|
seasonYear
|
||||||
nextAiringEpisode {
|
status
|
||||||
airingAt
|
episodes
|
||||||
timeUntilAiring
|
duration
|
||||||
episode
|
countryOfOrigin
|
||||||
}
|
source
|
||||||
isAdult
|
synonyms
|
||||||
}
|
averageScore
|
||||||
status
|
meanScore
|
||||||
startedAt{
|
popularity
|
||||||
year
|
trending
|
||||||
month
|
favourites
|
||||||
day
|
isFavourite
|
||||||
}
|
relations {
|
||||||
completedAt{
|
nodes {
|
||||||
year
|
id
|
||||||
month
|
title {
|
||||||
day
|
userPreferred
|
||||||
}
|
romaji
|
||||||
notes
|
english
|
||||||
progress
|
native
|
||||||
score
|
}
|
||||||
repeat
|
}
|
||||||
user {
|
}
|
||||||
id
|
startDate {
|
||||||
name
|
year
|
||||||
avatar{
|
month
|
||||||
large
|
day
|
||||||
medium
|
}
|
||||||
}
|
endDate {
|
||||||
statistics{
|
year
|
||||||
anime{
|
month
|
||||||
count
|
day
|
||||||
statuses{
|
}
|
||||||
status
|
nextAiringEpisode {
|
||||||
count
|
airingAt
|
||||||
}
|
timeUntilAiring
|
||||||
}
|
episode
|
||||||
}
|
}
|
||||||
}
|
airingSchedule {
|
||||||
}
|
nodes {
|
||||||
}
|
id
|
||||||
|
airingAt
|
||||||
|
timeUntilAiring
|
||||||
|
episode
|
||||||
|
mediaId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
genres
|
||||||
|
tags {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
description
|
||||||
|
rank
|
||||||
|
isMediaSpoiler
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
|
||||||
|
status
|
||||||
|
startedAt {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
completedAt {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
notes
|
||||||
|
progress
|
||||||
|
score
|
||||||
|
repeat
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
avatar {
|
||||||
|
large
|
||||||
|
medium
|
||||||
|
}
|
||||||
|
statistics {
|
||||||
|
anime {
|
||||||
|
count
|
||||||
|
statuses {
|
||||||
|
status
|
||||||
|
count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
`,
|
`,
|
||||||
Variables: updateBody,
|
Variables: updateBody,
|
||||||
}
|
}
|
||||||
@@ -558,3 +750,316 @@ func (a *App) AniListDeleteEntry(mediaListId int) DeleteAniListReturn {
|
|||||||
|
|
||||||
return post
|
return post
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *App) AniListBrowse(
|
||||||
|
page int,
|
||||||
|
perPage int,
|
||||||
|
id int,
|
||||||
|
isAdult bool,
|
||||||
|
search string,
|
||||||
|
format []string,
|
||||||
|
status string,
|
||||||
|
countryOfOrigin string,
|
||||||
|
source string,
|
||||||
|
season string,
|
||||||
|
seasonYear int,
|
||||||
|
year string,
|
||||||
|
onList bool,
|
||||||
|
yearLesser int,
|
||||||
|
yearGreater int,
|
||||||
|
episodeLesser int,
|
||||||
|
episodeGreater int,
|
||||||
|
durationLesser int,
|
||||||
|
durationGreater int,
|
||||||
|
chapterLesser int,
|
||||||
|
chapterGreater int,
|
||||||
|
volumeLesser int,
|
||||||
|
volumeGreater int,
|
||||||
|
licensedBy []int,
|
||||||
|
isLicensed bool,
|
||||||
|
genres []string,
|
||||||
|
excludedGenres []string,
|
||||||
|
tags []string,
|
||||||
|
excludedTags []string,
|
||||||
|
minimumTagRank int,
|
||||||
|
sort []string) (AniListCurrentUserWatchList, error) {
|
||||||
|
// user := a.GetAniListLoggedInUser()
|
||||||
|
type Variables struct {
|
||||||
|
Page int `json:"page"`
|
||||||
|
PerPage int `json:"perPage"`
|
||||||
|
Id int `json:"id"`
|
||||||
|
IsAdult bool `json:"isAdult"`
|
||||||
|
Search string `json:"search"`
|
||||||
|
Format []string `json:"format"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
CountryOfOrigin string `json:"countryOfOrigin"`
|
||||||
|
Source string `json:"source"`
|
||||||
|
Season string `json:"season"`
|
||||||
|
SeasonYear int `json:"seasonYear"`
|
||||||
|
Year string `json:"year"`
|
||||||
|
OnList bool `json:"onList"`
|
||||||
|
YearLesser int `json:"yearLesser"`
|
||||||
|
YearGreater int `json:"yearGreater"`
|
||||||
|
EpisodeLesser int `json:"episodeLesser"`
|
||||||
|
EpisodeGreater int `json:"episodeGreater"`
|
||||||
|
DurationLesser int `json:"durationLesser"`
|
||||||
|
DurationGreater int `json:"durationGreater"`
|
||||||
|
ChapterLesser int `json:"chapterLesser"`
|
||||||
|
ChapterGreater int `json:"chapterGreater"`
|
||||||
|
VolumeLesser int `json:"volumeLesser"`
|
||||||
|
VolumeGreater int `json:"volumeGreater"`
|
||||||
|
LicensedBy []int `json:"licensedBy"`
|
||||||
|
IsLicensed bool `json:"isLicensed"`
|
||||||
|
Genres []string `json:"genres"`
|
||||||
|
ExcludedGenres []string `json:"excludedGenres"`
|
||||||
|
Tags []string `json:"tags"`
|
||||||
|
ExcludedTags []string `json:"excludedTags"`
|
||||||
|
MinimumTagRank int `json:"minimumTagRank"`
|
||||||
|
Sort []string `json:"sort"`
|
||||||
|
}
|
||||||
|
body := struct {
|
||||||
|
Query string `json:"query"`
|
||||||
|
Variables Variables `json:"variables"`
|
||||||
|
}{
|
||||||
|
Query: `
|
||||||
|
query (
|
||||||
|
$page: Int = 1
|
||||||
|
$perPage: Int = 20
|
||||||
|
$id: Int
|
||||||
|
$isAdult: Boolean = false
|
||||||
|
$search: String
|
||||||
|
$format: [MediaFormat]
|
||||||
|
$status: MediaStatus
|
||||||
|
$countryOfOrigin: CountryCode
|
||||||
|
$source: MediaSource
|
||||||
|
$season: MediaSeason
|
||||||
|
$seasonYear: Int
|
||||||
|
$year: String
|
||||||
|
$onList: Boolean
|
||||||
|
$yearLesser: FuzzyDateInt
|
||||||
|
$yearGreater: FuzzyDateInt
|
||||||
|
$episodeLesser: Int
|
||||||
|
$episodeGreater: Int
|
||||||
|
$durationLesser: Int
|
||||||
|
$durationGreater: Int
|
||||||
|
$chapterLesser: Int
|
||||||
|
$chapterGreater: Int
|
||||||
|
$volumeLesser: Int
|
||||||
|
$volumeGreater: Int
|
||||||
|
$licensedBy: [Int]
|
||||||
|
$isLicensed: Boolean
|
||||||
|
$genres: [String]
|
||||||
|
$excludedGenres: [String]
|
||||||
|
$tags: [String]
|
||||||
|
$excludedTags: [String]
|
||||||
|
$minimumTagRank: Int
|
||||||
|
$sort: [MediaSort] = [POPULARITY_DESC, SCORE_DESC]
|
||||||
|
) {
|
||||||
|
Page(page: $page, perPage: $perPage) {
|
||||||
|
pageInfo {
|
||||||
|
total
|
||||||
|
perPage
|
||||||
|
currentPage
|
||||||
|
lastPage
|
||||||
|
hasNextPage
|
||||||
|
}
|
||||||
|
media(
|
||||||
|
id: $id
|
||||||
|
type: ANIME
|
||||||
|
season: $season
|
||||||
|
format_in: $format
|
||||||
|
status: $status
|
||||||
|
countryOfOrigin: $countryOfOrigin
|
||||||
|
source: $source
|
||||||
|
search: $search
|
||||||
|
onList: $onList
|
||||||
|
seasonYear: $seasonYear
|
||||||
|
startDate_like: $year
|
||||||
|
startDate_lesser: $yearLesser
|
||||||
|
startDate_greater: $yearGreater
|
||||||
|
episodes_lesser: $episodeLesser
|
||||||
|
episodes_greater: $episodeGreater
|
||||||
|
duration_lesser: $durationLesser
|
||||||
|
duration_greater: $durationGreater
|
||||||
|
chapters_lesser: $chapterLesser
|
||||||
|
chapters_greater: $chapterGreater
|
||||||
|
volumes_lesser: $volumeLesser
|
||||||
|
volumes_greater: $volumeGreater
|
||||||
|
licensedById_in: $licensedBy
|
||||||
|
isLicensed: $isLicensed
|
||||||
|
genre_in: $genres
|
||||||
|
genre_not_in: $excludedGenres
|
||||||
|
tag_in: $tags
|
||||||
|
tag_not_in: $excludedTags
|
||||||
|
minimumTagRank: $minimumTagRank
|
||||||
|
sort: $sort
|
||||||
|
isAdult: $isAdult
|
||||||
|
) {
|
||||||
|
id
|
||||||
|
mediaId
|
||||||
|
userId
|
||||||
|
media {
|
||||||
|
id
|
||||||
|
idMal
|
||||||
|
title {
|
||||||
|
userPreferred
|
||||||
|
romaji
|
||||||
|
english
|
||||||
|
native
|
||||||
|
}
|
||||||
|
description
|
||||||
|
coverImage {
|
||||||
|
extraLarge
|
||||||
|
large
|
||||||
|
medium
|
||||||
|
color
|
||||||
|
}
|
||||||
|
bannerImage
|
||||||
|
format
|
||||||
|
season
|
||||||
|
seasonYear
|
||||||
|
status
|
||||||
|
episodes
|
||||||
|
duration
|
||||||
|
countryOfOrigin
|
||||||
|
source
|
||||||
|
synonyms
|
||||||
|
averageScore
|
||||||
|
meanScore
|
||||||
|
popularity
|
||||||
|
trending
|
||||||
|
favourites
|
||||||
|
isFavourite
|
||||||
|
relations {
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
title {
|
||||||
|
userPreferred
|
||||||
|
romaji
|
||||||
|
english
|
||||||
|
native
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
startDate {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
endDate {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
nextAiringEpisode {
|
||||||
|
airingAt
|
||||||
|
timeUntilAiring
|
||||||
|
episode
|
||||||
|
}
|
||||||
|
airingSchedule {
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
airingAt
|
||||||
|
timeUntilAiring
|
||||||
|
episode
|
||||||
|
mediaId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
genres
|
||||||
|
tags {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
description
|
||||||
|
rank
|
||||||
|
isMediaSpoiler
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
Variables: Variables{
|
||||||
|
Page: page,
|
||||||
|
PerPage: perPage,
|
||||||
|
Id: id,
|
||||||
|
IsAdult: isAdult,
|
||||||
|
Search: search,
|
||||||
|
Format: format,
|
||||||
|
Status: status,
|
||||||
|
CountryOfOrigin: countryOfOrigin,
|
||||||
|
Source: source,
|
||||||
|
Season: season,
|
||||||
|
SeasonYear: seasonYear,
|
||||||
|
Year: year,
|
||||||
|
OnList: onList,
|
||||||
|
YearLesser: yearLesser,
|
||||||
|
YearGreater: yearGreater,
|
||||||
|
EpisodeLesser: episodeLesser,
|
||||||
|
EpisodeGreater: episodeGreater,
|
||||||
|
DurationLesser: durationLesser,
|
||||||
|
DurationGreater: durationGreater,
|
||||||
|
ChapterLesser: chapterLesser,
|
||||||
|
ChapterGreater: chapterGreater,
|
||||||
|
VolumeLesser: volumeLesser,
|
||||||
|
VolumeGreater: volumeGreater,
|
||||||
|
LicensedBy: licensedBy,
|
||||||
|
IsLicensed: isLicensed,
|
||||||
|
Genres: genres,
|
||||||
|
ExcludedGenres: excludedGenres,
|
||||||
|
Tags: tags,
|
||||||
|
ExcludedTags: excludedTags,
|
||||||
|
MinimumTagRank: minimumTagRank,
|
||||||
|
Sort: sort,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
returnedBody, status := AniListQuery(body, true)
|
||||||
|
|
||||||
|
var badPost struct {
|
||||||
|
Errors []struct {
|
||||||
|
Message string `json:"message"`
|
||||||
|
Status int `json:"status"`
|
||||||
|
Locations []struct {
|
||||||
|
Line int `json:"line"`
|
||||||
|
Column int `json:"column"`
|
||||||
|
} `json:"locations"`
|
||||||
|
} `json:"errors"`
|
||||||
|
Data any `json:"data"`
|
||||||
|
}
|
||||||
|
var post AniListCurrentUserWatchList
|
||||||
|
if status == "200 OK" {
|
||||||
|
err := json.Unmarshal(returnedBody, &post)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Failed at unmarshal, %s\n", err)
|
||||||
|
}
|
||||||
|
// Getting the real total, finding the real last page and storing that in the Page info
|
||||||
|
statuses := post.Data.Page.MediaList[0].User.Statistics.Anime.Statuses
|
||||||
|
var total int
|
||||||
|
for _, status := range statuses {
|
||||||
|
if status.Status == "CURRENT" {
|
||||||
|
total = status.Count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lastPage := total / perPage
|
||||||
|
|
||||||
|
post.Data.Page.PageInfo.Total = total
|
||||||
|
post.Data.Page.PageInfo.LastPage = lastPage
|
||||||
|
}
|
||||||
|
|
||||||
|
if status == "403 Forbidden" {
|
||||||
|
err := json.Unmarshal(returnedBody, &badPost)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Failed at unmarshal, %s\n", err)
|
||||||
|
return post, fmt.Errorf("API authentication error")
|
||||||
|
}
|
||||||
|
return post, fmt.Errorf("AniList API error: %s", badPost.Errors[0].Message)
|
||||||
|
}
|
||||||
|
if status != "200 OK" {
|
||||||
|
return post, fmt.Errorf("API request failed with status: %s", status)
|
||||||
|
}
|
||||||
|
|
||||||
|
return post, nil
|
||||||
|
}
|
||||||
|
|||||||
+97
-35
@@ -37,6 +37,20 @@ type AniListCurrentUserWatchList struct {
|
|||||||
} `json:"data"`
|
} `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type AniListBrowseList struct {
|
||||||
|
Data struct {
|
||||||
|
Page struct {
|
||||||
|
PageInfo struct {
|
||||||
|
Total int `json:"total"`
|
||||||
|
PerPage int `json:"perPage"`
|
||||||
|
CurrentPage int `json:"currentPage"`
|
||||||
|
LastPage int `json:"lastPage"`
|
||||||
|
HasNextPage bool `json:"hasNextPage"`
|
||||||
|
} `json:"pageInfo"`
|
||||||
|
Media []Media `json:"mediaList"`
|
||||||
|
} `json:"Page"`
|
||||||
|
} `json:"data"`
|
||||||
|
}
|
||||||
type AniListGetSingleAnime struct {
|
type AniListGetSingleAnime struct {
|
||||||
Data struct {
|
Data struct {
|
||||||
MediaList MediaList `json:"MediaList"`
|
MediaList MediaList `json:"MediaList"`
|
||||||
@@ -49,43 +63,91 @@ type AniListUpdateReturn struct {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Media struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
IDMal int `json:"idMal"`
|
||||||
|
Title struct {
|
||||||
|
UserPreferred string `json:"userPreferred"`
|
||||||
|
Romaji string `json:"romaji"`
|
||||||
|
English string `json:"english"`
|
||||||
|
Native string `json:"native"`
|
||||||
|
} `json:"title"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
CoverImage struct {
|
||||||
|
ExtraLarge string
|
||||||
|
Large string `json:"large"`
|
||||||
|
Medium string
|
||||||
|
Color string
|
||||||
|
} `json:"coverImage"`
|
||||||
|
BannerImage string
|
||||||
|
Format string
|
||||||
|
Season string `json:"season"`
|
||||||
|
SeasonYear int `json:"seasonYear"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Episodes int `json:"episodes"`
|
||||||
|
Duration int
|
||||||
|
CountryOfOrigin string
|
||||||
|
Source string
|
||||||
|
Synonyms []string
|
||||||
|
AverageScore int
|
||||||
|
MeanScore int
|
||||||
|
Popularity int
|
||||||
|
Trending int
|
||||||
|
Favourites int
|
||||||
|
isFavourite bool
|
||||||
|
Relations struct {
|
||||||
|
nodes struct {
|
||||||
|
id int
|
||||||
|
Title struct {
|
||||||
|
UserPreferred string `json:"userPreferred"`
|
||||||
|
Romaji string `json:"romaji"`
|
||||||
|
English string `json:"english"`
|
||||||
|
Native string `json:"native"`
|
||||||
|
} `json:"title"`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
StartDate struct {
|
||||||
|
Year int
|
||||||
|
Month int
|
||||||
|
Day int
|
||||||
|
}
|
||||||
|
EndDate struct {
|
||||||
|
Year int
|
||||||
|
Month int
|
||||||
|
Day int
|
||||||
|
}
|
||||||
|
NextAiringEpisode struct {
|
||||||
|
AiringAt int `json:"airingAt"`
|
||||||
|
TimeUntilAiring int `json:"timeUntilAiring"`
|
||||||
|
Episode int `json:"episode"`
|
||||||
|
} `json:"nextAiringEpisode"`
|
||||||
|
AiringSchedule struct {
|
||||||
|
Nodes struct {
|
||||||
|
Id int
|
||||||
|
AiringAt int
|
||||||
|
TimeUntilAiring int
|
||||||
|
Episode int
|
||||||
|
MediaId int
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Genres []string `json:"genres"`
|
||||||
|
Tags []struct {
|
||||||
|
Id int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Rank int `json:"rank"`
|
||||||
|
IsMediaSpoiler bool `json:"isMediaSpoiler"`
|
||||||
|
IsAdult bool `json:"isAdult"`
|
||||||
|
} `json:"tags"`
|
||||||
|
IsAdult bool `json:"isAdult"`
|
||||||
|
}
|
||||||
|
|
||||||
type MediaList struct {
|
type MediaList struct {
|
||||||
ID int `json:"id"`
|
ID int `json:"id"`
|
||||||
MediaID int `json:"mediaId"`
|
MediaID int `json:"mediaId"`
|
||||||
UserID int `json:"userId"`
|
UserID int `json:"userId"`
|
||||||
Media struct {
|
|
||||||
ID int `json:"id"`
|
|
||||||
IDMal int `json:"idMal"`
|
|
||||||
Title struct {
|
|
||||||
Romaji string `json:"romaji"`
|
|
||||||
English string `json:"english"`
|
|
||||||
Native string `json:"native"`
|
|
||||||
} `json:"title"`
|
|
||||||
Description string `json:"description"`
|
|
||||||
CoverImage struct {
|
|
||||||
Large string `json:"large"`
|
|
||||||
} `json:"coverImage"`
|
|
||||||
Season string `json:"season"`
|
|
||||||
SeasonYear int `json:"seasonYear"`
|
|
||||||
Status string `json:"status"`
|
|
||||||
Episodes int `json:"episodes"`
|
|
||||||
NextAiringEpisode struct {
|
|
||||||
AiringAt int `json:"airingAt"`
|
|
||||||
TimeUntilAiring int `json:"timeUntilAiring"`
|
|
||||||
Episode int `json:"episode"`
|
|
||||||
} `json:"nextAiringEpisode"`
|
|
||||||
Genres []string `json:"genres"`
|
|
||||||
Tags []struct {
|
|
||||||
Id int `json:"id"`
|
|
||||||
Name string `json:"name"`
|
|
||||||
Description string `json:"description"`
|
|
||||||
Rank int `json:"rank"`
|
|
||||||
IsMediaSpoiler bool `json:"isMediaSpoiler"`
|
|
||||||
IsAdult bool `json:"isAdult"`
|
|
||||||
} `json:"tags"`
|
|
||||||
IsAdult bool `json:"isAdult"`
|
|
||||||
} `json:"media"`
|
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
|
Media Media `json:"media"`
|
||||||
StartedAt struct {
|
StartedAt struct {
|
||||||
Year int `json:"year"`
|
Year int `json:"year"`
|
||||||
Month int `json:"month"`
|
Month int `json:"month"`
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ headers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body:graphql {
|
body:graphql {
|
||||||
# Write your query or mutation here
|
|
||||||
query (
|
query (
|
||||||
$page: Int
|
$page: Int
|
||||||
$perPage: Int
|
$perPage: Int
|
||||||
@@ -41,23 +40,79 @@ body:graphql {
|
|||||||
id
|
id
|
||||||
idMal
|
idMal
|
||||||
title {
|
title {
|
||||||
|
userPreferred
|
||||||
romaji
|
romaji
|
||||||
english
|
english
|
||||||
native
|
native
|
||||||
}
|
}
|
||||||
description
|
description
|
||||||
coverImage {
|
coverImage {
|
||||||
|
extraLarge
|
||||||
large
|
large
|
||||||
|
medium
|
||||||
|
color
|
||||||
}
|
}
|
||||||
|
bannerImage
|
||||||
|
format
|
||||||
season
|
season
|
||||||
seasonYear
|
seasonYear
|
||||||
status
|
status
|
||||||
episodes
|
episodes
|
||||||
|
duration
|
||||||
|
countryOfOrigin
|
||||||
|
source
|
||||||
|
synonyms
|
||||||
|
averageScore
|
||||||
|
meanScore
|
||||||
|
popularity
|
||||||
|
trending
|
||||||
|
favourites
|
||||||
|
isFavourite
|
||||||
|
relations {
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
title {
|
||||||
|
userPreferred
|
||||||
|
romaji
|
||||||
|
english
|
||||||
|
native
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
startDate {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
endDate {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
nextAiringEpisode {
|
nextAiringEpisode {
|
||||||
airingAt
|
airingAt
|
||||||
timeUntilAiring
|
timeUntilAiring
|
||||||
episode
|
episode
|
||||||
}
|
}
|
||||||
|
airingSchedule {
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
airingAt
|
||||||
|
timeUntilAiring
|
||||||
|
episode
|
||||||
|
mediaId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
genres
|
||||||
|
tags {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
description
|
||||||
|
rank
|
||||||
|
isMediaSpoiler
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
isAdult
|
||||||
}
|
}
|
||||||
status
|
status
|
||||||
startedAt {
|
startedAt {
|
||||||
|
|||||||
@@ -17,63 +17,161 @@ headers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body:graphql {
|
body:graphql {
|
||||||
mutation(
|
mutation (
|
||||||
$mediaId:Int,
|
$mediaId: Int
|
||||||
$progress:Int,
|
$progress: Int
|
||||||
$status:MediaListStatus,
|
$status: MediaListStatus
|
||||||
$score:Float,
|
$score: Float
|
||||||
$repeat:Int,
|
$repeat: Int
|
||||||
$notes:String,
|
$notes: String
|
||||||
$startedAt:FuzzyDateInput,
|
$startedAt: FuzzyDateInput
|
||||||
$completedAt:FuzzyDateInput,
|
$completedAt: FuzzyDateInput
|
||||||
){
|
) {
|
||||||
SaveMediaListEntry(
|
SaveMediaListEntry(
|
||||||
mediaId:$mediaId,
|
mediaId: $mediaId
|
||||||
progress:$progress,
|
progress: $progress
|
||||||
status:$status,
|
status: $status
|
||||||
score:$score,
|
score: $score
|
||||||
repeat:$repeat,
|
repeat: $repeat
|
||||||
notes:$notes,
|
notes: $notes
|
||||||
startedAt:$startedAt
|
startedAt: $startedAt
|
||||||
completedAt:$completedAt
|
completedAt: $completedAt
|
||||||
){
|
) {
|
||||||
mediaId
|
id
|
||||||
progress
|
mediaId
|
||||||
status
|
userId
|
||||||
score
|
media {
|
||||||
repeat
|
id
|
||||||
notes
|
idMal
|
||||||
startedAt{
|
title {
|
||||||
year
|
userPreferred
|
||||||
month
|
romaji
|
||||||
day
|
english
|
||||||
}
|
native
|
||||||
completedAt{
|
}
|
||||||
year
|
description
|
||||||
month
|
coverImage {
|
||||||
day
|
extraLarge
|
||||||
}
|
large
|
||||||
}
|
medium
|
||||||
}
|
color
|
||||||
|
}
|
||||||
|
bannerImage
|
||||||
|
format
|
||||||
|
season
|
||||||
|
seasonYear
|
||||||
|
status
|
||||||
|
episodes
|
||||||
|
duration
|
||||||
|
countryOfOrigin
|
||||||
|
source
|
||||||
|
synonyms
|
||||||
|
averageScore
|
||||||
|
meanScore
|
||||||
|
popularity
|
||||||
|
trending
|
||||||
|
favourites
|
||||||
|
isFavourite
|
||||||
|
relations {
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
title {
|
||||||
|
userPreferred
|
||||||
|
romaji
|
||||||
|
english
|
||||||
|
native
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
startDate {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
endDate {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
nextAiringEpisode {
|
||||||
|
airingAt
|
||||||
|
timeUntilAiring
|
||||||
|
episode
|
||||||
|
}
|
||||||
|
airingSchedule {
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
airingAt
|
||||||
|
timeUntilAiring
|
||||||
|
episode
|
||||||
|
mediaId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
genres
|
||||||
|
tags {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
description
|
||||||
|
rank
|
||||||
|
isMediaSpoiler
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
status
|
||||||
|
startedAt {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
completedAt {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
notes
|
||||||
|
progress
|
||||||
|
score
|
||||||
|
repeat
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
avatar {
|
||||||
|
large
|
||||||
|
medium
|
||||||
|
}
|
||||||
|
statistics {
|
||||||
|
anime {
|
||||||
|
count
|
||||||
|
statuses {
|
||||||
|
status
|
||||||
|
count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
body:graphql:vars {
|
body:graphql:vars {
|
||||||
{
|
{
|
||||||
"mediaId":170998,
|
"mediaId": 170998,
|
||||||
"progress":5,
|
"progress": 5,
|
||||||
"status":"CURRENT",
|
"status": "CURRENT",
|
||||||
"score":9.0,
|
"score": 9,
|
||||||
"repeat":0,
|
"repeat": 0,
|
||||||
"notes":",malSync::eyJ1IjoiaHR0cHM6Ly93d3cuY3J1bmNoeXJvbGwuY29tL3Nlcmllcy9HVkRIWDg1Wk4vI3NlYXNvbj1HNjNWQzJHUUsiLCJwIjoiIn0=::",
|
"notes": ",malSync::eyJ1IjoiaHR0cHM6Ly93d3cuY3J1bmNoeXJvbGwuY29tL3Nlcmllcy9HVkRIWDg1Wk4vI3NlYXNvbj1HNjNWQzJHUUsiLCJwIjoiIn0=::",
|
||||||
"startedAt":{
|
"startedAt": {
|
||||||
"year":2024,
|
"year": 2024,
|
||||||
"month":7,
|
"month": 7,
|
||||||
"day":10
|
"day": 10
|
||||||
},
|
},
|
||||||
"completedAt":{
|
"completedAt": {
|
||||||
"year": 0,
|
"year": 0,
|
||||||
"month":0,
|
"month": 0,
|
||||||
"day":0
|
"day": 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,191 @@
|
|||||||
|
meta {
|
||||||
|
name: SeasonBasedBrowse
|
||||||
|
type: graphql
|
||||||
|
seq: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
post {
|
||||||
|
url: https://graphql.anilist.co
|
||||||
|
body: graphql
|
||||||
|
auth: inherit
|
||||||
|
}
|
||||||
|
|
||||||
|
body:graphql {
|
||||||
|
query (
|
||||||
|
$page: Int = 1
|
||||||
|
$perPage: Int = 20
|
||||||
|
$id: Int
|
||||||
|
$type: MediaType
|
||||||
|
$isAdult: Boolean = false
|
||||||
|
$search: String
|
||||||
|
$format: [MediaFormat]
|
||||||
|
$status: MediaStatus
|
||||||
|
$countryOfOrigin: CountryCode
|
||||||
|
$source: MediaSource
|
||||||
|
$season: MediaSeason
|
||||||
|
$seasonYear: Int
|
||||||
|
$year: String
|
||||||
|
$onList: Boolean
|
||||||
|
$yearLesser: FuzzyDateInt
|
||||||
|
$yearGreater: FuzzyDateInt
|
||||||
|
$episodeLesser: Int
|
||||||
|
$episodeGreater: Int
|
||||||
|
$durationLesser: Int
|
||||||
|
$durationGreater: Int
|
||||||
|
$chapterLesser: Int
|
||||||
|
$chapterGreater: Int
|
||||||
|
$volumeLesser: Int
|
||||||
|
$volumeGreater: Int
|
||||||
|
$licensedBy: [Int]
|
||||||
|
$isLicensed: Boolean
|
||||||
|
$genres: [String]
|
||||||
|
$excludedGenres: [String]
|
||||||
|
$tags: [String]
|
||||||
|
$excludedTags: [String]
|
||||||
|
$minimumTagRank: Int
|
||||||
|
$sort: [MediaSort] = [POPULARITY_DESC, SCORE_DESC]
|
||||||
|
) {
|
||||||
|
Page(page: $page, perPage: $perPage) {
|
||||||
|
pageInfo {
|
||||||
|
total
|
||||||
|
perPage
|
||||||
|
currentPage
|
||||||
|
lastPage
|
||||||
|
hasNextPage
|
||||||
|
}
|
||||||
|
media(
|
||||||
|
id: $id
|
||||||
|
type: $type
|
||||||
|
season: $season
|
||||||
|
format_in: $format
|
||||||
|
status: $status
|
||||||
|
countryOfOrigin: $countryOfOrigin
|
||||||
|
source: $source
|
||||||
|
search: $search
|
||||||
|
onList: $onList
|
||||||
|
seasonYear: $seasonYear
|
||||||
|
startDate_like: $year
|
||||||
|
startDate_lesser: $yearLesser
|
||||||
|
startDate_greater: $yearGreater
|
||||||
|
episodes_lesser: $episodeLesser
|
||||||
|
episodes_greater: $episodeGreater
|
||||||
|
duration_lesser: $durationLesser
|
||||||
|
duration_greater: $durationGreater
|
||||||
|
chapters_lesser: $chapterLesser
|
||||||
|
chapters_greater: $chapterGreater
|
||||||
|
volumes_lesser: $volumeLesser
|
||||||
|
volumes_greater: $volumeGreater
|
||||||
|
licensedById_in: $licensedBy
|
||||||
|
isLicensed: $isLicensed
|
||||||
|
genre_in: $genres
|
||||||
|
genre_not_in: $excludedGenres
|
||||||
|
tag_in: $tags
|
||||||
|
tag_not_in: $excludedTags
|
||||||
|
minimumTagRank: $minimumTagRank
|
||||||
|
sort: $sort
|
||||||
|
isAdult: $isAdult
|
||||||
|
) {
|
||||||
|
id
|
||||||
|
idMal
|
||||||
|
title {
|
||||||
|
userPreferred
|
||||||
|
romaji
|
||||||
|
english
|
||||||
|
native
|
||||||
|
}
|
||||||
|
description
|
||||||
|
coverImage {
|
||||||
|
extraLarge
|
||||||
|
large
|
||||||
|
medium
|
||||||
|
color
|
||||||
|
}
|
||||||
|
startDate {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
endDate {
|
||||||
|
year
|
||||||
|
month
|
||||||
|
day
|
||||||
|
}
|
||||||
|
bannerImage
|
||||||
|
format
|
||||||
|
season
|
||||||
|
seasonYear
|
||||||
|
status
|
||||||
|
episodes
|
||||||
|
duration
|
||||||
|
countryOfOrigin
|
||||||
|
source
|
||||||
|
synonyms
|
||||||
|
averageScore
|
||||||
|
meanScore
|
||||||
|
popularity
|
||||||
|
trending
|
||||||
|
favourites
|
||||||
|
isFavourite
|
||||||
|
relations {
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
title {
|
||||||
|
userPreferred
|
||||||
|
romaji
|
||||||
|
english
|
||||||
|
native
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nextAiringEpisode {
|
||||||
|
airingAt
|
||||||
|
timeUntilAiring
|
||||||
|
episode
|
||||||
|
}
|
||||||
|
airingSchedule {
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
airingAt
|
||||||
|
timeUntilAiring
|
||||||
|
episode
|
||||||
|
mediaId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
genres
|
||||||
|
tags {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
description
|
||||||
|
rank
|
||||||
|
isMediaSpoiler
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
isAdult
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
body:graphql:vars {
|
||||||
|
{
|
||||||
|
"page": 1,
|
||||||
|
"perPage": 20,
|
||||||
|
"season": "SUMMER",
|
||||||
|
"seasonYear": 2026,
|
||||||
|
"type": "ANIME",
|
||||||
|
"excludedTags": [
|
||||||
|
"Ecchi",
|
||||||
|
"LGBTQ+ Themes",
|
||||||
|
"Yuri"
|
||||||
|
],
|
||||||
|
"excludedGenres": [
|
||||||
|
"Boy's Love"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
settings {
|
||||||
|
encodeUrl: true
|
||||||
|
timeout: 0
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
meta {
|
||||||
|
name: AniListCalendar
|
||||||
|
seq: 4
|
||||||
|
}
|
||||||
|
|
||||||
|
auth {
|
||||||
|
mode: inherit
|
||||||
|
}
|
||||||
+17
-4
@@ -1,26 +1,39 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# copy desktop file
|
# copy desktop file
|
||||||
if [ -e "~/.local/share/applications/AniTrack.desktop" ]; then
|
if [ ! -f "$HOME/.local/share/applications/AniTrack.desktop" ]; then
|
||||||
if [ -d "~/.local/share/applications/" ]; then
|
if [ -d "~/.local/share/applications/" ]; then
|
||||||
|
echo "Copying desktop file..."
|
||||||
cp ./AniTrack.desktop ~/.local/share/applications/
|
cp ./AniTrack.desktop ~/.local/share/applications/
|
||||||
else
|
else
|
||||||
mkdir -p ~/.local/share/applications/
|
mkdir -p ~/.local/share/applications/
|
||||||
|
echo "Copying desktop file..."
|
||||||
cp ./AniTrack.desktop ~/.local/share/applications/
|
cp ./AniTrack.desktop ~/.local/share/applications/
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
echo "Desktop file already installed..."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# copy icons to xdg folders
|
# copy icons to xdg folders
|
||||||
for size in 32 48 64 128; do
|
for size in 32 48 64 128; do
|
||||||
xdg-icon-resource install --novendor --context apps --size $size ./icon/$size/AniTrack.png AniTrack
|
if [ ! -f $HOME/.local/share/icons/hicolor/${size}x${size}/apps/AniTrack.png ]; then
|
||||||
|
echo "Installing ${size} icon size..."
|
||||||
|
xdg-icon-resource install --novendor --context apps --size $size ./icon/$size/AniTrack.png AniTrack
|
||||||
|
else
|
||||||
|
echo "${size} icon size already exists..."
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# copy AniTrack Binary to $HOME/Applications/
|
# copy AniTrack Binary to $HOME/Applications/
|
||||||
if ! [ -d "~/Applications" ]; then
|
if ! [ -d "$HOME/Applications" ]; then
|
||||||
mkdir -p ~/Applications
|
mkdir -p ~/Applications
|
||||||
|
echo "Installing app to ~/Applications..."
|
||||||
cp ./bin/AniTrack ~/Applications/
|
cp ./bin/AniTrack ~/Applications/
|
||||||
elif ! [[ -e ~/Applications/AniTrack ]]; then
|
elif ! [[ -e $HOME/Applications/AniTrack ]]; then
|
||||||
|
echo "Installing app to ~/Applications"
|
||||||
cp ./bin/AniTrack ~/Applications/
|
cp ./bin/AniTrack ~/Applications/
|
||||||
|
else
|
||||||
|
echo "AniTrack already in Applications..."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "AniTrack has been successfully installed."
|
echo "AniTrack has been successfully installed."
|
||||||
|
|||||||
@@ -230,8 +230,7 @@ export namespace main {
|
|||||||
background: background;
|
background: background;
|
||||||
related_anime: relatedAnime;
|
related_anime: relatedAnime;
|
||||||
recommendations: recommendations;
|
recommendations: recommendations;
|
||||||
// Go type: struct { NumListUsers int "json:\"num_list_users\" ts_type:\"numListUsers\""; Status struct { Watching string "json:\"watching\" ts_type:\"watching\""; Completed string "json:\"completed\" ts_type:\"completed\""; OnHold string "json:\"on_hold\" ts_type:\"onHold\""; Dropped string "json:\"dropped\" ts_type:\"dropped\""; PlanToWatch string "json:\"plan_to_watch\" ts_type:\"planToWatch\"" } }
|
Statistics: struct { NumListUsers int "json:\"num_list_users\" ts_type:\"numListUsers\""; Status struct { Watching main.;
|
||||||
Statistics: any;
|
|
||||||
|
|
||||||
static createFrom(source: any = {}) {
|
static createFrom(source: any = {}) {
|
||||||
return new MALAnime(source);
|
return new MALAnime(source);
|
||||||
@@ -624,6 +623,43 @@ export namespace struct { Node struct { Id int "json:\"id\" ts_type:\"id\""; Tit
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export namespace struct { NumListUsers int "json:\"num_list_users\" ts_type:\"numListUsers\""; Status struct { Watching main {
|
||||||
|
|
||||||
|
export class {
|
||||||
|
num_list_users: numListUsers;
|
||||||
|
Status: struct { Watching main.;
|
||||||
|
|
||||||
|
static createFrom(source: any = {}) {
|
||||||
|
return new (source);
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(source: any = {}) {
|
||||||
|
if ('string' === typeof source) source = JSON.parse(source);
|
||||||
|
this.num_list_users = source["num_list_users"];
|
||||||
|
this.Status = this.convertValues(source["Status"], Object);
|
||||||
|
}
|
||||||
|
|
||||||
|
convertValues(a: any, classs: any, asMap: boolean = false): any {
|
||||||
|
if (!a) {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
if (a.slice && a.map) {
|
||||||
|
return (a as any[]).map(elem => this.convertValues(elem, classs));
|
||||||
|
} else if ("object" === typeof a) {
|
||||||
|
if (asMap) {
|
||||||
|
for (const key of Object.keys(a)) {
|
||||||
|
a[key] = new classs(a[key]);
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
return new classs(a);
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
export namespace struct { Status string "json:\"status\" ts_type:\"status\""; Score int "json:\"score\" ts_type:\"score\""; NumEpisodesWatched int "json:\"num_episodes_watched\" ts_type:\"numEpisodesWatched\""; IsRewatching bool "json:\"is_rewatching\" ts_type:\"isRewatching\""; UpdatedAt time {
|
export namespace struct { Status string "json:\"status\" ts_type:\"status\""; Score int "json:\"score\" ts_type:\"score\""; NumEpisodesWatched int "json:\"num_episodes_watched\" ts_type:\"numEpisodesWatched\""; IsRewatching bool "json:\"is_rewatching\" ts_type:\"isRewatching\""; UpdatedAt time {
|
||||||
|
|
||||||
export class {
|
export class {
|
||||||
@@ -653,3 +689,28 @@ export namespace struct { Status string "json:\"status\" ts_type:\"status\""; Sc
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export namespace struct { Watching main {
|
||||||
|
|
||||||
|
export class {
|
||||||
|
watching: string;
|
||||||
|
completed: string;
|
||||||
|
on_hold: string;
|
||||||
|
dropped: string;
|
||||||
|
plan_to_watch: string;
|
||||||
|
|
||||||
|
static createFrom(source: any = {}) {
|
||||||
|
return new (source);
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(source: any = {}) {
|
||||||
|
if ('string' === typeof source) source = JSON.parse(source);
|
||||||
|
this.watching = source["watching"];
|
||||||
|
this.completed = source["completed"];
|
||||||
|
this.on_hold = source["on_hold"];
|
||||||
|
this.dropped = source["dropped"];
|
||||||
|
this.plan_to_watch = source["plan_to_watch"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,49 +1,51 @@
|
|||||||
module AniTrack
|
module AniTrack
|
||||||
|
|
||||||
go 1.24.0
|
go 1.25.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/99designs/keyring v1.2.2
|
github.com/99designs/keyring v1.2.2
|
||||||
github.com/tidwall/gjson v1.18.0
|
github.com/tidwall/gjson v1.19.0
|
||||||
github.com/wailsapp/wails/v2 v2.10.1
|
github.com/wailsapp/wails/v2 v2.12.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
git.sr.ht/~jackmordaunt/go-toast/v2 v2.0.3 // indirect
|
||||||
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
|
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
|
||||||
github.com/bep/debounce v1.2.1 // indirect
|
github.com/bep/debounce v1.2.1 // indirect
|
||||||
github.com/danieljoos/wincred v1.2.2 // indirect
|
github.com/danieljoos/wincred v1.2.3 // indirect
|
||||||
github.com/dvsekhvalnov/jose2go v1.8.0 // indirect
|
github.com/dvsekhvalnov/jose2go v1.8.0 // indirect
|
||||||
github.com/go-ole/go-ole v1.3.0 // indirect
|
github.com/go-ole/go-ole v1.3.0 // indirect
|
||||||
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
|
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
|
||||||
github.com/godbus/dbus/v5 v5.1.0 // indirect
|
github.com/godbus/dbus/v5 v5.2.2 // indirect
|
||||||
github.com/google/uuid v1.6.0 // indirect
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
|
github.com/gorilla/websocket v1.5.3 // indirect
|
||||||
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
|
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
|
||||||
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect
|
github.com/jchv/go-winloader v0.0.0-20250406163304-c1995be93bd1 // indirect
|
||||||
github.com/labstack/echo/v4 v4.13.3 // indirect
|
github.com/labstack/echo/v4 v4.15.2 // indirect
|
||||||
github.com/labstack/gommon v0.4.2 // indirect
|
github.com/labstack/gommon v0.5.0 // indirect
|
||||||
github.com/leaanthony/go-ansi-parser v1.6.1 // indirect
|
github.com/leaanthony/go-ansi-parser v1.6.1 // indirect
|
||||||
github.com/leaanthony/gosod v1.0.4 // indirect
|
github.com/leaanthony/gosod v1.0.4 // indirect
|
||||||
github.com/leaanthony/slicer v1.6.0 // indirect
|
github.com/leaanthony/slicer v1.6.0 // indirect
|
||||||
github.com/leaanthony/u v1.1.1 // indirect
|
github.com/leaanthony/u v1.1.1 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
github.com/mattn/go-isatty v0.0.22 // indirect
|
||||||
github.com/mtibben/percent v0.2.1 // indirect
|
github.com/mtibben/percent v0.2.1 // indirect
|
||||||
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
|
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
github.com/rivo/uniseg v0.4.7 // indirect
|
github.com/rivo/uniseg v0.4.7 // indirect
|
||||||
github.com/samber/lo v1.49.1 // indirect
|
github.com/samber/lo v1.53.0 // indirect
|
||||||
github.com/tidwall/match v1.1.1 // indirect
|
github.com/tidwall/match v1.2.0 // indirect
|
||||||
github.com/tidwall/pretty v1.2.1 // indirect
|
github.com/tidwall/pretty v1.2.1 // indirect
|
||||||
github.com/tkrajina/go-reflector v0.5.8 // indirect
|
github.com/tkrajina/go-reflector v0.5.8 // indirect
|
||||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||||
github.com/valyala/fasttemplate v1.2.2 // indirect
|
github.com/valyala/fasttemplate v1.2.2 // indirect
|
||||||
github.com/wailsapp/go-webview2 v1.0.19 // indirect
|
github.com/wailsapp/go-webview2 v1.0.23 // indirect
|
||||||
github.com/wailsapp/mimetype v1.4.1 // indirect
|
github.com/wailsapp/mimetype v1.4.1 // indirect
|
||||||
golang.org/x/crypto v0.45.0 // indirect
|
golang.org/x/crypto v0.52.0 // indirect
|
||||||
golang.org/x/net v0.47.0 // indirect
|
golang.org/x/net v0.55.0 // indirect
|
||||||
golang.org/x/sys v0.38.0 // indirect
|
golang.org/x/sys v0.45.0 // indirect
|
||||||
golang.org/x/term v0.37.0 // indirect
|
golang.org/x/term v0.43.0 // indirect
|
||||||
golang.org/x/text v0.31.0 // indirect
|
golang.org/x/text v0.37.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
// replace github.com/wailsapp/wails/v2 v2.9.1 => /home/nymusicman/go/pkg/mod
|
// replace github.com/wailsapp/wails/v2 v2.9.1 => /home/nymusicman/go/pkg/mod
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
|
git.sr.ht/~jackmordaunt/go-toast/v2 v2.0.3 h1:N3IGoHHp9pb6mj1cbXbuaSXV/UMKwmbKLf53nQmtqMA=
|
||||||
|
git.sr.ht/~jackmordaunt/go-toast/v2 v2.0.3/go.mod h1:QtOLZGz8olr4qH2vWK0QH0w0O4T9fEIjMuWpKUsH7nc=
|
||||||
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs=
|
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs=
|
||||||
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4=
|
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4=
|
||||||
github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0=
|
github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0=
|
||||||
github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk=
|
github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk=
|
||||||
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
|
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
|
||||||
github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0=
|
github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0=
|
||||||
github.com/danieljoos/wincred v1.2.2 h1:774zMFJrqaeYCK2W57BgAem/MLi6mtSE47MB6BOJ0i0=
|
github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ=
|
||||||
github.com/danieljoos/wincred v1.2.2/go.mod h1:w7w4Utbrz8lqeMbDAK0lkNJUv5sAOkFi7nd/ogr0Uh8=
|
github.com/danieljoos/wincred v1.2.3/go.mod h1:6qqX0WNrS4RzPZ1tnroDzq9kY3fu1KwE7MRLQK4X0bs=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/dvsekhvalnov/jose2go v1.8.0 h1:LqkkVKAlHFfH9LOEl5fe4p/zL02OhWE7pCufMBG2jLA=
|
github.com/dvsekhvalnov/jose2go v1.8.0 h1:LqkkVKAlHFfH9LOEl5fe4p/zL02OhWE7pCufMBG2jLA=
|
||||||
@@ -14,22 +16,23 @@ github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
|||||||
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
||||||
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0=
|
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0=
|
||||||
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
|
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
|
||||||
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
|
github.com/godbus/dbus/v5 v5.2.2 h1:TUR3TgtSVDmjiXOgAAyaZbYmIeP3DPkld3jgKGV8mXQ=
|
||||||
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
github.com/godbus/dbus/v5 v5.2.2/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c=
|
||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
||||||
|
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU=
|
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU=
|
||||||
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=
|
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=
|
||||||
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck=
|
github.com/jchv/go-winloader v0.0.0-20250406163304-c1995be93bd1 h1:njuLRcjAuMKr7kI3D85AXWkw6/+v9PwtV6M6o11sWHQ=
|
||||||
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs=
|
github.com/jchv/go-winloader v0.0.0-20250406163304-c1995be93bd1/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
github.com/labstack/echo/v4 v4.15.2 h1:nnh2sCzGCVYnU+wCisMPiYapEg/QVo/gcI9ePKg5/T4=
|
||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
github.com/labstack/echo/v4 v4.15.2/go.mod h1:Xzp1Ns1RA2c9fY7nSgUJkpkUZGNbEIVHZbtbOMPktBI=
|
||||||
github.com/labstack/echo/v4 v4.13.3 h1:pwhpCPrTl5qry5HRdM5FwdXnhXSLSY+WE+YQSeCaafY=
|
github.com/labstack/gommon v0.5.0 h1:6VSQ2NOzsnEJ5W6+84E0RbcaDDmgB6NIAzWCczTEe6c=
|
||||||
github.com/labstack/echo/v4 v4.13.3/go.mod h1:o90YNEeQWjDozo584l7AwhJMHN0bOC4tAfg+Xox9q5g=
|
github.com/labstack/gommon v0.5.0/go.mod h1:Rzlg7HHy1maLfzBYGg9NZcVuz1sA68HHhLjhcEllYE0=
|
||||||
github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
|
|
||||||
github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU=
|
|
||||||
github.com/leaanthony/debme v1.2.1 h1:9Tgwf+kjcrbMQ4WnPcEIUcQuIZYqdWftzZkBr+i/oOc=
|
github.com/leaanthony/debme v1.2.1 h1:9Tgwf+kjcrbMQ4WnPcEIUcQuIZYqdWftzZkBr+i/oOc=
|
||||||
github.com/leaanthony/debme v1.2.1/go.mod h1:3V+sCm5tYAgQymvSOfYQ5Xx2JCr+OXiD9Jkw3otUjiA=
|
github.com/leaanthony/debme v1.2.1/go.mod h1:3V+sCm5tYAgQymvSOfYQ5Xx2JCr+OXiD9Jkw3otUjiA=
|
||||||
github.com/leaanthony/go-ansi-parser v1.6.1 h1:xd8bzARK3dErqkPFtoF9F3/HgN8UQk0ed1YDKpEz01A=
|
github.com/leaanthony/go-ansi-parser v1.6.1 h1:xd8bzARK3dErqkPFtoF9F3/HgN8UQk0ed1YDKpEz01A=
|
||||||
@@ -45,8 +48,8 @@ github.com/matryer/is v1.4.1 h1:55ehd8zaGABKLXQUe2awZ99BD/PTc2ls+KV/dXphgEQ=
|
|||||||
github.com/matryer/is v1.4.1/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=
|
github.com/matryer/is v1.4.1/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=
|
||||||
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
|
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
|
||||||
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
|
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
|
||||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4=
|
||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4=
|
||||||
github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs=
|
github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs=
|
||||||
github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns=
|
github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
@@ -60,17 +63,16 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
|
|||||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
||||||
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
||||||
github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew=
|
github.com/samber/lo v1.53.0 h1:t975lj2py4kJPQ6haz1QMgtId2gtmfktACxIXArw3HM=
|
||||||
github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o=
|
github.com/samber/lo v1.53.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0=
|
||||||
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
|
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
|
||||||
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
||||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
||||||
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
|
github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU=
|
||||||
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
|
github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc=
|
||||||
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
|
github.com/tidwall/match v1.2.0 h1:0pt8FlkOwjN2fPt4bIl4BoNxb98gGHN2ObFEDkrfZnM=
|
||||||
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
|
github.com/tidwall/match v1.2.0/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
|
||||||
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
|
||||||
github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
|
github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
|
||||||
github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
||||||
github.com/tkrajina/go-reflector v0.5.8 h1:yPADHrwmUbMq4RGEyaOUpz2H90sRsETNVpjzo3DLVQQ=
|
github.com/tkrajina/go-reflector v0.5.8 h1:yPADHrwmUbMq4RGEyaOUpz2H90sRsETNVpjzo3DLVQQ=
|
||||||
@@ -79,30 +81,29 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw
|
|||||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||||
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
|
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
|
||||||
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
||||||
github.com/wailsapp/go-webview2 v1.0.19 h1:7U3QcDj1PrBPaxJNCui2k1SkWml+Q5kvFUFyTImA6NU=
|
github.com/wailsapp/go-webview2 v1.0.23 h1:jmv8qhz1lHibCc79bMM/a/FqOnnzOGEisLav+a0b9P0=
|
||||||
github.com/wailsapp/go-webview2 v1.0.19/go.mod h1:qJmWAmAmaniuKGZPWwne+uor3AHMB5PFhqiK0Bbj8kc=
|
github.com/wailsapp/go-webview2 v1.0.23/go.mod h1:qJmWAmAmaniuKGZPWwne+uor3AHMB5PFhqiK0Bbj8kc=
|
||||||
github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs=
|
github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs=
|
||||||
github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o=
|
github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o=
|
||||||
github.com/wailsapp/wails/v2 v2.10.1 h1:QWHvWMXII2nI/nXz77gpPG8P3ehl6zKe+u4su5BWIns=
|
github.com/wailsapp/wails/v2 v2.12.0 h1:BHO/kLNWFHYjCzucxbzAYZWUjub1Tvb4cSguQozHn5c=
|
||||||
github.com/wailsapp/wails/v2 v2.10.1/go.mod h1:zrebnFV6MQf9kx8HI4iAv63vsR5v67oS7GTEZ7Pz1TY=
|
github.com/wailsapp/wails/v2 v2.12.0/go.mod h1:mo1bzK1DEJrobt7YrBjgxvb5Sihb1mhAY09hppbibQg=
|
||||||
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
|
golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988=
|
||||||
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
|
golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc=
|
||||||
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
|
golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
|
||||||
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
|
golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
|
||||||
golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
|
||||||
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
|
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||||
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=
|
golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4=
|
||||||
golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=
|
golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk=
|
||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
|
golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
|
||||||
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
|
golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U=
|
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U=
|
||||||
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
|||||||
+1
-1
@@ -12,6 +12,6 @@
|
|||||||
},
|
},
|
||||||
"info": {
|
"info": {
|
||||||
"productName": "AniTrack",
|
"productName": "AniTrack",
|
||||||
"productVersion": "1.5.0"
|
"productVersion": "1.5.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user