bandcamp-fetch
Version:
Scrape Bandcamp content
63 lines • 3.36 kB
TypeScript
import { type FanItemsContinuation } from '../types/Fan.js';
import type Fan from '../types/Fan.js';
import { type ImageFormat } from '../types/Image.js';
import { FanContinuationItemsResult, type FanItemParseOptions, FanPageItemsResult } from './FanItemsBaseParser.js';
import type Album from '../types/Album.js';
import type Track from '../types/Track.js';
import type UserKind from '../types/UserKind.js';
import type Tag from '../types/Tag.js';
import type Limiter from '../utils/Limiter.js';
import BaseAPIWithImageSupport, { type BaseAPIWithImageSupportParams } from '../common/BaseAPIWithImageSupport.js';
export { FanPageItemsResult, FanContinuationItemsResult };
export interface FanAPIGetInfoParams {
username?: string;
imageFormat: string | number | ImageFormat;
}
export interface FanAPIGetItemsParams {
target?: string | FanItemsContinuation;
imageFormat?: string | number | ImageFormat;
}
/**
* @internal
*/
export interface FanAPIGetItemsFullParams<T> extends FanAPIGetItemsParams {
defaultImageFormat: number;
continuationUrl?: string;
parsePageFn: (html: string, opts: FanItemParseOptions) => FanPageItemsResult<T>;
parseContinuationFn: (json: any, continuation: FanItemsContinuation, opts: FanItemParseOptions) => FanContinuationItemsResult<T>;
}
export default class FanAPI extends BaseAPIWithImageSupport {
getInfo(params: FanAPIGetInfoParams): Promise<Fan>;
getCollection(params: FanAPIGetItemsParams): Promise<FanPageItemsResult<NonNullable<Track | Album | null>> | FanContinuationItemsResult<NonNullable<Track | Album | null>>>;
getWishlist(params: FanAPIGetItemsParams): Promise<FanPageItemsResult<NonNullable<Track | Album | null>> | FanContinuationItemsResult<NonNullable<Track | Album | null>>>;
getFollowingArtistsAndLabels(params: FanAPIGetItemsParams): Promise<FanPageItemsResult<UserKind> | FanContinuationItemsResult<UserKind>>;
getFollowingGenres(params: FanAPIGetItemsParams): Promise<FanPageItemsResult<Tag> | FanContinuationItemsResult<Tag>>;
/**
* @internal
*/
protected getItems<T>(params: FanAPIGetItemsFullParams<T>): Promise<FanPageItemsResult<T> | FanContinuationItemsResult<T>>;
/**
* @internal
*/
protected static getFanPageUrl(username: string): string;
/**
* @internal
*/
protected static isContinuation(target: any): target is FanItemsContinuation;
/**
* @internal
*/
protected getLoggedInFanUsername(): Promise<string>;
}
export declare class LimiterFanAPI extends FanAPI {
#private;
constructor(params: BaseAPIWithImageSupportParams & {
limiter: Limiter;
});
getInfo(params: FanAPIGetInfoParams): Promise<Fan>;
getCollection(params: FanAPIGetItemsParams): Promise<FanPageItemsResult<NonNullable<Album | Track | null>> | FanContinuationItemsResult<NonNullable<Album | Track | null>>>;
getWishlist(params: FanAPIGetItemsParams): Promise<FanPageItemsResult<NonNullable<Album | Track | null>> | FanContinuationItemsResult<NonNullable<Album | Track | null>>>;
getFollowingArtistsAndLabels(params: FanAPIGetItemsParams): Promise<FanPageItemsResult<UserKind> | FanContinuationItemsResult<UserKind>>;
getFollowingGenres(params: FanAPIGetItemsParams): Promise<FanPageItemsResult<Tag> | FanContinuationItemsResult<Tag>>;
}
//# sourceMappingURL=FanAPI.d.ts.map