1.0.9 • Published 10 months ago

@hssoftvn/yt-search-api v1.0.9

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

Youtube Search API

Youtube Search API is an API for getting Youtube search results.

Installation

npm install @hssoftvn/yt-search-api

Usage (import)

const ytSearchApi = require("@hssoftvn/yt-search-api");

1. SearchVideosByKeyword (Promise)

Search YouTube videos by the keyword

const SearchVideosByKeyword: (keyword: any, lang?: any, country?: any, withPlaylist?: any, limit?: any, options?: any) => Promise<{
    items: any[];
    nextPage: {
        nextPageToken: null;
        nextPageContext: {
            context: null;
            continuation: {};
        };
    };
}>

Parameters

ParameterTypeValue
keywordStringup to you
langbooleanuser language code that video applies for, default vi
countrybooleancountry code that video applies for, default vn
withPlaylistbooleanwhether the search results consist of playlist
limitnumberlimit the number of result items found
optionsJSON Array{type:"video/channel/playlist/movie"}

Result

  • JSON of items found, and nextPage token
  • items is the array from youtube, "nextPage" needs to pass when going to the next page. If playlist arg is true, will return type:'playlist' but the videos:[] property will not return the whole videos in the list, need to call GetPlaylistData to get real playlist's videos. Item with Video type will return isLive=[true/false] to identify live video or not.
  • item is a VideoRender structure
const VideoRender: (json: any) => {
    vid: any;
    type: string;
    thumbnail: string;
    title: any;
    channelTitle: any;
    channelId: any;
    channelThumbnail: any;
    duration: any;
    viewCount: any;
    publishedAt: any;
    isLive: boolean;
} | {
}

Example

ytSearchApi.SearchVideosByKeyword("Hello").then((result) => {
	console.log(result.items[0], result.nextPage);
});

2. FetchWhatToWatchByYouTube (Promise)

FetchWhatToWatchByYouTube

const FetchWhatToWatchByYouTube: (lang?: string, country?: string, pageToken?: string) => Promise<{
    items: any[];
    nextPage: {
        nextPageToken: null;
        nextPageContext: {
            context: null;
            continuation: {};
        };
    };
}>

Parameters

ParameterTypeValue
langStringup to you
countryStringup to you
pageTokenStringtoken of the page to search for

Result

  • JSON of items found, and nextPage token
  • Same as SearchVideosByKeyword

Example

ytSearchApi.FetchWhatToWatchByYouTube().then((result) => {
	console.log(result);
});

3. FetchTrending (Promise)

Fetch Trending

const FetchTrending: (tab?: any, lang?: any, country?: any, limit?: any) => Promise<{
    items: any[];
    nextPage: {
        nextPageToken: null;
        nextPageContext: {
            context: null;
            continuation: {};
        };
    };
}>

Parameters

ParameterTypeValue
tabNumber0=now, 1=music, 2=gaming, 3=movies
langStringup to you
countryStringup to you
limitStringlimit the result items

Result

  • JSON of items found, and nextPage token
  • Same as SearchVideosByKeyword

Example

ytSearchApi.FetchTrending("0").then((result) => {
	console.log(result.items && result.items[0], result.nextPage);
});

4. GetVideoDetailsWithSuggestion (Promise)

Get details of current videos along with its video suggestions, nextVideo, and endscreen elements

const GetVideoDetailsWithSuggestion: (videoId: any, lang?: any, country?: any) => Promise<{
    title: any;
    isLive: any;
    thumbnail: string;
    description: any;
    channel: any;
    channelThumbnail: any;
    duration: string;
    viewCount: any;
    publishedAt: any;
    publishedAt2: any;
    suggestion: ResultItem[];
    nextVideo: ResultItem;
    endscreen: {
        startMs: any,
        elements:ResultItem[];
    };
}>

Parameters

ParameterTypeValue
videoIdStringVideo Id
langStringup to you
countryStringup to you

Result

  • JSON object of video details and its videos suggestion array
{
    title: any;
    isLive: any;
    thumbnail: string;
    description: any;
    channel: any;
    channelThumbnail: any;
    duration: string;
    viewCount: any;
    publishedAt: any;
    publishedAt2: any;
    suggestion: ResultItem[] || [];
    nextVideo: ResultItem;
    endscreen: {
        startMs: any,
        elements:ResultItem [];
    };
}

//Structure of ResultItem
ResultItem: {
	vid: any;
	type: string;
	thumbnail: any;
	title: any;
	channelTitle: string;
	channelId: string;
	channelThumbnail: string;
	duration: string;
	viewCount: any;
	publishedAt: any;
	isLive: boolean;
}

Example

ytSearchApi.GetVideoDetailsWithSuggestion("oQl9XjVKdQ4").then((result) => {
	console.log(result);
});

Notice:

  1. We just focus on the 4 functions above.
  2. Other functions we are note sure if they work.

Message

If you want to work with me to fix bug or implement new idea. You are available to send me some new idea of this project.

Indeed, I will also need to clean up this later.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

Todo

  1. Tidy up source

History

2024-08-01

Initial publish the module.

We just focus on the 4 functions below. Other functions we are note sure if they work.

  1. SearchVideosByKeyword
  2. FetchWhatToWatchByYouTube
  3. FetchTrending
  4. GetVideoDetailsWithSuggestion

License

MIT

Support me

https://ko-fi.com/hssoftvn

1.0.9

10 months ago

1.0.8

11 months ago

1.0.7

11 months ago

1.0.6

11 months ago

1.0.5

11 months ago

1.0.4

12 months ago

1.0.3

12 months ago

1.0.2

12 months ago

1.0.1

12 months ago

1.0.0

12 months ago