Merge pull request #93 from DeepDoge/master

Madiator scrap API version changed to 2
This commit is contained in:
kodxana 2022-01-15 17:27:18 +01:00 committed by GitHub
commit e01a3990c8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 7 deletions

View file

@ -111,7 +111,8 @@ export const SingleValueAtATime = Symbol()
export type YtUrlResolveResponsePath = (string | number | typeof Keys | typeof Values)[] export type YtUrlResolveResponsePath = (string | number | typeof Keys | typeof Values)[]
export interface YtUrlResolveFunction { export interface YtUrlResolveFunction {
pathname: string pathname: string
paramName: string defaultParams: Record<string, string | number>
valueParamName: string
paramArraySeperator: string | typeof SingleValueAtATime paramArraySeperator: string | typeof SingleValueAtATime
responsePath: YtUrlResolveResponsePath responsePath: YtUrlResolveResponsePath
} }
@ -131,13 +132,15 @@ export const ytUrlResolversSettings: Record<YTUrlResolverName, YTUrlResolver> =
functions: { functions: {
getChannelId: { getChannelId: {
pathname: "/yt/resolve", pathname: "/yt/resolve",
paramName: "channel_ids", defaultParams: {},
valueParamName: "channel_ids",
paramArraySeperator: ',', paramArraySeperator: ',',
responsePath: ["data", "channels", Values] responsePath: ["data", "channels", Values]
}, },
getVideoId: { getVideoId: {
pathname: "/yt/resolve", pathname: "/yt/resolve",
paramName: "video_ids", defaultParams: {},
valueParamName: "video_ids",
paramArraySeperator: ",", paramArraySeperator: ",",
responsePath: ["data", "videos", Values] responsePath: ["data", "videos", Values]
} }
@ -149,13 +152,19 @@ export const ytUrlResolversSettings: Record<YTUrlResolverName, YTUrlResolver> =
functions: { functions: {
getChannelId: { getChannelId: {
pathname: "/api/get-lbry-channel", pathname: "/api/get-lbry-channel",
paramName: "url", defaultParams: {
v: 2
},
valueParamName: "url",
paramArraySeperator: SingleValueAtATime, paramArraySeperator: SingleValueAtATime,
responsePath: ["lbrych"] responsePath: ["lbrych"]
}, },
getVideoId: { getVideoId: {
pathname: "/api/get-lbry-video", pathname: "/api/get-lbry-video",
paramName: "url", defaultParams: {
v: 2
},
valueParamName: "url",
paramArraySeperator: SingleValueAtATime, paramArraySeperator: SingleValueAtATime,
responsePath: ["lbryurl"] responsePath: ["lbryurl"]
} }

View file

@ -59,10 +59,11 @@ export async function resolveById(descriptors: YtIdResolverDescriptor[], progres
async function requestGroup(urlResolverFunction: YtUrlResolveFunction, descriptorsGroup: typeof descriptorsPayload) { async function requestGroup(urlResolverFunction: YtUrlResolveFunction, descriptorsGroup: typeof descriptorsPayload) {
url.pathname = urlResolverFunction.pathname url.pathname = urlResolverFunction.pathname
Object.entries(urlResolverFunction.defaultParams).forEach(([name, value]) => url.searchParams.set(name, value.toString()))
if (urlResolverFunction.paramArraySeperator === SingleValueAtATime) { if (urlResolverFunction.paramArraySeperator === SingleValueAtATime) {
await Promise.all(descriptorsGroup.map(async (descriptor) => { await Promise.all(descriptorsGroup.map(async (descriptor) => {
url.searchParams.set(urlResolverFunction.paramName, descriptor.id) url.searchParams.set(urlResolverFunction.valueParamName, descriptor.id)
const apiResponse = await fetch(url.toString(), { cache: 'no-store' }) const apiResponse = await fetch(url.toString(), { cache: 'no-store' })
if (apiResponse.ok) { if (apiResponse.ok) {
@ -77,7 +78,7 @@ export async function resolveById(descriptors: YtIdResolverDescriptor[], progres
})) }))
} }
else { else {
url.searchParams.set(urlResolverFunction.paramName, descriptorsGroup url.searchParams.set(urlResolverFunction.valueParamName, descriptorsGroup
.map((descriptor) => descriptor.id) .map((descriptor) => descriptor.id)
.join(urlResolverFunction.paramArraySeperator)) .join(urlResolverFunction.paramArraySeperator))