@ashiteam/ashi-smule
Version:
AES encription/decription library for my use
84 lines (83 loc) • 5.06 kB
TypeScript
import { SmuleChanelData, PerformanceData, SmuleUserIdData, SmuleUserData, SmuleUserSongData } from './models/ashi-smule-interfaces';
import { SmuleFilter } from './models/ashi-smule-filter-interface';
export declare class ProxyData {
host: string;
port: number;
country: string;
constructor(host: string, port: number, country: string);
}
export interface IAshiSmulFetchData {
getHtmlBody(url: string): Promise<any>;
getJson(url: string): Promise<any>;
addAvoidCurrentProxy(): void;
}
export declare class AshiSmulUniversalFetchData implements IAshiSmulFetchData {
private ky;
private getData;
getHtmlBody(url: string): Promise<any>;
getJson(url: string): Promise<any>;
addAvoidCurrentProxy(): void;
}
export declare class AshiSmule {
protected readonly smuleBaseUrl = "https://www.smule.com/";
protected readonly chanelUrlBase = "s/profile/performance/USER_NAME/sing";
protected readonly favUrlBase = "USER_NAME/favorites/json";
protected readonly offsetParam = "?offset=";
protected readonly sizeParam = "&size=";
protected httpData: IAshiSmulFetchData;
constructor(httpData: IAshiSmulFetchData | null);
protected log(data: any): void;
protected getOffsetSizeParamUrlPart(offset: number, size?: number): string;
protected fixUserNameInUrl(url: string, user: string): string;
protected getUrl(urlPart: string, user: string, startAt: number, size?: number): string;
protected getData(urlPart: string, user: string, startAt: number, retryCount?: number): Promise<SmuleChanelData | null>;
protected getAllData(urlPart: string, user: string, expandCollabs: boolean, chunkFetched?: (dataChunk: SmuleChanelData) => boolean): Promise<PerformanceData[]>;
protected isSoloForOthers(perf: PerformanceData): boolean | "" | null | undefined;
protected getCollabsFetchUrl(key: string, startAt: number): string;
protected getCollabsForPerf(performanceData: PerformanceData | null, attempt?: number): Promise<PerformanceData[]>;
protected fixUser(user?: SmuleUserIdData): Promise<void>;
protected fixFilter(filter: SmuleFilter): Promise<void>;
protected isOnlyOneMatch(filter?: SmuleFilter): boolean;
protected canUseSong(song: PerformanceData, filter?: SmuleFilter): boolean;
protected filterList(songs?: PerformanceData[], filter?: SmuleFilter): PerformanceData[];
protected getDataFiltered(urlPart: string, user: string, filter: SmuleFilter, expandCollabs: boolean, chunkFetched?: () => boolean): Promise<PerformanceData[]>;
protected getWebUrls(urlPart: string, user: string, startAt: number): Promise<{
url_list: string[];
next_offset?: number;
}>;
getUser(user: string, attempt?: number): Promise<SmuleUserData | null>;
getUsers(users: string[]): Promise<Array<SmuleUserData | null>>;
getUserId(user: string): Promise<number>;
getUserIds(users: string[]): Promise<SmuleUserIdData[]>;
getChanelData(user: string, startAt: number): Promise<SmuleChanelData | null>;
getFavData(user: string, startAt: number): Promise<SmuleChanelData | null>;
getAllChanelData(user: string, expandCollabs: boolean, chunkFetched?: (dataChunk: SmuleChanelData) => boolean): Promise<PerformanceData[]>;
getAllFavData(user: string, expandCollabs: boolean, chunkFetched?: (dataChunk: SmuleChanelData) => boolean): Promise<PerformanceData[]>;
getChanelWebUrls(user: string, startAt: number): Promise<{
url_list: string[];
next_offset?: number;
}>;
getFavWebUrls(user: string, startAt: number): Promise<{
url_list: string[];
next_offset?: number;
}>;
getChanelDataFiltered(user: string, filter: SmuleFilter, expandCollabs: boolean, chunkFetched?: () => boolean): Promise<PerformanceData[]>;
getFavDataFiltered(user: string, filter: SmuleFilter, expandCollabs: boolean, chunkFetched?: () => boolean): Promise<PerformanceData[]>;
private getPerformanceData;
getSingerNames(performanceData: PerformanceData | null): string[];
getCollaborations(url: string): Promise<PerformanceData[]>;
expandCollaborations(perfomances: PerformanceData[]): Promise<PerformanceData[]>;
private mergeLists;
logSongInfo(perf: PerformanceData): void;
private updateSongs;
loadUserSongData(songData: SmuleUserSongData, user?: string): Promise<void>;
updateMediaUrl(perf: PerformanceData): Promise<void>;
private getDownloadUrl;
private sanitizeFileName;
getMediaFilePath(user: string, perf: PerformanceData): string;
getAudioFilePath(user: string, perf: PerformanceData): string | undefined;
getVideoFilePath(user: string, perf: PerformanceData): string | undefined;
protected addPerfs(toPerfs: PerformanceData[], fromPerfs: PerformanceData[], checkIfExist: boolean): void;
getAllPerformances(data: SmuleUserSongData): PerformanceData[];
getLinksNeededPerfs(data: SmuleUserSongData, force?: boolean): PerformanceData[];
}