yt-list
JavaScript Wrapper for YouTube API on list methods
Simplify your life using this api to search videos, related videos, channel details, comments threads on YouTube.
Results are on Youtube API response format
Install
npm install yt-list@latest
Usage
API expects a YOUTUBE_API_KEY variable with the API key
Create .env file in the root of your project with your YouTube API Key
YOUTUBE_API_KEY=your youtube api key
const ytlist = require('yt-list')
API
Search
searchVideos(searchQuery, nextPageToken, amount)
Search videos based on a search query.
NextPageToken to retrieve the next page of results
Amount of results per page
const searchResults = await ytlist.searchVideos(searchQuery, nextPageToken, amount);
{
totalResults: Integer,
query: String,
items: Array[Object],
nextPageToken: String,
}
{
"kind": "youtube#searchResult",
"etag": etag,
"id": {
"kind": string,
"videoId": string,
"channelId": string,
"playlistId": string
},
"snippet": {
"publishedAt": datetime,
"channelId": string,
"title": string,
"description": string,
"thumbnails": {
(key): {
"url": string,
"width": unsigned integer,
"height": unsigned integer
}
},
"videoId": string
}
}
searchRelatedVideos(videoId, nextPageToken, amount)
Search Related Videos based on a videoId
NextPageToken to retrieve the next page of results
Amount of results per page
const searchRelatedResults = await ytlist.searchRelatedVideos(videoId, nextPageToken, amount);
{
totalResults: Integer,
items: Array[String],
nextPageToken: String,
}
Channels
listChannelDetails(channelId)
List channel details by ChannelId
const channel = await ytlist.listChannelDetails(channelId);
{
channelId: String,
snippet: {
title: String,
description: String,
thumbnails: { medium: [Object] }
},
statistics: { subscriberCount: String }
}
List comment threads of a videoId
NextPageToken to retrieve the next page of results
const comments = await ytlist.listCommentThreads(videoId, nextPageToken);
{
pageInfo: { totalResults: Integer, resultsPerPage: Integer },
items: Array[Object],
videoId: String,
nextPageToken: String,
}
{
"kind": "youtube#commentThread",
"etag": etag,
"id": string,
"snippet": {
"channelId": string,
"videoId": string,
"topLevelComment": comments Resource,
"canReply": boolean,
"totalReplyCount": unsigned integer,
"isPublic": boolean
},
"replies": {
"comments": [
comments Resource
]
}
}
{
"kind": "youtube#comment",
"etag": etag,
"id": string,
"snippet": {
"authorDisplayName": string,
"authorProfileImageUrl": string,
"authorChannelUrl": string,
"authorChannelId": {
"value": string
},
"channelId": string,
"videoId": string,
"textDisplay": string,
"textOriginal": string,
"parentId": string,
"canRate": boolean,
"viewerRating": string,
"likeCount": unsigned integer,
"moderationStatus": string,
"publishedAt": datetime,
"updatedAt": datetime
}
}
Videos
listVideoDetails(videoId)
List video details by VideoId
const video = await ytlist.listVideoDetails(viodeId);
{
"videoId": String,
"snippet": {
"publishedAt": datetime,
"channelId": string,
"title": string,
"description": string,
"thumbnails": {
(key): {
"url": string,
"width": unsigned integer,
"height": unsigned integer
}
},
"channelTitle": string,
"tags": [
string
],
"categoryId": string,
"liveBroadcastContent": string,
"defaultLanguage": string,
"localized": {
"title": string,
"description": string
},
"defaultAudioLanguage": string
},
"contentDetails": {
"duration": string,
"dimension": string,
"definition": string,
"caption": string,
"licensedContent": boolean,
"regionRestriction": {
"allowed": [
string
],
"blocked": [
string
]
},
"statistics": {
"viewCount": unsigned long,
"likeCount": unsigned long,
"dislikeCount": unsigned long,
"favoriteCount": unsigned long,
"commentCount": unsigned long
}
}
Tests
Tests are written with mocha
npm test