Giter Club home page Giter Club logo

gotube's Introduction

gotube build status LICENSE 996.icu

Gotube is a YouTube downloader using golang. golang (go language) is a new light-weight language developed by Google, it provides not only many powerful libraries, but also a simple multi-threading syntax.

This tool is an easy way to download any non-age-restricted videos in YouTube. You can also perform batch downloading by keywords via search function. Gotube will generate a number of go-routines (no more than the number of your CPU cores) to download multiple videos simultaneously.

Installation

  • Install go from https://golang.org/
  • Set up go environment as in https://golang.org/doc/install
    • (For Un*x users)
      • export GOPATH=$HOME/path/to/workspace/
      • export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
    • (For Windows users)
      • In environment variables add GOPATH=path/to/workspace/
      • Append path/to/workspace/bin to PATH
  • For command-line usage
    • Type the following in command/terminal
      • go get github.com/KeluDiao/gotube
      • gotube -h
  • For library usage
    • You don't need to do anything

Command-line usage

You can check the video list from a url or video id:

gotube -l -url https://www.youtube.com/watch?v=C0DPdy98e4c

Filter the video list by specifying video quality:

gotube -l -id C0DPdy98e4c -q medium

Download the video with default resolution:

gotube -d -url https://www.youtube.com/watch?v=C0DPdy98e4c

Download the video with specified resolution:

gotube -d -id C0DPdy98e4c -q medium -ext video/mp4

Specify a video repository using relative path:

gotube -d -id C0DPdy98e4c -q medium -ext video/mp4 -rep ./videos

Specify a video repository using absolute path (If you are a Windows user, I highly recommend you using absolute path, or the videos may be downloaded into your users folder):

gotube -d -id C0DPdy98e4c -q medium -ext video/mp4 -rep /Users/yourusername/Documents/videos

Specify the video filename:

gotube -d -id C0DPdy98e4c -f test.mp4 -q medium -ext video/mp4 -rep ./videos

Try search by keywords and see what would return:

gotube -l -s "curry highlights"

Try get more results by querying top k results explicitly (If k is larger than the number of all videos return, the program would return all the videos):

gotube -l -s "curry highlights" -k 5

Download all of them:

gotube -d -s "curry highlights" -k 5 -rep /Users/yourusername/Documents/videos

Library usage

package main

import (
  . "github.com/KeluDiao/gotube/api"
  "log"
)

func main() {
	idList := [...]string{"shLTrG_noKo", "Ojv7tKpzkyM", "GahnMbhmt7g"}
	rep := "Curry_highlights"
	for _, id := range idList {
		vl, err := GetVideoListFromId(id)
		if err != nil {
			log.Fatal(err)
		}
		err = vl.Download(rep, "", "video/mp4")
		if err != nil {
			log.Fatal(err)
		}
	}
}

You can also check the file "script.go" to see how to call other APIs.

This program is still under-developing. More interesting functionalities will be added into it soon!

Bug Reporting

  • For reporting bugs please use the gotube/issues page.
  • We are looking forward to pull requests from everybody through gotube/pulls.

License

© Contributors, 2015. Licensed under Anti-996 license, in support to the anti 996 movement. This project was initially developed by Kelu Diao

gotube's People

Contributors

alexanderdavidpan avatar lukecold 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.