2022-08-25 23:32:31 +02:00
2022-06-29 00:43:55 +02:00
2022-07-18 20:46:57 +02:00
2022-08-25 22:54:21 +02:00
2022-08-25 22:54:21 +02:00
2022-08-25 23:31:18 +02:00
2022-08-25 23:31:18 +02:00
2022-08-25 23:31:18 +02:00
💣💣💣
2022-07-29 18:57:43 +02:00
2022-04-11 19:03:44 +02:00
💣🩹
2022-07-31 14:50:56 +02:00
2022-08-25 23:31:18 +02:00
2022-08-25 23:32:31 +02:00
2022-07-26 20:48:17 +02:00
2022-08-19 18:05:54 +02:00
2022-05-14 14:21:50 +02:00
2022-08-25 23:31:18 +02:00
2022-07-01 17:08:10 +02:00
2022-07-01 17:08:10 +02:00
2022-06-29 00:43:55 +02:00
2022-07-17 19:42:49 +02:00

huso

Hanami's universeller Serien Organizer

Backend code

API

General

Method Route Response
GET / Startseite als HTML
GET /api/log Log als plaintext

Auth

Method Route Description Response Parameter Header POST-Body
GET /api/auth/{user} Test für Authentifizierung (status code) {user} = MAL username X-HUSO-AUTH
POST /api/register Registrieren RegisterData JSON RegisterData JSON
PATCH /api/register Registrierung bearbeiten RegisterData JSON X-HUSO-AUTH RegisterData JSON
DELETE /api/register User löschen RegisterData JSON X-HUSO-AUTH RegisterData JSON

RegisterData

{
    "username": "TESTUSERNAME",
    "malId": 42069,
    "discordId": 111111111111111111,
    "secret": "1ef539ed34435873fc964c2c20da84f8793ae3731a154cffb41039f2f061cabe97dea18cfffa51c58f3f564f8e7f0cd0a98d7ba3dddb7301c0e7549626ea43af",
    "sauce": "31f3637d8d05ddca7deee89453e3b68a9b74860facd8d5a6768e5ca842571595c8d31e43ce0e996f893578d0bd2b61f3f3820ec03fbb30407e31a2603c887b1"
}

sauce

SHA512(綾波レイ + malId + username)

secret

SHA512(SAUCE + PASSWORD)

X-HUSO-AUTH -> secret des users

Anime

Method Route Description Response Parameter Header POST-Body
GET /api/season Aktuelle Season holen []Anime JSON
GET /api/nextseason Nächste Season holen []Anime JSON
GET /api/nextnextseason Übernächste Season holen []Anime JSON
GET /api/lastseason Letzte Season holen []Anime JSON
GET /api/anime/{id} Einzelnen Anime holen Anime JSON {id} = MAL Anime id
GET /api/animesearch Anime auf MAL suchen []Anime JSON Query parameter {q} = Suchtext

[]Anime

[
  {
    "anime": 50265,
    "title": "Spy x Family",
    "titleEn": "",
    "titleJp": "SPY×FAMILY",
    "imageMedium": "https://cdn.myanimelist.net/images/anime/1441/122795.jpg",
    "imageLarge": "https://cdn.myanimelist.net/images/anime/1441/122795l.jpg",
    "imageThumb": "https://cdn.myanimelist.net/images/anime/1441/122795t.jpg",
    "url": "https://myanimelist.net/anime/50265",
    "type": "TV",
    "status": "Currently Airing",
    "episodes": 12,
    "synopsis": "ANYA~ [Written by MAL Rewrite]",
    "genres": [
      {
        "id": 1,
        "name": "Action"
      },
      {
        "id": 4,
        "name": "Comedy"
      }
    ],
    "startDate": "2022-04-09T00:00:00Z",
    "endDate": "0001-01-01T00:00:00Z",
    "year": 2022,
    "season": "spring",
    "score": 9.07,
    "scoredBy": 191073,
    "rank": 5,
    "popularity": 239,
    "members": 661291,
    "source": "Manga",
    "weekday": "Saturdays",
    "studios": [
      {
        "id": 858,
        "name": "Wit Studio"
      },
      {
        "id": 1835,
        "name": "CloverWorks"
      }
    ],
    "trailerUrl": "https://www.youtube.com/watch?v=ofXigq9aIpo",
    "trailerEmbedUrl": "https://www.youtube.com/embed/ofXigq9aIpo?enablejsapi=1&wmode=opaque&autoplay=1"
  },
  {
    "anime": 43608,
    "title": "Kaguya-sama wa Kokurasetai: Ultra Romantic",
    "titleEn": "Kaguya-sama: Love is War - Ultra Romantic",
    "titleJp": "かぐや様は告らせたい-ウルトラロマンティック-",
    "imageMedium": "https://cdn.myanimelist.net/images/anime/1160/122627.jpg",
    "imageLarge": "https://cdn.myanimelist.net/images/anime/1160/122627l.jpg",
    "imageThumb": "https://cdn.myanimelist.net/images/anime/1160/122627t.jpg",
    "url": "https://myanimelist.net/anime/43608",
    "type": "TV",
    "status": "Currently Airing",
    "episodes": 12,
    "synopsis": "Tsun [Written by MAL Rewrite]",
    "genres": [
      {
        "id": 4,
        "name": "Comedy"
      },
      {
        "id": 41,
        "name": "Suspense"
      }
    ],
    "startDate": "2022-04-09T00:00:00Z",
    "endDate": "0001-01-01T00:00:00Z",
    "year": 2022,
    "season": "spring",
    "score": 8.99,
    "scoredBy": 74937,
    "rank": 13,
    "popularity": 396,
    "members": 454326,
    "source": "Manga",
    "weekday": "Saturdays",
    "studios": [
      {
        "id": 56,
        "name": "A-1 Pictures"
      }
    ],
    "trailerUrl": "https://www.youtube.com/watch?v=vFN5K-iAyV0",
    "trailerEmbedUrl": "https://www.youtube.com/embed/vFN5K-iAyV0?enablejsapi=1&wmode=opaque&autoplay=1"
  }
]

User

Method Route Description Response Parameter Header POST-Body
GET /api/user/{user?} MAL user suchen oder alle registrierten user holen []User JSON {user?} = optional: MAL username

[]User

[
  {
    "id": 42069,
    "username": "TESTUSERNAME",
    "url": "https://myanimelist.net/profile/TESTUSERNAME",
    "imageUrl": "https://cdn.myanimelist.net/images/userimages/42069.jpg?t=1652707800",
    "lastOnline": "2022-01-01T06:26:42Z",
    "gender": "",
    "birthday": "0001-01-01T00:00:00Z",
    "location": "TEST",
    "joined": "2010-01-01T00:00:00Z"
  }
]

Watch

Method Route Description Response Parameter Header POST-Body
GET /api/watch/{user?} Watches von user oder allen []AnimeUser JSON {user?} = optional: MAL username
GET /api/watchext/{user?} Erweiterte Watches von user oder allen []AnimeUserExtended JSON {user?} = optional: MAL username
POST /api/watch/{user} Neuen watch schicken []AnimeUser JSON {user} = MAL username X-HUSO-AUTH []AnimeUser JSON
DELETE /api/watch/{user} Watch löschen []AnimeUser JSON {user} = MAL username X-HUSO-AUTH []AnimeUser JSON

Verwendung des JSON von GET und POST/DELETE unterscheiden sich. Bei POST/DELETE muss nur der zu verändernde Anime angegeben werden und sonst nichts.

[]AnimeUser (GET)

[
  {
    "anime": 50265,
    "users": [
      {
        "username": "TESTUSERNAME",
        "malId": 42069,
        "progress": 6,
        "updated": "2022-05-15T20:44:35Z"
      }
    ]
  },
  {
    "anime": 40356,
    "users": [
      {
        "username": "TESTUSERNAME",
        "malId": 42069,
        "progress": 3,
        "updated": "2022-04-25T18:11:27Z"
      }
    ]
  }
]

[]AnimeUserExtended (GET)

[
  {
    "anime": 50265,
    "users": [
      {
        "username": "TESTUSERNAME",
        "malId": 42069,
        "progress": 6,
        "updated": "2022-05-15T20:44:35Z"
      }
    ],
    "data": { --SEE ANIME GET (Anime object)-- },
    "appointments": { --SEE APPOINTMENT GET (Appointment list)-- }
  },
  {
    "anime": 40356,
    "users": [
      {
        "username": "TESTUSERNAME",
        "malId": 42069,
        "progress": 3,
        "updated": "2022-04-25T18:11:27Z"
      }
    ],
    "data": { --SEE ANIME GET (Anime object)-- },
    "appointments": { --SEE APPOINTMENT GET (Appointment list)-- }
  }
]

[]AnimeUser (POST/DELETE)

[
  {
    "anime": 40356,
    "users": []
  }
]

Chat

Method Route Description Response Parameter Header POST-Body
GET /api/chat/{id} Chat für Anime holen Plaintext chat {id} = MAL Anime id
POST /api/chat/{id}/{user} Chat für Anime senden Plaintext chat mit neuer Nachricht {id} = MAL Anime id; {user} = MAL username X-HUSO-AUTH Neue Nachricht in plaintext

Appointment

Method Route Description Response Parameter Header POST-Body
GET /api/appointment Appointments holen []Appointment
POST /api/appointment/{user} Appointment schicken []Appointment JSON {user} = MAL username X-HUSO-AUTH []Appointment JSON
DELETE /api/appointment/{user} Von Appointments austragen []Appointment JSON {user} = MAL username X-HUSO-AUTH []Appointment JSON

Verwendung des JSON von GET und POST/DELETE unterscheiden sich. Bei POST/DELETE muss nur das Datum und der zu verändernde Anime angegeben werden und sonst nichts.

[]Appointment (GET)

[
  {
    "anime": 40356,
    "date": "2022-05-30T20:51:51Z",
    "users": [
      "TESTUSERNAME",
      "TESTUSERNAME2"
    ]
  },
  {
    "anime": 50265,
    "date": "2022-05-31T20:51:51Z",
    "users": [
      "TESTUSERNAME"
    ]
  }
]

[]Appointment (POST/DELETE)

[
  {
    "anime": 50265,
    "date": "2022-05-31T22:51:51Z",
    "users": []
  }
]

User data

Method Route Description Response Parameter Header POST-Body
GET /api/userdata/{user}/{key} User data holen {user} = MAL username; {key} = Key der data X-HUSO-AUTH Plaintext(binary) data
PUT /api/userdata/{user}/{key} User data setzen Plaintext(binary) data {user} = MAL username; {key} = Key der data X-HUSO-AUTH
Description
Hanami's universeller Serien Organizer
Readme 669 KiB
Languages
Go 99.8%
Shell 0.2%