A Node.js CLI to easily transfer your videos from Vimeo to YouTube
Download all your videos from Vimeo with the push of a button, and upload them to YouTube with all their metadata.
- Highly customizable
- Download and upload videos in parallel
- Keep metadata
- Transfer directly without any disk write
- Node.js
>= 9
- Vimeo API keys: you must first create an application and create an access token
- YouTube API keys: follow the steps of the section "Step 1: Turn on the YouTube Data API" and download your API keys
- A good Internet connection
Clone this repo:
git clone https://github.com/hichamelkaddioui/vimeo-to-youtube
Install dependencies:
npm install
Create a .env
file based on .env.dist
, fill it with your API keys and run
npm start
You can set these variables either by editing the .env
file or by setting them before running the CLI. E.g.:
LOGGER_LEVEL=debug npm start
Data folder ($DATA_FOLDER
) and config folder ($CONFIG_FOLDER
) are resolved with platform-folders.
Key | Type | Description | Default |
---|---|---|---|
VIMEO_CLIENT_ID |
String |
The Client ID of your Vimeo application | Required |
VIMEO_CLIENT_SECRET |
String |
The Client Secret of your Vimeo application | Required |
VIMEO_ACCESS_TOKEN |
String |
A generated Access Token | Required |
VIMEO_VIDEOS_PER_PAGE |
Number |
The number of videos to fetch per request. More info here | 100 |
VIMEO_VIDEOS_FIELDS |
String |
The fields of the video object to filter from the Vimeo API. More info here | 'resource_key,name,description,tags,files,download,privacy,categories' |
Key | Type | Description | Default |
---|---|---|---|
YOUTUBE_CLIENT_ID |
String |
The Client ID of your YouTube application | Required |
YOUTUBE_PROJECT_ID |
String |
The Project ID of your YouTube application | Required |
YOUTUBE_AUTH_URI |
String |
OAuth2 auth URI | 'https://accounts.google.com/o/oauth2/auth' |
YOUTUBE_TOKEN_URI |
String |
OAuth2 token URI | 'https://www.googleapis.com/oauth2/v3/token' |
YOUTUBE_AUTH_PROVIDER_X509_CERT_URL |
String |
OAuth2 certs URL | 'https://www.googleapis.com/oauth2/v1/certs' |
YOUTUBE_CLIENT_SECRET |
String |
The Client Secret of your YouTube application | Required |
YOUTUBE_REDIRECT_URIS |
String |
OAuth2 redirect URIs | 'urn:ietf:wg:oauth:2.0:oob,http://localhost' |
YOUTUBE_TOKEN_PATH |
String |
The path of the file in which to store the access token | '$CONFIG_FOLDER/vimeo-to-youtube/youtube-oauth2-credentials.json' |
Key | Type | Description | Default |
---|---|---|---|
DB_FILENAME |
String |
The path of the local database file | '$DATA_FOLDER/vimeo-to-youtube/db/videos.db' |
DOWNLOAD_DEST |
String |
The path of the folder into which store the downloaded video files | '$DATA_FOLDER/vimeo-to-youtube/files' |
DOWNLOAD_PARALLEL_VIDEOS |
Number |
The number of videos to download in parallel | 3 |
UPLOAD_PARALLEL_VIDEOS |
Number |
The number of videos to upload in parallel | 10 |
LOGGER_LEVEL |
String |
The level of log to display | 'info' |