added genres

This commit is contained in:
JasonLandbridge
2025-02-04 11:50:23 +01:00
parent b1e3bae9e9
commit f3234f47c5
4 changed files with 287 additions and 1 deletions

View File

@@ -1,7 +1,7 @@
get:
tags:
- Library
summary: Search Library
summary: Get Countries of library media
operationId: get-countries-library
description: |
Retrieves a list of all the countries that are found for the media in this library.

View File

@@ -0,0 +1,88 @@
get:
tags:
- Library
summary: Get Genres of library media
operationId: get-genres-library
description: |
Retrieves a list of all the genres that are found for the media in this library.
responses:
"200":
description: Successful response containing media container data.
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "../../../models/MediaContainer.yaml"
- type: object
required:
- size
- allowSync
- art
- content
- identifier
- mediaTagPrefix
- mediaTagVersion
- nocache
- thumb
- title1
- title2
- viewGroup
properties:
art:
type: string
example: "/:/resources/show-fanart.jpg"
content:
type: string
example: "secondary"
mediaTagPrefix:
type: string
example: "/system/bundle/media/flags/"
mediaTagVersion:
type: integer
example: 1734362201
nocache:
type: boolean
example: true
thumb:
type: string
example: "/:/resources/show.png"
title1:
type: string
example: "TV Shows (Reality)"
title2:
type: string
example: "By Genre"
viewGroup:
type: string
example: "secondary"
Directory:
type: array
items:
type: object
required:
- fastKey
- key
- title
- type
properties:
fastKey:
type: string
example: "/library/sections/10/all?genre=89"
key:
type: string
example: "89"
title:
type: string
example: "Action"
type:
type: string
example: "genre"
"400":
$ref: "../../../responses/400.yaml"
"401":
$ref: "../../../responses/401.yaml"
"404":
$ref: "../../../responses/404-html.yaml"

View File

@@ -169,6 +169,8 @@ paths:
$ref: "./paths/library/[sectionKey]/refresh/get-refresh-library-metadata.yaml"
/library/sections/{sectionKey}/search:
$ref: "./paths/library/[sectionKey]/get-search-library.yaml"
/library/sections/{sectionKey}/genre:
$ref: "./paths/library/[sectionKey]/get-library-genres.yaml"
/library/sections/{sectionKey}/country:
$ref: "./paths/library/[sectionKey]/get-library-countries.yaml"

View File

@@ -0,0 +1,196 @@
import { validateResponseSpec } from "@utils"
import { describe, it } from "vitest"
describe("GET /library/sections/[sectionKey]/genre", () => {
it("should validate the 200 response when the API spec is valid", () => {
const response = {
MediaContainer: {
size: 23,
allowSync: false,
art: "/:/resources/show-fanart.jpg",
content: "secondary",
identifier: "com.plexapp.plugins.library",
mediaTagPrefix: "/system/bundle/media/flags/",
mediaTagVersion: 1734362201,
nocache: true,
thumb: "/:/resources/show.png",
title1: "TV Shows (Reality)",
title2: "By Genre",
viewGroup: "secondary",
Directory: [
{
fastKey: "/library/sections/10/all?genre=89",
key: "89",
title: "Action",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=17",
key: "17",
title: "Adventure",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=4025",
key: "4025",
title: "Biography",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=19",
key: "19",
title: "Comedy",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=1057",
key: "1057",
title: "Crime",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=2268",
key: "2268",
title: "Documentary",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=91",
key: "91",
title: "Drama",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=1708",
key: "1708",
title: "Family",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=8438",
key: "8438",
title: "Food",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=8439",
key: "8439",
title: "Game Show",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=30219",
key: "30219",
title: "Home and Garden",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=551",
key: "551",
title: "Horror",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=5114",
key: "5114",
title: "Music",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=552",
key: "552",
title: "Mystery",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=12439",
key: "12439",
title: "News",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=96699",
key: "96699",
title: "Podcast",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=86",
key: "86",
title: "Reality",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=2313",
key: "2313",
title: "Romance",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=7484",
key: "7484",
title: "Sport",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=82171",
key: "82171",
title: "Talk",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=82170",
key: "82170",
title: "Talk Show",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=739",
key: "739",
title: "Thriller",
type: "genre"
},
{
fastKey: "/library/sections/10/all?genre=57093",
key: "57093",
title: "Travel",
type: "genre"
}
]
}
}
validateResponseSpec(
"/library/sections/{sectionKey}/genre",
"get",
200,
response
)
})
it("should validate the 200 response with no Directories when the API spec is valid", () => {
const response = {
MediaContainer: {
size: 14,
allowSync: false,
art: "/:/resources/show-fanart.jpg",
content: "secondary",
identifier: "com.plexapp.plugins.library",
mediaTagPrefix: "/system/bundle/media/flags/",
mediaTagVersion: 1734362201,
nocache: true,
thumb: "/:/resources/show.png",
title1: "TV Shows (Kids)",
title2: "By Genre",
viewGroup: "secondary"
}
}
validateResponseSpec(
"/library/sections/{sectionKey}/genre",
"get",
200,
response
)
})
})