Go to file
Hexah fefc770ae0 Remove web directory 2020-06-14 15:58:24 +02:00
.github/workflows Create dart.yml 2020-02-20 20:57:08 +01:00
example Remove web directory 2020-06-14 15:58:24 +02:00
lib Linter fix 2020-06-14 12:14:21 +02:00
test Add `estimatedResults` in `SearchQuery` 2020-06-14 11:54:30 +02:00
.gitignore Remove dart:io dependency. 2020-02-21 21:45:03 +01:00
CHANGELOG.md Update version 2020-06-14 12:16:21 +02:00
LICENSE Add LICENSE 2020-02-20 20:02:06 +01:00
README.md Ready for 1.0.0 stable 2020-06-07 23:08:49 +02:00
analysis_options.yaml Code style 2020-06-10 00:08:16 +02:00
pubspec.yaml Update version 2020-06-14 12:16:21 +02:00

README.md

YoutubeExplodeDart

This is a port of the YoutubeExplode library from C#, most of the API functions or doc comments come from YoutubeExplode's API.


This library provides a class to query metadata of Youtube videos, playlists and channels. This doesn't require an API key and has no usage quotas.

Features from YoutubeExplode

  • Retrieve info about videos, playlists, channels, media streams, closed caption tracks.
  • Handles all types of videos, including legacy, signed, restricted, non-embeddable and unlisted videos
  • Downloads videos by exposing their media content as a stream
  • Parses and downloads closed caption tracks
  • All metadata properties are exposed using strong types and enums
  • Provides static methods to validate IDs and to parse IDs from URLs
  • No need for an API key and no usage quotas
  • All model extend Equatable to easily perform equality checks

Differences from YoutubeExplode

  • The entry point is YoutubeExplode, not YoutubeClient.

Install

Add the dependency to the pubspec.yaml (Check for the latest version)

youtube_explode_dart: ^1.0.0

Import the library

import 'package:youtube_explode_dart/youtube_explode_dart.dart';

Usage

To start using the API you need to initialize the YoutubeExplode class (which will create a new http client), and get (for example) the video id of the video you'd want to retrieve information, which usually is the v parameter.

var yt = YoutubeExplode();

Get video metadata

The Video class contains info about the video such as the video title, the duration or the search keywords.

var video = yt.video.get(id); // Returns a Video instance.

Get video streams

The Manifest contains the audio, video and muxed streams of the video. Each of the streams provides an url which can be used to download a video with a get request (See example).

var manifest = yt.videos.streamsClient.getManifest(videoId);

var muxed = manifest.muxed; // List of `MuxedStreamInfo` sorted by video quality.
var audio = manifest.audio; // List of `AudioStreamInfo` sorted by bitrate.
var video = manifest.video; // List of `VideoSteamInfo` sorted by video quality.
// There are available manifest.audioOnly and manifest.videoOnly as well.

Be aware, the muxed streams don't hold the best quality, to achieve so, you'd need to merge the audio and video streams.

Closed Captions

To get the video closed caption it is need to query before the caption track infos, which can be used to retrieve the closed caption.

  var trackInfos = await yt.videos.closedCaptions.getManifest(videoId); // Get the caption track infos
  var trackInfo = manifest.getByLanguage(en); // Get english caption.
  var track = await track.getByTime(duration); // Get the caption displayed at `duration`.

Cleanup

You need to close YoutubeExplode's http client when done otherwise this could halt the dart process.

yt.close();

Examples:

Available on GitHub


Check the api doc for additional information.