GithubHelp home page GithubHelp logo

cxwudi / youtubedl-java Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sapher/youtubedl-java

1.0 0.0 0.0 67 KB

Java wrapper for youtubedl executable, folked for supporting more functionalities

License: Do What The F*ck You Want To Public License

Java 100.00%

youtubedl-java's Introduction

youtubedl-java

A simple java wrapper for youtube-dl executable

Modification

This youtubedl-java is forked from main stream with the following modification:

  1. give users an option to write their own custom stdout parsing code, by implementing the LineOutputCallback interface
  2. setting global default youtube-dl executable path
    • supporting both exe path or python __main__.py path
  3. setting another youtube-dl executable path for a single youtube-dl request

Prerequisite

๐Ÿšจ Youtube-dl should be installed and available in your $PATH.

How to properly install YoutubeDL executable

Otherwise, please set your own youtube-dl executable file path through YoutubeDL.setDefaultExecutablePath(yourExePath).

yourExePath can be one of:

  1. just youtube-dl
  2. full/path/to/youtube-dl.exe
  3. python3 path/to/youtube-dl/__main__.py
  4. 'pyth/to/python3.exe' 'path to/youtube-dl/__main__.py'

Otherwise, you will get this error :

Cannot run program "youtube-dl" (in directory "/Users/my/beautiful/path"): error=2, No such file or directory

Since version 1.2+, Java 11 is required

Usage

Installation

You can use jitpack.io to add the library to your project.

how to use youtubedl-java

Gradle

Step 1 : Add jitpack repository to your build file

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

Step 2: Add the dependency

dependencies {
    compile 'com.github.CXwudi:youtubedl-java:1.+'
}

Make request

// Video url to download
String videoUrl = "https://www.youtube.com/watch?v=dQw4w9WgXcQ";

// Destination directory
String directory = System.getProperty("user.home");

// Build request
YoutubeDLRequest request = new YoutubeDLRequest(videoUrl, directory);
request.setOption("--ignore-errors");		// --ignore-errors
request.setOption("--output", "%(id)s");	// --output "%(id)s"
request.setOption("--retries", 10);		// --retries 10

// Make request and return response
YoutubeDLResponse response = YoutubeDL.execute(request);

// Response
String stdOut = response.getOut(); // Executable output

You may also specify a callback to get notified about the progress of the download:

YoutubeDLResponse response = YoutubeDL.execute(
    request, new LineOutputCallback() {
            @Override
            public void handleThisLine(String line) {
                System.out.println(line);
            }
        }, new LineOutputCallback() {
            @Override
            public void handleThisLine(String line) {
                System.err.println(line);
            }
        });

We also provide a special callback interface with regax to extract out the progress and etaInSecond

YoutubeDLResponse response = YoutubeDL.execute(
    request, new DownloadProgressCallback() {
            @Override
            public void onProgressUpdate(float progress, long etaInSeconds) {
                System.out.println(String.valueOf(progress) + "%");
            }
        }, new LineOutputCallback() {
            @Override
            public void handleThisLine(String line) {
                System.err.println(line);
            }
        });

For more usages, just scan through the implementation of YoutubeDL.java and YoutubeDLRequest.java classes

Links

youtubedl-java's People

Contributors

cxwudi avatar dreierf avatar lepouletsuisse avatar sapher avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.