diff --git a/frontend/src/helperComponents/AnimeTable.svelte b/frontend/src/helperComponents/AnimeTable.svelte
index 8aa25b9..76ee5bc 100644
--- a/frontend/src/helperComponents/AnimeTable.svelte
+++ b/frontend/src/helperComponents/AnimeTable.svelte
@@ -4,19 +4,19 @@
createTable,
Render,
Subscribe,
- } from "svelte-headless-table"
+ } from "svelte-headless-table";
// @ts-ignore
- import { addSortBy } from "svelte-headless-table/plugins"
- import { tableItems } from "../helperModules/GlobalVariablesAndHelperFunctions.svelte"
- import WebsiteLink from "./WebsiteLink.svelte"
+ import { addSortBy } from "svelte-headless-table/plugins";
+ import { tableItems } from "../helperModules/GlobalVariablesAndHelperFunctions.svelte";
+ import WebsiteLink from "./WebsiteLink.svelte";
//when adding sort here is code { sort: addSortBy() }
- const table = createTable(tableItems, { sort: addSortBy() })
+ const table = createTable(tableItems, { sort: addSortBy() });
const columns = table.createColumns([
table.column({
header: "Service Id",
- cell: ({ value }) => createRender(WebsiteLink, {id: value}),
+ cell: ({ value }) => createRender(WebsiteLink, { id: value }),
accessor: "id",
}),
table.column({
@@ -55,11 +55,11 @@
header: "Notes",
accessor: "notes",
}),
- ])
+ ]);
//add pluginStates when add sort back
const { headerRows, rows, tableAttrs, tableBodyAttrs } =
- table.createViewModel(columns)
+ table.createViewModel(columns);
diff --git a/frontend/src/helperComponents/Datepicker.svelte b/frontend/src/helperComponents/Datepicker.svelte
new file mode 100644
index 0000000..e98932a
--- /dev/null
+++ b/frontend/src/helperComponents/Datepicker.svelte
@@ -0,0 +1,481 @@
+
+
+
+ {#if !inline}
+
+
(isOpen = true)}
+ on:input={handleInputChange}
+ on:keydown={handleInputKeydown}
+ {disabled}
+ {required}
+ aria-haspopup="dialog"
+ />
+
+
+ {/if}
+
+ {#if isOpen || inline}
+
+
+ {#if title}
+
+ {title}
+
+ {/if}
+
+
+
+ {currentMonth.toLocaleString(locale, {
+ month: "long",
+ year: "numeric",
+ })}
+
+
+
+
+ {#each weekdays as day}
+
+ {day}
+
+ {/each}
+ {#each daysInMonth as day}
+
+ {/each}
+
+ {#if showActionButtons}
+
+
+
+
+
+ {/if}
+
+
+ {/if}
+
+
+
diff --git a/frontend/src/helperFunctions/convertAniListDateIn.ts b/frontend/src/helperFunctions/convertAniListDateIn.ts
new file mode 100644
index 0000000..87be12c
--- /dev/null
+++ b/frontend/src/helperFunctions/convertAniListDateIn.ts
@@ -0,0 +1,37 @@
+import moment from "moment";
+
+const convertAniListDateToString = (date: {
+ year?: number;
+ month?: number;
+ day?: number;
+}): string => {
+ if (
+ date.year === undefined ||
+ (date.year === 0 && date.month === undefined) ||
+ (date.month === 0 && date.day === undefined) ||
+ date.day === 0
+ ) {
+ return "";
+ }
+ const newISODate = new Date(date.year, date.month - 1, date.day);
+ const newMoment = moment(newISODate);
+ return newMoment.format("MM-DD-YYYY");
+};
+
+const convertAniListDateToDate = (date: {
+ year?: number;
+ month?: number;
+ day?: number;
+}): Date | null => {
+ if (
+ date.year === undefined ||
+ (date.year === 0 && date.month === undefined) ||
+ (date.month === 0 && date.day === undefined) ||
+ date.day === 0
+ ) {
+ return null;
+ }
+ return new Date(date.year, date.month - 1, date.day);
+};
+
+export { convertAniListDateToString, convertAniListDateToDate };
diff --git a/frontend/src/helperFunctions/convertAniListDateToString.ts b/frontend/src/helperFunctions/convertAniListDateToString.ts
deleted file mode 100644
index e5ba3b1..0000000
--- a/frontend/src/helperFunctions/convertAniListDateToString.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import moment from "moment";
-
-export default (date: {
- year?: number,
- month?: number,
- day?: number,
-}): string => {
- if (date.year === undefined || date.year === 0
- && date.month === undefined || date.month === 0
- && date.day === undefined || date.day === 0
- ) {
- return ""
- }
- const newISODate = new Date(date.year, date.month - 1, date.day)
- const newMoment = moment(newISODate)
- return newMoment.format('YYYY-MM-DD')
-}
\ No newline at end of file
diff --git a/frontend/src/helperFunctions/convertDateStringToAniList.ts b/frontend/src/helperFunctions/convertDateStringToAniList.ts
deleted file mode 100644
index fb98ec5..0000000
--- a/frontend/src/helperFunctions/convertDateStringToAniList.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-type Date = {
- year: number,
- month: number,
- day: number,
-}
-
-export default (date: string): Date => {
- if (date === "") {
- return {
- year: 0,
- month: 0,
- day: 0,
- }
- }
- const re = /^([0-9]{4})-([0-9]{2})-([0-9]{2})/
- const newDate = re.exec(date)
- return {
- year: Number(newDate[1]),
- month: Number(newDate[2]),
- day: Number(newDate[3])
- }
-}
\ No newline at end of file
diff --git a/frontend/src/helperFunctions/convertDateToAniList.ts b/frontend/src/helperFunctions/convertDateToAniList.ts
new file mode 100644
index 0000000..73ccdb4
--- /dev/null
+++ b/frontend/src/helperFunctions/convertDateToAniList.ts
@@ -0,0 +1,39 @@
+type AnilistDate = {
+ year: number;
+ month: number;
+ day: number;
+};
+
+const convertDateStringToAniList = (date: string): AnilistDate => {
+ if (date === "") {
+ return {
+ year: 0,
+ month: 0,
+ day: 0,
+ };
+ }
+ const re = /^([0-9]{4})-([0-9]{2})-([0-9]{2})/;
+ const newDate = re.exec(date);
+ return {
+ year: Number(newDate[1]),
+ month: Number(newDate[2]),
+ day: Number(newDate[3]),
+ };
+};
+
+const convertDateToAniList = (date: Date | null): AnilistDate => {
+ if (date === null) {
+ return {
+ year: 0,
+ month: 0,
+ day: 0,
+ };
+ }
+ return {
+ year: Number(date.getFullYear()),
+ month: Number(date.getMonth()) + 1,
+ day: Number(date.getDate()),
+ };
+};
+
+export { convertDateStringToAniList, convertDateToAniList };
diff --git a/frontend/wailsjs/runtime/runtime.d.ts b/frontend/wailsjs/runtime/runtime.d.ts
index 94778df..4445dac 100644
--- a/frontend/wailsjs/runtime/runtime.d.ts
+++ b/frontend/wailsjs/runtime/runtime.d.ts
@@ -134,7 +134,7 @@ export function WindowIsFullscreen(): Promise
;
// [WindowSetSize](https://wails.io/docs/reference/runtime/window#windowsetsize)
// Sets the width and height of the window.
-export function WindowSetSize(width: number, height: number): Promise;
+export function WindowSetSize(width: number, height: number): void;
// [WindowGetSize](https://wails.io/docs/reference/runtime/window#windowgetsize)
// Gets the width and height of the window.
diff --git a/go.mod b/go.mod
index 02a6a0c..713fed9 100644
--- a/go.mod
+++ b/go.mod
@@ -1,11 +1,11 @@
module AniTrack
-go 1.23
+go 1.24
require (
github.com/99designs/keyring v1.2.2
github.com/tidwall/gjson v1.18.0
- github.com/wailsapp/wails/v2 v2.9.2
+ github.com/wailsapp/wails/v2 v2.10.0
)
require (
@@ -31,7 +31,7 @@ require (
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
- github.com/samber/lo v1.47.0 // indirect
+ github.com/samber/lo v1.49.1 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
github.com/tkrajina/go-reflector v0.5.8 // indirect
@@ -39,11 +39,11 @@ require (
github.com/valyala/fasttemplate v1.2.2 // indirect
github.com/wailsapp/go-webview2 v1.0.19 // indirect
github.com/wailsapp/mimetype v1.4.1 // indirect
- golang.org/x/crypto v0.32.0 // indirect
- golang.org/x/net v0.34.0 // indirect
- golang.org/x/sys v0.29.0 // indirect
- golang.org/x/term v0.28.0 // indirect
- golang.org/x/text v0.21.0 // indirect
+ golang.org/x/crypto v0.33.0 // indirect
+ golang.org/x/net v0.35.0 // indirect
+ golang.org/x/sys v0.30.0 // indirect
+ golang.org/x/term v0.29.0 // indirect
+ golang.org/x/text v0.22.0 // indirect
)
// replace github.com/wailsapp/wails/v2 v2.9.1 => /home/nymusicman/go/pkg/mod
diff --git a/go.sum b/go.sum
index 882ec03..f12e046 100644
--- a/go.sum
+++ b/go.sum
@@ -23,8 +23,9 @@ github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NM
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck=
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs=
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.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/labstack/echo/v4 v4.13.3 h1:pwhpCPrTl5qry5HRdM5FwdXnhXSLSY+WE+YQSeCaafY=
github.com/labstack/echo/v4 v4.13.3/go.mod h1:o90YNEeQWjDozo584l7AwhJMHN0bOC4tAfg+Xox9q5g=
github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
@@ -59,8 +60,8 @@ 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.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
-github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc=
-github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU=
+github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew=
+github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o=
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/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
@@ -82,26 +83,26 @@ github.com/wailsapp/go-webview2 v1.0.19 h1:7U3QcDj1PrBPaxJNCui2k1SkWml+Q5kvFUFyT
github.com/wailsapp/go-webview2 v1.0.19/go.mod h1:qJmWAmAmaniuKGZPWwne+uor3AHMB5PFhqiK0Bbj8kc=
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/wails/v2 v2.9.2 h1:Xb5YRTos1w5N7DTMyYegWaGukCP2fIaX9WF21kPPF2k=
-github.com/wailsapp/wails/v2 v2.9.2/go.mod h1:uehvlCwJSFcBq7rMCGfk4rxca67QQGsbg5Nm4m9UnBs=
-golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
-golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
+github.com/wailsapp/wails/v2 v2.10.0 h1:kfpWnfdNL1nXq0PyqAVPPDQY2pxkqcqWab01NGh3a6w=
+github.com/wailsapp/wails/v2 v2.10.0/go.mod h1:zrebnFV6MQf9kx8HI4iAv63vsR5v67oS7GTEZ7Pz1TY=
+golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
+golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
-golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
+golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
+golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
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-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
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.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
-golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
+golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
-golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
+golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
+golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
+golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
+golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
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/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/rest/AniTrack/Get Items/AniChart.http b/rest/AniTrack/Get Items/AniChart.http
new file mode 100644
index 0000000..2a17738
--- /dev/null
+++ b/rest/AniTrack/Get Items/AniChart.http
@@ -0,0 +1,79 @@
+# @name AniChart
+
+POST https://graphql.anilist.co
+Accept: applicaton/json
+X-REQUEST-TYPE: Graphql
+
+query ($page: Int, $perPage: Int, $airingAt_greater:Int) {
+ Page(page: $page, perPage: $perPage) {
+ pageInfo {
+ total
+ perPage
+ currentPage
+ lastPage
+ hasNextPage
+ }
+ airingSchedules(airingAt_greater:$airingAt_greater){
+ id
+ airingAt
+ timeUntilAiring
+ episode
+ mediaId
+ media{
+ id
+ title{
+ english
+ romaji
+ native
+ }
+ type
+ format
+ status
+ startDate{
+ year
+ month
+ day
+ }
+ endDate{
+ year
+ month
+ day
+ }
+ season
+ seasonYear
+ episodes
+ duration
+ coverImage{
+ medium
+ large
+ color
+ extraLarge
+ }
+ bannerImage
+ genres
+ averageScore
+ meanScore
+ popularity
+ trending
+ favourites
+ tags{
+ id
+ name
+ description
+ category
+ rank
+ isGeneralSpoiler
+ isMediaSpoiler
+ isAdult
+ }
+ isAdult
+ }
+ }
+ }
+}
+
+{
+ "page": 50,
+ "perPage": 20,
+ "airingAt_greater": 1730260800
+}
diff --git a/rest/AniTrack/Get Items/AniList Item.http b/rest/AniTrack/Get Items/AniList Item.http
new file mode 100644
index 0000000..9da6f8a
--- /dev/null
+++ b/rest/AniTrack/Get Items/AniList Item.http
@@ -0,0 +1,83 @@
+# @name AniList Item
+
+POST https://graphql.anilist.co
+Accept: applicaton/json
+X-REQUEST-TYPE: Graphql
+Authorization: Bearer {{ANILIST_ACCESS_TOKEN}}
+
+query ($userId: Int, $mediaId: Int, $listType: MediaType) {
+ MediaList(mediaId: $mediaId, userId: $userId, type: $listType) {
+ id
+ mediaId
+ userId
+ media {
+ id
+ idMal
+ tags {
+ id
+ name
+ description
+ rank
+ isMediaSpoiler
+ isAdult
+ }
+ title {
+ romaji
+ english
+ native
+ }
+ description
+ coverImage {
+ large
+ }
+ season
+ seasonYear
+ status
+ episodes
+ nextAiringEpisode {
+ airingAt
+ timeUntilAiring
+ episode
+ }
+ 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
+ }
+ }
+ }
+ }
+ }
+}
+
+{
+ "userId": 413504,
+ "mediaId": 170998,
+ "listType": "ANIME"
+}
diff --git a/rest/AniTrack/Get Items/AniList MediaList User Query.http b/rest/AniTrack/Get Items/AniList MediaList User Query.http
new file mode 100644
index 0000000..426b780
--- /dev/null
+++ b/rest/AniTrack/Get Items/AniList MediaList User Query.http
@@ -0,0 +1,70 @@
+# @name AniList MediaList User Query
+
+POST https://graphql.anilist.co
+Accept: applicaton/json
+X-REQUEST-TYPE: Graphql
+
+query(
+ $page: Int
+ $perPage: Int
+ $userId: Int
+ $listType: MediaType
+ $status: MediaListStatus
+) {
+ Page(page: $page, perPage: $perPage) {
+ pageInfo {
+ total
+ perPage
+ currentPage
+ lastPage
+ hasNextPage
+ }
+ mediaList(userId: $userId, type: $listType, status: $status) {
+ id
+ mediaId
+ userId
+ media {
+ id
+ idMal
+ title {
+ romaji
+ english
+ native
+ }
+ description
+ coverImage {
+ large
+ }
+ season
+ seasonYear
+ episodes
+ }
+ status
+ notes
+ progress
+ score
+ repeat
+ user {
+ id
+ statistics {
+ anime {
+ count
+ statuses {
+ status
+ count
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+{
+ "page": 1,
+ "perPage": 20,
+ "userId": 413504,
+ "listType": "ANIME",
+ "status": "CURRENT"
+}
diff --git a/rest/AniTrack/Get Items/AniList Search.http b/rest/AniTrack/Get Items/AniList Search.http
new file mode 100644
index 0000000..5d18fa5
--- /dev/null
+++ b/rest/AniTrack/Get Items/AniList Search.http
@@ -0,0 +1,44 @@
+# @name AniList Search
+
+POST https://graphql.anilist.co
+Accept: applicaton/json
+X-REQUEST-TYPE: Graphql
+
+query ($search: String!, $listType: MediaType) {
+ Page (page: 1, perPage: 100) {
+ pageInfo {
+ total
+ currentPage
+ lastPage
+ hasNextPage
+ perPage
+ }
+ media (search: $search, type: $listType) {
+ id
+ idMal
+ title {
+ romaji
+ english
+ native
+ }
+ description
+ coverImage {
+ large
+ }
+ season
+ seasonYear
+ status
+ episodes
+ nextAiringEpisode{
+ airingAt
+ timeUntilAiring
+ episode
+ }
+ }
+ }
+ }
+
+{
+ "search": "dan-da-dan",
+ "listType": "ANIME"
+}
diff --git a/rest/AniTrack/Get Items/GetAniListUserWatchingList.http b/rest/AniTrack/Get Items/GetAniListUserWatchingList.http
new file mode 100644
index 0000000..1596ca6
--- /dev/null
+++ b/rest/AniTrack/Get Items/GetAniListUserWatchingList.http
@@ -0,0 +1,93 @@
+# @name GetAniListUserWatchList
+
+POST https://graphql.anilist.co
+Accept: applicaton/json
+X-REQUEST-TYPE: Graphql
+
+query (
+ $page: Int
+ $perPage: Int
+ $userId: Int
+ $listType: MediaType
+ $status: MediaListStatus
+ $sort: [MediaListSort]
+) {
+ Page(page: $page, perPage: $perPage) {
+ pageInfo {
+ total
+ perPage
+ currentPage
+ lastPage
+ hasNextPage
+ }
+ mediaList(userId: $userId, type: $listType, status: $status, sort: $sort) {
+ id
+ mediaId
+ userId
+ media {
+ id
+ idMal
+ title {
+ romaji
+ english
+ native
+ }
+ description
+ coverImage {
+ large
+ }
+ season
+ seasonYear
+ status
+ episodes
+ nextAiringEpisode {
+ airingAt
+ timeUntilAiring
+ episode
+ }
+ }
+ 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
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+{
+ "page": 1,
+ "perPage": 20,
+ "userId": 413504,
+ "listType": "ANIME",
+ "status": "CURRENT",
+ "sort": "UPDATED_TIME_DESC"
+}
diff --git a/rest/AniTrack/GetAuthorizationToken.http b/rest/AniTrack/GetAuthorizationToken.http
new file mode 100644
index 0000000..16325e7
--- /dev/null
+++ b/rest/AniTrack/GetAuthorizationToken.http
@@ -0,0 +1,3 @@
+# @name GetAuthorizationToken
+
+GET https://anilist.co/api/v2/oauth/authorize?client_id={{ANILIST_APP_ID}}&redirect_uri=http://localhost:6734/callback&response_type=code
diff --git a/rest/AniTrack/Load AniList Oauth Page.http b/rest/AniTrack/Load AniList Oauth Page.http
new file mode 100644
index 0000000..b2cc304
--- /dev/null
+++ b/rest/AniTrack/Load AniList Oauth Page.http
@@ -0,0 +1,11 @@
+# @name Load AniList Oauth Token
+
+POST https://anilist.co/api/v2/oauth/token
+Content-Type: application/x-www-form-urlencoded
+Accept: application/json
+
+grant_type=authorization_code
+client_id={{ANILIST_APP_ID}}
+client_secret={{ANILIST_SECRET_ID}}
+redirect_uri=http://localhost:6734/callback
+code={{ANILIST_CODE}}
diff --git a/rest/http-client.env.json b/rest/http-client.env.json
new file mode 100644
index 0000000..c0da0c1
--- /dev/null
+++ b/rest/http-client.env.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "https://raw.githubusercontent.com/mistweaverco/kulala.nvim/main/schemas/http-client.env.schema.json",
+ "dev": {
+ "ANILIST_APP_ID": "",
+ "ANILIST_SECRET": "",
+ "SIMKL_CLIENT_ID": "",
+ "SIMKL_CLIENT_SECRET": "",
+ "MAL_CLIENT_ID": "",
+ "MAL_CLIENT_SECRET": "",
+ "ANILIST_ACCESS_TOKEN": "",
+ "ANILSIT_CODE": "",
+ "SIMKL_AUTH_TOKEN": "",
+ "MAL_CODE": "",
+ "MAL_VERIFIER": "",
+ "MAL_USER": "",
+ "MAL_ACCESS_TOKEN": ""
+ }
+}
diff --git a/wails.json b/wails.json
index 28632ee..07e317a 100644
--- a/wails.json
+++ b/wails.json
@@ -12,6 +12,6 @@
},
"info": {
"productName": "AniTrack",
- "productVersion": "0.1.5"
+ "productVersion": "0.1.6"
}
}