xvdl
Version:
Video downloader for xvideos.com written in pure JavaScript.
89 lines (78 loc) • 2.25 kB
TypeScript
import { Readable } from "stream";
import miniget from "miniget";
declare module "xvdl" {
export interface RelatedVideos {
id: number;
thumbnail: string;
url: string;
title: string;
views: string;
duration: string;
channel: {
name: string;
url: string;
};
}
export interface SearchData {
id: string,
title: string,
url: string,
duration: string;
channel: {
url: string;
name: string;
};
thumbnail: {
dynamic: string;
static: string;
};
}
export interface BrowseResult {
videos: SearchData[];
lastPage: number;
}
export type SearchResult = BrowseResult;
export interface DownloadOptions extends miniget.Options {
type?: "hq" | "lq" | "hls";
}
export interface VideoInfo {
url: string;
title: string;
length: number;
views: number;
streams: {
hq: string;
lq: string;
hls: string;
};
thumbnail: string;
relatedVideos: RelatedVideos[];
ratings: {
likes: string;
dislikes: string;
};
comments: string;
channel: {
name: string;
url: string;
subscribers: string;
};
}
export class Util {
public static getHTML(url: string): Promise<string>;
public static getDOM(html: string): Document;
public static parseRelated(data: string): RelatedVideos[];
}
export class XVDL {
public static browse(path?: string): Promise<BrowseResult>;
public static getInfo(url: string): Promise<VideoInfo>;
public static download(url: string, options?: DownloadOptions): Readable;
public static search(query: string, page?: number): Promise<SearchResult>;
}
export interface ConstantsInterface {
BASE_URL: string;
SEARCH_HEAD: string;
}
export const Constants: ConstantsInterface;
export const version: string;
}