Upload YouTube videos with caption through machines (via "youtubeuploader").
Do you want to:
Sample: "Pixelsphere OST (2017)".
setup
install
- Download for your OS from releases.
- Extract it to a directory and add the directory to
PATH
.
get client id
- Create an account on Google Cloud Platform.
- Create a new project, and select it.
- Enable YouTube Data API for the project.
- Add credentials to your project.
- Which API are you using?
YouTube Data API v3
. - Where will you be calling the API from?
Web server
. - What data will you be accessing?
User data
. - Select
What credentials do I need?
. - Create an OAuth 2.0 client ID.
- Name:
youtubeuploader
(your choice). - Authorized JavaScript origins:
http://localhost:8080
. - Authorized redirect URIs:
http://localhost:8080/oauth2callback
. - Select
Create OAuth client ID
. - Set up the OAuth 2.0 consent screen.
- Email address: (it should be correct).
- Product name shown to users:
youtubeuploader
(your choice). - Select
Continue
. - Download credentials.
- Select
Download
, then Done
. - Copy downloaded file (
client_id.json
) to a directory.
get client token
- Open console in the above directory.
- Run
youtubeuploader -v client_id.json
. - OAuth page will be opened in browser.
- Choose an account, videos will be uploaded here.
youtubeuploader
wants to access your Google Account.- Select
Allow
, and close browser window. client_token.json
should be created.
set environment variables
- Copy path of
client_id.json
. - Set environment variable
YOUTUBEUPLOADER_CLIENT_ID
to it. - Copy path of
client_token.json
. - Set environment variable
YOUTUBEUPLOADER_CLIENT_TOKEN
to it. - Now you can use youtubeuploader from any directory.
On Windows, use RapidEE to set environment variable.
export YOUTUBEUPLOADER_CLIENT_ID="[PATH TO client_id.json]"
export YOUTUBEUPLOADER_CLIENT_TOKEN="[PATH TO client_token.json]"
$env:YOUTUBEUPLOADER_CLIENT_ID="[PATH TO client_id.json]"
$env:YOUTUBEUPLOADER_CLIENT_TOKEN="[PATH TO client_token.json]"
console
youtubeuploader -v video.mp4
youtubeuploader -v video.mkv -ot "Me at the zoo" -od "The first video on YouTube..."
youtubeuploader -v video.mp4 -op public -l
youtubeuploader -ot "Me at the zoo"
youtubeuploader -i "jNQXAC9IVRw" -ot "Elephants at zoo"
youtubeuploader -i "jNQXAC9IVRw" -c "odia.txt" -ol "or"
reference
youtubeuploader [options]
$YOUTUBEUPLOADER_LOG
$YOUTUBEUPLOADER_VIDEO
$YOUTUBEUPLOADER_THUMBNAIL
$YOUTUBEUPLOADER_CAPTION
$YOUTUBEUPLOADER_META
$YOUTUBEUPLOADER_DESCRIPTIONPATH
$YOUTUBEUPLOADER_CLIENT_ID
$YOUTUBEUPLOADER_CLIENT_TOKEN
$YOUTUBEUPLOADER_TITLE
$YOUTUBEUPLOADER_DESCRIPTION
$YOUTUBEUPLOADER_TAGS
$YOUTUBEUPLOADER_LANGUAGE
$YOUTUBEUPLOADER_CATEGORY
$YOUTUBEUPLOADER_PRIVACYSTATUS
$YOUTUBEUPLOADER_EMBEDDABLE
$YOUTUBEUPLOADER_LICENSE
$YOUTUBEUPLOADER_PUBLICSTATSVIEWABLE
$YOUTUBEUPLOADER_PUBLISHAT
$YOUTUBEUPLOADER_RECORDINGDATE
$YOUTUBEUPLOADER_PLAYLISTIDS
$YOUTUBEUPLOADER_PLAYLISTTITLES
$YOUTUBEUPLOADER_LOCATION_LATITUDE
$YOUTUBEUPLOADER_LOCATION_LONGITUDE
$YOUTUBEUPLOADER_LOCATIONDESCRIPTION
$YOUTUBEUPLOADER_UPLOAD_CHUNK
$YOUTUBEUPLOADER_UPLOAD_RATE
$YOUTUBEUPLOADER_UPLOAD_TIME
$YOUTUBEUPLOADER_AUTH_PORT
$YOUTUBEUPLOADER_AUTH_HEADLESS
{
"title": "How Risky Is The Stock Market?",
"description": "Have you ever thought about investing ...",
"tags": ["stock marketing", "risk management"],
"privacyStatus": "public",
"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": "Bombay Stock Exchange",
"playlistIds": ["xxxxxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyyyyy"],
"playlistTitles": ["my test playlist"],
"language": "en"
}
package
const youtubeuploader = require('extra-youtubeuploader');
await youtubeuploader({video: 'video.mp4'})
await youtubeuploader({video: 'video.mkv', title: 'Me at the zoo',
description: 'The first video on YouTube...'});
youtubeuploader({video: 'video.mp4', privacystatus: 'public', log: true});
var ids = await youtubeuploader.lines({title: 'Me at the zoo'});
var id = ids[0];
await youtubeuploader({id, title: 'Elephants at zoo'});
await youtubeuploader({id, caption: 'odia.txt', language: 'or'});
reference
const youtubeuploader = require('extra-youtubeuploader');
youtubeuploader.lines(options={})
youtubeuploader(options={})
options = {
stdio: [0, 1, 2],
help: false,
version: false,
log: false,
id: '',
video: '',
thumbnail: '',
caption: '',
meta: '',
descriptionpath: '',
client: {
id: 'client_id.json',
token: 'client_token.json'
},
title: '<video>',
description: '<video>',
tags: '',
language: 'en',
category: 'people and blogs',
privacystatus: 'private',
embeddable: false,
license: '',
publicstatsviewable: false,
publishat: '',
recordingdate: '',
playlistids: '',
playlisttitles: '',
location: {
latitude: '',
longitude: '',
},
locationdescription: '',
upload: {
chunk: '',
rate: '',
time: ''
},
auth: {
port: '8080',
headless: false
}
}
similar
Do you need anything similar?
Suggestions are welcome. Please create an issue.