GithubHelp home page GithubHelp logo

fawazahmed0 / youtube-uploader Goto Github PK

View Code? Open in Web Editor NEW
332.0 11.0 82.0 1.06 MB

Free youtube video uploader with no limits

License: MIT License

TypeScript 100.00%
youtube youtubeuploader nolimits videos upload uploader hacktoberfest

youtube-uploader's Introduction

Youtube Videos Uploader

npm version


In the name of God, who has guided me to do this work

Note1: In case you find any issue, please raise an issue, So that I can fix it.

Please star this repo by clicking on ⭐ button above ↗️

Features:

  • No upload Limits (50+ videos/day limit set by youtube for every channel)
  • Free & Easy to use

Prerequisite:

Installation:

npm i youtube-videos-uploader

Youtube Setup:

  1. Go to your Google Security settings and note down your recovery email and delete recovery phone from your google settings
  2. Go to your Youtube settings and Setup your upload defaults Settings:

Upload Defaults Settings

Usage:

  • Uploading a Video:

import { upload } from 'youtube-videos-uploader' //Typescript
//OR
const { upload } = require('youtube-videos-uploader'); //vanilla javascript

// recoveryemail is optional, only required to bypass login with recovery email if prompted for confirmation
const credentials = { email: 'Your Email', pass: 'Your Password', recoveryemail: 'Your Recovery Email' }

// minimum required options to upload video
const video1 = { path: 'video1.mp4', title: 'title 1', description: 'description 1' }

const onVideoUploadSuccess = (videoUrl) => {
    // ..do something..
}
// Extra options like tags, thumbnail, language, playlist etc
const video2 = { path: 'video2.mp4', title: 'title 2', description: 'description 2', thumbnail:'thumbnail.png', language: 'english', tags: ['video', 'github'], playlist: 'playlist name', channelName: 'Channel Name', onSuccess:onVideoUploadSuccess, skipProcessingWait: true, onProgress: (progress) => { console.log('progress', progress) }, uploadAsDraft: false, isAgeRestriction: false, isNotForKid: false, publishType: 'PUBLIC', isChannelMonetized: false }


// Returns uploaded video links in array
upload (credentials, [video1, video2]).then(console.log)

// OR
// This package uses Puppeteer, you can also pass Puppeteer launch configuration
upload (credentials, [video1, video2], {headless:false}).then(console.log)

// Refer Puppeteer documentation for more launch configurations like proxy etc
// https://pptr.dev/#?product=Puppeteer&version=main&show=api-puppeteerlaunchoptions

       Output:

[ 'https://youtu.be/fh2Kreex5Eg', 'https://youtu.be/fh2Krefx5Eg' ]
  • Updating Metadata of a Youtube Video:

import { update } from 'youtube-videos-uploader' //Typescript
//OR
const { update } = require('youtube-videos-uploader'); //vanilla javascript
 
const credentials = { email: 'Your Email', pass: 'Your Password', recoveryemail: 'Your Recovery Email' }
  
const videoUpdate1 = { link: 'https://www.youtube.com/watch?v=w3jLJU7DT5E', title: 'Your New Title' }

const onVideoUpdateSuccess = (videoUrl) => {
   // ..do something..
}
// Extra options like tags, thumbnail, language, playlist etc
const videoUpdate2 = { link: 'https://www.youtube.com/watch?v=w3jLJU7DT5E', title: 'title 2', description: 'description 2', thumbnail: 'thumbnail.png', language: 'english', tags: ['video', 'github'], replaceTags: ['mytag'], playlist: 'playlist name', channelName: 'Channel Name', publishType: 'unlisted', publishToSubscriptionFeedAndNotifySubscribers: false , onSuccess: onVideoUpdateSuccess }

update(credentials, [videoUpdate1, videoUpdate2]).then(console.log)
// OR
update(credentials, [videoUpdate1, videoUpdate2], { headless: false }).then(console.log)
 
  • Making a comment to youtube video:

import { comment } from 'youtube-videos-uploader' //Typescript
//OR
const { comment } = require('youtube-videos-uploader'); //vanilla javascript
 
const credentials = { email: 'Your Email', pass: 'Your Password', recoveryemail: 'Your Recovery Email' }
  
const comment1 = { link: 'https://www.youtube.com/watch?v=jEevRjRglFY', comment: 'Your comment', pin: false }

comment(credentials, [comment1]).then(console.log)  
//OR
comment(credentials, [comment1], {headless:false}).then(console.log)

Contributors 🎉:



youtube-uploader's People

Contributors

a11rew avatar bmarotta avatar charan0017 avatar classaxion avatar coooo77 avatar daddyfrosty avatar dement6d avatar dominicfindlay avatar dorisentomari avatar fawazahmed0 avatar hotrungnhan avatar italodeandra avatar l1teleau avatar lhjt avatar mend-bolt-for-github[bot] avatar nhantamz avatar peterstegarus avatar pierreminiggio avatar renovate-bot avatar s0ubhik avatar sacredrel1c avatar salesawy1 avatar tentaclesama4254 avatar tiagoseverino avatar tueenguyen avatar zebraslive avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

youtube-uploader's Issues

TimeoutError on password selector and some advices

Hello:
I found this repo, and want to give it a trial, I got the timeout error:

D:\nodejs\youtube>node Upload1Video.js
D:\nodejs\youtube\node_modules\puppeteer\lib\cjs\puppeteer\common\DOMWorld.js:513
const timeoutError = new Errors_js_1.TimeoutError(waiting for ${options.title} failed: timeout ${options.timeout}ms exceeded);
^

TimeoutError: waiting for selector input[type="password"]:not([aria-hidden="true"]) failed: timeout 60000ms exceeded
at new WaitTask (D:\nodejs\youtube\node_modules\puppeteer\lib\cjs\puppeteer\common\DOMWorld.js:513:34)
at DOMWorld.waitForSelectorInPage (D:\nodejs\youtube\node_modules\puppeteer\lib\cjs\puppeteer\common\DOMWorld.js:424:26)
at Object.internalHandler.waitFor (D:\nodejs\youtube\node_modules\puppeteer\lib\cjs\puppeteer\common\QueryHandler.js:31:77)
at DOMWorld.waitForSelector (D:\nodejs\youtube\node_modules\puppeteer\lib\cjs\puppeteer\common\DOMWorld.js:317:29)
at Frame.waitForSelector (D:\nodejs\youtube\node_modules\puppeteer\lib\cjs\puppeteer\common\FrameManager.js:841:51)
at Page.waitForSelector (D:\nodejs\youtube\node_modules\puppeteer\lib\cjs\puppeteer\common\Page.js:2313:33)
at login (D:\nodejs\youtube\node_modules\youtube-videos-uploader\upload.js:257:19)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async upload (D:\nodejs\youtube\node_modules\youtube-videos-uploader\upload.js:101:7)

D:\nodejs\youtube>npm list
[email protected] D:\nodejs\youtube
`-- [email protected]

From my understanding, you are using Puppeteer, which was developed by Google. So, google has the way to detect you are using Puppeteer. Therefore, I suggest that you can use MS Playwright, which is almost the same and in some extent better alternative for Puppeteer.
Thanks,

question

Hi my friend
I will try your youtube uploader. I have made through API but unfortunately i get error, that the terms & conditions are violated. I believe is because my upload app is unverified. WIth yours i will have that issue?

Waiting for processing

For slightly longer videos (>1hour) the programme stops after uploading the video and thumbnail without entering the rest of the info (promt:'video upload complete, processing will begin shortly').

Eventually the programme times out without entering in the rest of the info and the video goes into draft

I think it's good to add a another route to enter in the info if the waiting takes too long and let youtube finish the processing later

Duplicate playlists

The playlist maker can't find the searched playlist so it keeps making new onesIMG-20210713-WA0143.jpg

waiting for file chooser failed: timeout 60000ms exceeded

UnhandledPromiseRejectionWarning: TimeoutError: waiting for waiting for file chooser failed: timeout 60000ms exceeded
at Object.waitWithTimeout (/app/node_modules/puppeteer/lib/cjs/puppeteer/common/helper.js:224:26)
2021-11-17T02:09:27.466319+00:00 app[worker.1]: at Page.waitForFileChooser (/app/node_modules/puppeteer/lib/cjs/puppeteer/common/Page.js:269:14)
2021-11-17T02:09:27.466320+00:00 app[worker.1]: at runMicrotasks ()
2021-11-17T02:09:27.466321+00:00 app[worker.1]: at processTicksAndRejections (internal/process/task_queues.js:95:5)
2021-11-17T02:09:27.466321+00:00 app[worker.1]: (Use node --trace-warnings ... to show where the warning was created)
2021-11-17T02:09:27.466358+00:00 app[worker.1]: (node:4) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
2021-11-17T02:09:27.466361+00:00 app[worker.1]: (node:4) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Followed all the setup steps and got this

New Feature : onSuccess function, as an optional argument in videoConfig

Requesting for the feature for onSuccess function

I need to perform some tasks on each video after its upload is complete.
As videos are uploaded in bulk and then it will return all the video Links.
So I need to wait for all videos the complete the upload process and then perform my tasks on each uploaded video link.
The problem comes with the Waiting Time.
Since I was uploading huge videos (each video length is 3 to 4 hrs), so let's say I upload 10 videos, and with my moderate internet speed, it takes around 2hrs. But in the meantime, if my internet goes off, the whole process is dismissed.

So, you can implement an optional option of onSuccess, which is 'function' type.
And you can check and run it at the end of each video upload complete, however, you may have to provide the Uploaded videoUrl as an argument to the onSuccess(videoUrl) function.
Also, you can leave it if the argument is not the required type (function).
And also, you can

Before

const onVideoUploadSuccess = (videoUrl) => {
    // ..do something..
}

const videoConfig1 = { path: 'video1.mp4', title: 'title 1', description: 'description 1' }
.
.
const videoConfig200 = { path: 'video2.mp4', title: 'title 2', description: 'description 2' }

const videoUrls = await upload(credentials, [videoConfig1, .., videoConfig200], puppeteerConfig)

for (const videoUrl of videoUrls) {
    onVideoUploadSuccess(videoUrl);
}
console.log('Done!');

After

const onVideoUploadSuccess = (videoUrl) => {
    // ..do something..
}

const videoConfig1 = { path: 'video1.mp4', title: 'title 1', description: 'description 1', onSuccess: onVideoUploadSuccess  }
.
.
const videoConfig200 = { path: 'video2.mp4', title: 'title 2', description: 'description 2', onSuccess: onVideoUploadSuccess }

await upload(credentials, [videoConfig1, .., videoConfig200], puppeteerConfig)
console.log('Done!');

Add support for international language

During login, choose the English (UK ) language, for the uploading script to work

Also, update the readme, and remove the unwanted language change requiremtns steps, as this will not be required and doesn't even work anyways

#12 (comment)

install jsnode & script

Hi
I have establish to install jsnode. I don't know where to run the code provided in your instructions. How can i run it? I am in the terminal i am doing node upload.js but not working. I am doing for sure something wrong. Please give more begginer instructions

CVE-2021-26707 (Medium) detected in merge-deep-3.0.2.tgz - autoclosed

CVE-2021-26707 - Medium Severity Vulnerability

Vulnerable Library - merge-deep-3.0.2.tgz

Recursively merge values in a javascript object.

Library home page: https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz

Path to dependency file: youtube-uploader/package.json

Path to vulnerable library: youtube-uploader/node_modules/merge-deep/package.json

Dependency Hierarchy:

  • puppeteer-extra-plugin-stealth-2.6.5.tgz (Root Library)
    • puppeteer-extra-plugin-3.1.7.tgz
      • merge-deep-3.0.2.tgz (Vulnerable Library)

Found in base branch: main

Vulnerability Details

A flaw was found in merge-deep before 3.0.3. A prototype pollution issue of Object.prototype via a constructor payload may lead to denial of service and other consequences.

Publish Date: 2021-02-05

URL: CVE-2021-26707

CVSS 3 Score Details (5.3)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: None
    • Integrity Impact: Low
    • Availability Impact: None

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://bugzilla.redhat.com/show_bug.cgi?id=1922259

Release Date: 2021-02-05

Fix Resolution: 3.0.3


Step up your Open Source Security Game with WhiteSource here

This no longer works

This no longer bypasses the limit from my own experimenting,
is it possible for you to fix this?

[DepShield] (CVSS 5.3) Vulnerability due to usage of ws:7.4.1

Vulnerabilities

DepShield reports that this application's usage of ws:7.4.1 results in the following vulnerability(s):


Occurrences

ws:7.4.1 is a transitive dependency introduced by the following direct dependency(s):

puppeteer:5.5.0
        └─ ws:7.4.1

This is an automated GitHub Issue created by Sonatype DepShield. Details on managing GitHub Apps, including DepShield, are available for personal and organization accounts. Please submit questions or feedback about DepShield to the Sonatype DepShield Community.

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Error type: undefined. Note: this is a nested preset so please contact the preset author if you are unable to fix it yourself.

Error with the tags

e_modules/youtube-videos-uploader/node_modules/puppeteer/lib/cjs/puppeteer/common/assert.js:26
throw new Error(message);
^

Error: No node found for selector: [placeholder="Add tag"]
at Object.assert (/home/tentaclesama/Downloads/Files/rAqua/node_modules/youtube-videos-uploader/node_modules/puppeteer/lib/cjs/puppeteer/common/assert.js:26:15)
at DOMWorld.focus (/home/tentaclesama/Downloads/Files/rAqua/node_modules/youtube-videos-uploader/node_modules/puppeteer/lib/cjs/puppeteer/common/DOMWorld.js:283:21)
at runMicrotasks ()
at processTicksAndRejections (node:internal/process/task_queues:93:5)
at async uploadVideo (/home/tentaclesama/Downloads/Files/rAqua/node_modules/youtube-videos-uploader/upload.js:228:5)
at async upload (/home/tentaclesama/Downloads/Files/rAqua/node_modules/youtube-videos-uploader/upload.js:60:18)

TimeoutError on password selector

After not having used this package for a few weeks, I just tried to use it once again.
But unfortunately every request I do gets timed out while waiting for an input selector.

(I am running the 1.3.22 version)

Stack:
(node:6664) UnhandledPromiseRejectionWarning: TimeoutError: waiting for selector input[type="password"]:not([aria-hidden="true"]) failed: timeout 60000ms exceeded at new WaitTask (C:\Users\jason\Desktop\youtube bot\node_modules\puppeteer\lib\cjs\puppeteer\common\DOMWorld.js:509:34) at DOMWorld.waitForSelectorInPage (C:\Users\jason\Desktop\youtube bot\node_modules\puppeteer\lib\cjs\puppeteer\common\DOMWorld.js:420:26) at Object.internalHandler.waitFor (C:\Users\jason\Desktop\youtube bot\node_modules\puppeteer\lib\cjs\puppeteer\common\QueryHandler.js:31:77) at DOMWorld.waitForSelector (C:\Users\jason\Desktop\youtube bot\node_modules\puppeteer\lib\cjs\puppeteer\common\DOMWorld.js:313:29) at Frame.waitForSelector (C:\Users\jason\Desktop\youtube bot\node_modules\puppeteer\lib\cjs\puppeteer\common\FrameManager.js:841:51) at Page.waitForSelector (C:\Users\jason\Desktop\youtube bot\node_modules\puppeteer\lib\cjs\puppeteer\common\Page.js:2252:33) at login (C:\Users\jason\Desktop\youtube bot\node_modules\youtube-videos-uploader\upload.js:257:19) at runMicrotasks (<anonymous>) at processTicksAndRejections (internal/process/task_queues.js:93:5) at async upload (C:\Users\jason\Desktop\youtube bot\node_modules\youtube-videos-uploader\upload.js:101:7)

Planning phase

  • Make similar structure (60mins)
  • translated xpath (15mins) (only language name etc)
  • testing (15mins)
  • create node module
  • documentation (also add images, good examples, donate link) (20mins)
  • publish to npm (auto if possible) (30mins)
  • PR (15mins)
  • Retrospective (30mins)

[feature request]: Schedule videos

Could you add a feature for a uploadAt paramater?

The uploadAt paramater would be an optional paramater indicating at what date the video should be scheduled.
This is achievable using YouTube's 'Schedule' functionality.

Dependency Dashboard

This issue provides visibility into Renovate updates and their statuses. Learn more

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.


  • Check this box to trigger a request for Renovate to run again on this repository

[feature request] save coockies

Insted of logging in everytime why don't you save the auth data into puppeteer after the first login?

My Google security is getting suspicious after so many logins

Select YouTube channel

I have 2 channels linked to my account. The package uses the wrong one, I guess it's because that one is set to my default channel for my email address. However, I can't set my other channel to the default one because the setting somehow doesn't change (https://www.youtube.com/account_advanced)

EDIT: please add a feature to select the youtube account

TypeError: tags.join is not a function

when I upload the videos more than six hours, it reports error as following :
(node:3864213) UnhandledPromiseRejectionWarning: TypeError: tags.join is not a function
at /home/zch/node_modules/youtube-videos-uploader/dist/upload.js:175:57
at Generator.next ()
at fulfilled (/home/zch/node_modules/youtube-videos-uploader/dist/upload.js: 5:58)
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:3864213) UnhandledPromiseRejectionWarning: Unhandled promise rejection. Th is error originated either by throwing inside of an async function without a cat ch block, or by rejecting a promise which was not handled with .catch(). (reject ion id: 1).It can only upload one vidow as draft,How can I fix this,Thanks for answering.

It fails right after loging in

It successfully logs in (Changed headless to "false" to see what's going on), but then fails to start he upload process, here is my console trace :

TimeoutError: waiting for XPath //*[normalize-space(text())='Select files'] failed: timeout 60
000ms exceeded
at new WaitTask (F:\dev\youtube-uploader\node_modules\puppeteer\lib\cjs\puppeteer\common\DOM
World.js:509:34)
at DOMWorld.waitForXPath (F:\dev\youtube-uploader\node_modules\puppeteer\lib\cjs\puppeteer\c
ommon\DOMWorld.js:445:26)
at Frame.waitForXPath (F:\dev\youtube-uploader\node_modules\puppeteer\lib\cjs\puppeteer\comm
on\FrameManager.js:865:51)
at Page.waitForXPath (F:\dev\youtube-uploader\node_modules\puppeteer\lib\cjs\puppeteer\commo
n\Page.js:2289:33)
at login (F:\dev\youtube-uploader\upload.js:107:21)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async upload (F:\dev\youtube-uploader\upload.js:52:5)
Error: Protocol error (Runtime.callFunctionOn): Target closed.
at F:\dev\youtube-uploader\node_modules\puppeteer\lib\cjs\puppeteer\common\Connection.js:217
:63
at new Promise ()
at CDPSession.send (F:\dev\youtube-uploader\node_modules\puppeteer\lib\cjs\puppeteer\common
Connection.js:216:16)
at next (F:\dev\youtube-uploader\node_modules\puppeteer-extra-plugin-stealth\evasions\source
url\index.js:32:41)
at CDPSession.send (F:\dev\youtube-uploader\node_modules\puppeteer-extra-plugin-stealth\evas
ions\sourceurl\index.js:65:16)
at ExecutionContext._evaluateInternal (F:\dev\youtube-uploader\node_modules\puppeteer\lib\cj
s\puppeteer\common\ExecutionContext.js:204:50)
at ExecutionContext.evaluateHandle (F:\dev\youtube-uploader\node_modules\puppeteer\lib\cjs\p
uppeteer\common\ExecutionContext.js:155:21)
at WaitTask.rerun (F:\dev\youtube-uploader\node_modules\puppeteer\lib\cjs\puppeteer\common\D
OMWorld.js:532:37)
Error: Protocol error (Runtime.callFunctionOn): Session closed. Most likely the page has been cl
osed.
at CDPSession.send (F:\dev\youtube-uploader\node_modules\puppeteer\lib\cjs\puppeteer\common
Connection.js:208:35)
at next (F:\dev\youtube-uploader\node_modules\puppeteer-extra-plugin-stealth\evasions\source
url\index.js:32:41)
at CDPSession.send (F:\dev\youtube-uploader\node_modules\puppeteer-extra-plugin-stealth\evas
ions\sourceurl\index.js:65:16)
at ExecutionContext._evaluateInternal (F:\dev\youtube-uploader\node_modules\puppeteer\lib\cj
s\puppeteer\common\ExecutionContext.js:204:50)
at ExecutionContext.evaluateHandle (F:\dev\youtube-uploader\node_modules\puppeteer\lib\cjs\p
uppeteer\common\ExecutionContext.js:155:21)
at WaitTask.rerun (F:\dev\youtube-uploader\node_modules\puppeteer\lib\cjs\puppeteer\common\D
OMWorld.js:532:37)

Major problems with Brand Accounts.

As the title says your unable to automate switching to a brand account due to them not showing up on the channel_switcher page. You can, however, switch to a brand account still by manually clicking on your avatar and going to "Switch Account" due to upload.js clicking on elements that have "channelname" in it.

However that isn't where the issues end, when I'm on the brand account I get booted off when I'm redirected to the upload page, the upload still goes on though which causes the upload to be done on the wrong account which is pretty annoying.

Can you make small video about "How to run?"

I am new to working with nodes/tool/cmd
Can you please make very small basic video regarding how to run script.. specially the "Usage" section
this will help a lot to get things going forward!

Thanks

Use of cookies to store auth

Hi there! Good stuff over here :)

It would be nice if we could store the session/auth cookie and reload it (if it exists).

I'll take a look myself, and if I can figure it out, I'll give you a shout.

Thanks.

Showing captcha during login

I've one my Youtube Accounts that stoped uploading and his stuck on this window :
image

My Google account settings seem correct (no recovery phone number, and 1 recovery email address)

Added some console logs to see where it goes wrong. And looks like it fails to handle the recovery email input correctly.

logging in
lang
email
pass
enter
TimeoutError: waiting for selector `ytcp-uploads-dialog` failed: timeout 60000ms exceeded
    at new WaitTask (/var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/DOMWorld.js:509:34)
    at DOMWorld.waitForSelectorInPage (/var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/DOMWorld.js:420:26)
    at Object.internalHandler.waitFor (/var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/QueryHandler.js:31:77)
    at DOMWorld.waitForSelector (/var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/DOMWorld.js:313:29)
    at Frame.waitForSelector (/var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/FrameManager.js:841:51)
    at Page.waitForSelector (/var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/Page.js:2252:33)
    at login (/var/www/html/youtube-poster-api/node_modules/youtube-videos-uploader/upload.js:258:21)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async upload (/var/www/html/youtube-poster-api/node_modules/youtube-videos-uploader/upload.js:91:5)
confirming recovery email
entering recovery email adress
TimeoutError: Navigation timeout of 60000 ms exceeded
    at /var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/LifecycleWatcher.js:106:111
    at async FrameManager.waitForFrameNavigation (/var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/FrameManager.js:127:23)
    at async Frame.waitForNavigation (/var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/FrameManager.js:440:16)
    at async Page.waitForNavigation (/var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/Page.js:1211:16)
    at async securityBypass (/var/www/html/youtube-poster-api/node_modules/youtube-videos-uploader/upload.js:287:5)
    at async login (/var/www/html/youtube-poster-api/node_modules/youtube-videos-uploader/upload.js:262:5)
    at async upload (/var/www/html/youtube-poster-api/node_modules/youtube-videos-uploader/upload.js:91:5)
Login failed trying again to login
lang
email
(node:1492583) UnhandledPromiseRejectionWarning: TimeoutError: Navigation timeout of 60000 ms exceeded
    at /var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/LifecycleWatcher.js:106:111
    at async FrameManager.waitForFrameNavigation (/var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/FrameManager.js:127:23)
    at async Frame.waitForNavigation (/var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/FrameManager.js:440:16)
    at async Page.waitForNavigation (/var/www/html/youtube-poster-api/node_modules/puppeteer/lib/cjs/puppeteer/common/Page.js:1211:16)
    at async login (/var/www/html/youtube-poster-api/node_modules/youtube-videos-uploader/upload.js:242:3)
    at async upload (/var/www/html/youtube-poster-api/node_modules/youtube-videos-uploader/upload.js:96:5)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:1492583) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:1492583) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Uncaught TypeError: Cannot convert undefined or null to object

I'm new to this. Can you help me with this problem
node -v
v6.17.1
npm -v
3.10.10
`> upload (credentials,video1).then(console.log)
Promise { }

Uncaught TypeError: Cannot convert undefined or null to object
at Function.keys ()
at getKeys (/root/youtubeup/youtube-uploader/node_modules/deepmerge/dist/cjs.js:61:16)
at mergeObject (/root/youtubeup/youtube-uploader/node_modules/deepmerge/dist/cjs.js:86:2)
at deepmerge (/root/youtubeup/youtube-uploader/node_modules/deepmerge/dist/cjs.js:117:10)
at PuppeteerExtra.launch (/root/youtubeup/youtube-uploader/node_modules/puppeteer-extra/dist/index.cjs.js:117:19)
at launchBrowser (/root/youtubeup/youtube-uploader/node_modules/youtube-videos-uploader/upload.js:213:29)
at upload (/root/youtubeup/youtube-uploader/node_modules/youtube-videos-uploader/upload.js:77:9)
`

unsupported browser error on heroku

in the the edit() function i have an 'unsupported browser error' while running headless on heroku
cant seem to get the xpaths/selector of the skip to studio button since it only appears while headless is true and on heroku
g

Allow to pass args to puppeteer

For my usecase I'll need to pass a few args, like the "--no-sandbox" arg, and and the proxy URL arg.
Tomorrow I'll create a PR to allow to pass puppeteer args as parameters

Better debug messages

Print better debug/error messages, so that user can easily understand the issue & solve it

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.