All Projects → porjo → Youtubeuploader

porjo / Youtubeuploader

Licence: apache-2.0
Scripted uploads to Youtube

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Youtubeuploader

android-youtube-dl
The android library that wraps Python 2.7 and youtube-dl python scripts
Stars: ✭ 35 (-89.86%)
Mutual labels:  youtube-api
YT-Together
Simple react application, for synchronizing multiple client's YouTube-IFrames
Stars: ✭ 23 (-93.33%)
Mutual labels:  youtube-api
ytqck.github.io
YouTube quick ⚡ Search and Download Music for Free.
Stars: ✭ 18 (-94.78%)
Mutual labels:  youtube-api
suchtube
🔍 📼 YouTube search as a service, with Slack integration and CLI
Stars: ✭ 25 (-92.75%)
Mutual labels:  youtube-api
kaec-app
An Apache Flex mobile app that uses the Youtube V3 API, Foursquare API, Flickr API and RSS feeds.
Stars: ✭ 12 (-96.52%)
Mutual labels:  youtube-api
GraphiPy
GraphiPy: Universal Social Data Extractor
Stars: ✭ 61 (-82.32%)
Mutual labels:  youtube-api
youtube-playlist
❄️ Extract links, ids, and names from a youtube playlist
Stars: ✭ 73 (-78.84%)
Mutual labels:  youtube-api
Multistreamer
[discontinued] A webapp for publishing video to multiple streaming services at once.
Stars: ✭ 281 (-18.55%)
Mutual labels:  youtube-api
yt-migrate
Import all your YouTube subscriptions from one account to another
Stars: ✭ 83 (-75.94%)
Mutual labels:  youtube-api
youtube-deno
A Deno client library of the YouTube Data API.
Stars: ✭ 30 (-91.3%)
Mutual labels:  youtube-api
vuletube
Starter project for vue in combination with typescript. Getting response for youtube search. Call server part for saving videos. Use videos in three.js 3d port view. Control vuletube site with hands (NUI) also with voice command.
Stars: ✭ 12 (-96.52%)
Mutual labels:  youtube-api
yt-videos-list
Create and **automatically** update a list of all videos on a YouTube channel (in txt/csv/md form) via YouTube bot with end-to-end web scraping - no API tokens required. Multi-threaded support for YouTube videos list updates.
Stars: ✭ 64 (-81.45%)
Mutual labels:  youtube-api
benjamincarlson.io
My personal website built with Next.js, Chakra UI, Firebase, and next-mdx-remeote.
Stars: ✭ 102 (-70.43%)
Mutual labels:  youtube-api
youtube-upload-multi-videos
Youtube Uploader: auto upload multiple youtube videos 批量自动上传youtube视频
Stars: ✭ 38 (-88.99%)
Mutual labels:  youtube-api
youtube-playlist-json
Returns JSON of Youtube Playlist using YouTube Data API v3
Stars: ✭ 14 (-95.94%)
Mutual labels:  youtube-api
python-youtube-music
Python 3 YouTube Music Web API Client
Stars: ✭ 39 (-88.7%)
Mutual labels:  youtube-api
youtube-music-player
Mini music player for website
Stars: ✭ 16 (-95.36%)
Mutual labels:  youtube-api
Mintube
Minimized / Floating YouTube for Android
Stars: ✭ 282 (-18.26%)
Mutual labels:  youtube-api
MiniYoutube-ReactJS
ReactJS youtube like app using youtube API
Stars: ✭ 13 (-96.23%)
Mutual labels:  youtube-api
popyt
A very easy to use Youtube Data v3 API wrapper.
Stars: ✭ 42 (-87.83%)
Mutual labels:  youtube-api

Youtube Uploader

Scripted uploads to youtube.

  • upload video files from local disk or from the web.
  • ratelimit upload bandwidth

Download

Grab a precompiled binary for Linux, Mac or Windows or build it yourself.

Setup

Youtube API

Talking to the Youtube API requires oauth2 authentication. As such, you must:

  1. Create an account on the Google Developers Console
  2. Register a new app there
  3. Enable the Youtube API (APIs & Services -> Enable APIs and Services)
  4. Create Client ID (APIs & Auth -> Credentials -> Create Credentials), select 'Oauth client ID', select type 'Web application'
  5. Add an 'Authorized redirect URI' of 'http://localhost:8080/oauth2callback'
  6. Download the client secrets JSON file (click download icon next to newly created client ID) and save it as file client_secrets.json in the same directory as the utility e.g.
{
  "web": {
    "client_id": "xxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
    "project_id": "youtubeuploader-yyyyy",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_secret": "xxxxxxxxxxxxxxxxxxxx",
    "redirect_uris": [
      "http://localhost:8080/oauth2callback"
    ]
  }
}

Usage

At a minimum, just specify a filename:

./youtubeuploader -filename blob.mp4

If it is the first time you've run the utility, a browser window should popup and prompt you to provide Youtube credentials. A token will be created and stored in request.token file in the local directory for subsequent use. To run the utility on a headless-server, generate the token file locally first, then simply copy the token file along with youtubeuploader and client_secrets.json to the remote host.

Full list of options:

  -cache string
    	token cache file (default "request.token")
  -caption string
    	caption filename. Can be a URL
  -categoryId string
    	video category Id
  -chunksize int
    	size (in bytes) of each upload chunk. A zero value will cause all data to be uploaded in a single request (default 16777216)
  -description string
    	video description (default "uploaded by youtubeuploader")
  -filename string
    	video filename. Can be a URL. Read from stdin with '-'
  -headlessAuth
    	set this if no browser available for the oauth authorisation step
  -language string
    	video language (default "en")
  -limitBetween string
    	only rate limit between these times e.g. 10:00-14:00 (local time zone)
  -metaJSON string
    	JSON file containing title,description,tags etc (optional)
  -metaJSONout string
    	filename to write uploaded video metadata into (optional)
  -notify
    	notify channel subscribers of new video (default true)
  -oAuthPort int
    	TCP port to listen on when requesting an oAuth token (default 8080)
  -privacy string
    	video privacy status (default "private")
  -quiet
    	suppress progress indicator
  -ratelimit int
    	rate limit upload in Kbps. No limit by default
  -secrets string
    	Client Secrets configuration (default "client_secrets.json")
  -tags string
    	comma separated list of video tags
  -thumbnail string
    	thumbnail filename. Can be a URL
  -title string
    	video title
  -version
    	show version

NOTE: When specifying a URL as the filename, the data will be streamed through the localhost (download from remote host, then upload to Youtube)

Metadata

Video title, description etc can specified via the command line flags or via a JSON file using the -metaJSON flag. An example JSON file would be:

{
  "title": "my test title",
  "description": "my test description",
  "tags": ["test tag1", "test tag2"],
  "privacyStatus": "private",
  "madeForKids": "false",
  "embeddable": true,
  "license": "creativeCommon",
  "publicStatsViewable": true,
  "publishAt": "2017-06-01T12:05:00+02:00",
  "categoryId": "10",
  "recordingdate": "2017-05-21",
  "location": {
    "latitude": 48.8584,
    "longitude": 2.2945
  },
  "locationDescription":  "Eiffel Tower",
  "playlistIds":  ["xxxxxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyyyyy"],
  "playlistTitles":  ["my test playlist"],
  "language":  "fr"
}
  • all fields are optional. Command line flags will be used by default (where available)
  • use \n in the description to insert newlines
  • times can be provided in one of two formats: yyyy-mm-dd (UTC) or yyyy-mm-ddThh:mm:ss+zz:zz

Alternative Oauth setup for headless clients

If you do not have access to a web browser on the host where youtubeuploader is installed, you may follow this oauth setup method instead:

  1. Create an account on the Google Developers Console
  2. Register a new app there
  3. Enable the Youtube API (APIs & Auth -> APIs)
  4. Go to the YouTube API's Credentials section, click "Create credentials" of type "OAuth client ID", select Application Type 'Other' and name it something like "youtubeuploader"; once created click the download (JSON) button in the list and saving it as client_secrets.json in the youtubeuploader directory
  5. Run youtubeuploader for the first time, passing the -headlessAuth parameter
  6. Copy-and-paste the URL displayed and open that in a browser
  7. Copy the resulting authorisation code and paste that into the youtubeuploader prompt: "Enter authorisation code here:"

(subsequent invocations of youtubeuploader do not require the -headlessAuth parameter)

Credit

Based on Go Youtube API Sample code

Thanks to github.com/tokland/youtube-upload for insight into how to update playlists.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].