MrBrax / LiveStreamDVR

An automatic livestream recorder
MIT License
350 stars 26 forks source link

youtube export #455

Closed Serph91P closed 1 year ago

Serph91P commented 1 year ago

Is it normal that after 4 video upload the api query limit of 10.000 is hit? image searched a bit and this query limit can be increased but takes time and you have to explain why.

MrBrax commented 1 year ago

yeah that looks alright, there's a list of actions and uploading is quite costly. in general you just gotta pay to get more i think, but i haven't tried verifying my channel for the extended api usage either

Serph91P commented 1 year ago

yeah that looks alright, there's a list of actions and uploading is quite costly. in general you just gotta pay to get more i think, but i haven't tried verifying my channel for the extended api usage either

does the application save the state, which are already uploaded? So it continues after you press upload all videos of streamer again?

MrBrax commented 1 year ago

yeah that looks alright, there's a list of actions and uploading is quite costly. in general you just gotta pay to get more i think, but i haven't tried verifying my channel for the extended api usage either

does the application save the state, which are already uploaded? So it continues after you press upload all videos of streamer again?

it should yes, if the vod has an exported at field in the dashboard

Serph91P commented 1 year ago

yeah that looks alright, there's a list of actions and uploading is quite costly. in general you just gotta pay to get more i think, but i haven't tried verifying my channel for the extended api usage either

dunno if to much to ask. but could you build something like try at 9am every day kind of qeue thingy? because it resets everday at 9 I think.

MrBrax commented 1 year ago

since i don't have mine set up, could you provide some text strings or error codes for what happens when the upload fails due to quota?

Serph91P commented 1 year ago

since i don't have mine set up, could you provide some text strings or error codes for what happens when the upload fails due to quota?

thats the log I guess.


{"module":"YouTube","time":1690870443221,"level":"ERROR","text":"Could not upload video: The request cannot be completed because you have exceeded your <a href=\"/youtube/v3/getting-started#quota\">quota</a>.","pid":34,"metadata":{"response":{"config":{"url":"https://youtube.googleapis.com/upload/youtube/v3/videos?part=snippet&part=status&uploadType=multipart","method":"POST","userAgentDirectives":[{"product":"google-api-nodejs-client","version":"5.1.0","comment":"gzip"}],"data":{"_readableState":{"objectMode":false,"highWaterMark":16384,"buffer":{"head":null,"tail":null,"length":0},"length":0,"pipes":[],"flowing":false,"ended":true,"endEmitted":true,"reading":false,"constructed":true,"sync":false,"needReadable":false,"emittedReadable":false,"readableListening":false,"resumeScheduled":false,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"destroyed":true,"errored":null,"closed":true,"closeEmitted":true,"defaultEncoding":"utf8","awaitDrainWriters":null,"multiAwaitDrain":false,"readingMore":false,"dataEmitted":true,"decoder":null,"encoding":null},"_events":{},"_eventsCount":2,"_writableState":{"objectMode":false,"highWaterMark":16384,"finalCalled":true,"needDrain":false,"ending":true,"ended":true,"finished":true,"destroyed":true,"decodeStrings":true,"defaultEncoding":"utf8","length":0,"writing":false,"corked":0,"sync":false,"bufferProcessing":false,"writecb":null,"writelen":0,"afterWriteTickInfo":null,"buffered":[],"bufferedIndex":0,"allBuffers":true,"allNoop":true,"pendingcb":0,"constructed":true,"prefinished":true,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"errored":null,"closed":true,"closeEmitted":true},"allowHalfOpen":true},"headers":{"x-goog-api-client":"gdcl/5.1.0 gl-node/19.9.0 auth/7.14.1","content-type":"multipart/related; boundary=9016b555-b76c-46e7-9968-8a7afbe583ab","Accept-Encoding":"gzip","User-Agent":"google-api-nodejs-client/5.1.0 (gzip)","Authorization":"Bearer ya29.redacted","Accept":"application/json"},"params":{"part":["snippet","status"],"uploadType":"multipart"},"retry":true,"body":{"_readableState":{"objectMode":false,"highWaterMark":16384,"buffer":{"head":null,"tail":null,"length":0},"length":0,"pipes":[],"flowing":false,"ended":true,"endEmitted":true,"reading":false,"constructed":true,"sync":false,"needReadable":false,"emittedReadable":false,"readableListening":false,"resumeScheduled":false,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"destroyed":true,"errored":null,"closed":true,"closeEmitted":true,"defaultEncoding":"utf8","awaitDrainWriters":null,"multiAwaitDrain":false,"readingMore":false,"dataEmitted":true,"decoder":null,"encoding":null},"_events":{},"_eventsCount":2,"_writableState":{"objectMode":false,"highWaterMark":16384,"finalCalled":true,"needDrain":false,"ending":true,"ended":true,"finished":true,"destroyed":true,"decodeStrings":true,"defaultEncoding":"utf8","length":0,"writing":false,"corked":0,"sync":false,"bufferProcessing":false,"writecb":null,"writelen":0,"afterWriteTickInfo":null,"buffered":[],"bufferedIndex":0,"allBuffers":true,"allNoop":true,"pendingcb":0,"constructed":true,"prefinished":true,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"errored":null,"closed":true,"closeEmitted":true},"allowHalfOpen":true},"responseType":"json","retryConfig":{"currentRetryAttempt":0,"retry":3,"httpMethodsToRetry":["GET","HEAD","PUT","OPTIONS","DELETE"],"noResponseRetries":2,"statusCodesToRetry":[[100,199],[429,429],[500,599]]}},"data":{"error":{"code":403,"message":"The request cannot be completed because you have exceeded your <a href=\"/youtube/v3/getting-started#quota\">quota</a>.","errors":[{"message":"The request cannot be completed because you have exceeded your <a href=\"/youtube/v3/getting-started#quota\">quota</a>.","domain":"youtube.quota","reason":"quotaExceeded"}]}},"headers":{"alt-svc":"h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000","cache-control":"private","connection":"close","content-encoding":"gzip","content-type":"application/json; charset=UTF-8","date":"Tue, 01 Aug 2023 06:14:03 GMT","server":"UploadServer","transfer-encoding":"chunked","vary":"Origin, X-Origin, Referer","warning":"214 UploadServer gzipped","x-guploader-response-body-transformations":"gzipped","x-guploader-uploadid":"redacted"},"status":403,"statusText":"Forbidden","request":{"responseURL":"https://youtube.googleapis.com/upload/youtube/v3/videos?part=snippet&part=status&uploadType=multipart"}},"config":{"url":"https://youtube.googleapis.com/upload/youtube/v3/videos?part=snippet&part=status&uploadType=multipart","method":"POST","userAgentDirectives":[{"product":"google-api-nodejs-client","version":"5.1.0","comment":"gzip"}],"data":{"_readableState":{"objectMode":false,"highWaterMark":16384,"buffer":{"head":null,"tail":null,"length":0},"length":0,"pipes":[],"flowing":false,"ended":true,"endEmitted":true,"reading":false,"constructed":true,"sync":false,"needReadable":false,"emittedReadable":false,"readableListening":false,"resumeScheduled":false,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"destroyed":true,"errored":null,"closed":true,"closeEmitted":true,"defaultEncoding":"utf8","awaitDrainWriters":null,"multiAwaitDrain":false,"readingMore":false,"dataEmitted":true,"decoder":null,"encoding":null},"_events":{},"_eventsCount":2,"_writableState":{"objectMode":false,"highWaterMark":16384,"finalCalled":true,"needDrain":false,"ending":true,"ended":true,"finished":true,"destroyed":true,"decodeStrings":true,"defaultEncoding":"utf8","length":0,"writing":false,"corked":0,"sync":false,"bufferProcessing":false,"writecb":null,"writelen":0,"afterWriteTickInfo":null,"buffered":[],"bufferedIndex":0,"allBuffers":true,"allNoop":true,"pendingcb":0,"constructed":true,"prefinished":true,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"errored":null,"closed":tr{"module":"log","time":1690871423705,"level":"INFO","text":"Starting new log file for 2023-08-01, git hash undefined","pid":34}
01.08.2023 09:39:44
SyntaxError: Unexpected token '{', ..."closed":tr{"module":"... is not valid JSON
01.08.2023 09:39:44
    at JSON.parse (<anonymous>)
01.08.2023 09:39:44
    at <anonymous> (/usr/local/share/twitchautomator/server/src/Core/Log.ts:72:57)
01.08.2023 09:39:44
    at Array.map (<anonymous>)
01.08.2023 09:39:44
    at readTodaysLog (/usr/local/share/twitchautomator/server/src/Core/Log.ts:72:22)
01.08.2023 09:39:44
    at Function.init (/usr/local/share/twitchautomator/server/src/Core/LiveStreamDVR.ts:128:9)
01.08.2023 09:39:44
MrBrax commented 1 year ago

currently building on dev which has a scheduler option for exporting all channels, aborts when it gets a quota error and hopefully should reset during the next day

Serph91P commented 1 year ago

currently building on dev which has a scheduler option for exporting all channels, aborts when it gets a quota error and hopefully should reset during the next day

ok thanks will test and see what happens.

Serph91P commented 1 year ago

currently building on dev which has a scheduler option for exporting all channels, aborts when it gets a quota error and hopefully should reset during the next day

Setup the dev container and added some channels to force reaching the daily limit. The container seems to be crashing even after a manual upload:



08.08.2023 19:00:58
Create exporter youtube vod {
08.08.2023 19:00:58
  title_template: '[{internalName}] {title}_{date}_{resolution}',
08.08.2023 19:00:58
  directory: '',
08.08.2023 19:00:58
  host: '',
08.08.2023 19:00:58
  username: '',
08.08.2023 19:00:58
  password: '',
08.08.2023 19:00:58
  description: 'Test',
08.08.2023 19:00:58
  tags: 'Test',
08.08.2023 19:00:58
  category: '20',
08.08.2023 19:00:58
  file_source: 'segment',
08.08.2023 19:00:58
  privacy: 'private',
08.08.2023 19:00:58
  vod: '52f9a819-ae1e-4d40-88b9-7f2866eb0540',
08.08.2023 19:00:58
  remote: '',
08.08.2023 19:00:58
  playlist_id: 'PLqBFPPTpZzdHd8QSOOgORAfSPodwVyIsD'
08.08.2023 19:00:58
}
08.08.2023 19:00:58
/usr/local/share/twitchautomator/server/src/Controllers/Exporter.ts:218
08.08.2023 19:00:58
            message: (error as Error).message
08.08.2023 19:00:58
                                      ^
08.08.2023 19:00:58
08.08.2023 19:00:58
08.08.2023 19:00:58
TypeError: Cannot read properties of undefined (reading 'message')
08.08.2023 19:00:58
    at ExportFile (/usr/local/share/twitchautomator/server/src/Controllers/Exporter.ts:218:39)
08.08.2023 19:00:58
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
08.08.2023 19:00:58
08.08.2023 19:00:58
Node.js v19.9.0
Container stopped
MrBrax commented 1 year ago

are there any related log entries just before this?

also this new formatting is really strange

Serph91P commented 1 year ago

are there any related log entries just before this?

also this new formatting is really strange

yeah using my vps now and getting the logs from there looks like this. Hope I got everything personal removed.



08.08.2023 19:00:58
Node.js v19.9.0
08.08.2023 19:04:19
Watching channel giantwaffle folders...
08.08.2023 19:04:19
2023-08-08T17:04:19.857Z | dvr.load.tw <success> Loaded channel giantwaffle with 0 vods
08.08.2023 19:04:19
2023-08-08T17:04:19.857Z | dvr.loadChannels <info> Loading channel 8df3b00b-934b-43ff-90ff-2d1188b792c5, provider twitch...
08.08.2023 19:04:19
Watching channel h0llylp folders...
08.08.2023 19:04:19
2023-08-08T17:04:19.858Z | dvr.load.tw <success> Loaded channel h0llylp with 0 vods
08.08.2023 19:04:19
2023-08-08T17:04:19.858Z | dvr.loadChannels <info> Loading channel 5bdae324-9bf3-41fc-a5fb-662ccc7531f6, provider twitch...
08.08.2023 19:04:19
Watching channel staiy folders...
08.08.2023 19:04:19
2023-08-08T17:04:19.859Z | dvr.load.tw <success> Loaded channel staiy with 0 vods
08.08.2023 19:04:19
2023-08-08T17:04:19.859Z | dvr.loadChannels <success> Loaded 6 channels!
08.08.2023 19:04:19
2023-08-08T17:04:19.859Z | job.loadJobsFromCache <info> Loaded 0 jobs from cache
08.08.2023 19:04:19
2023-08-08T17:04:19.860Z | scheduler.defaultJobs <info> Set up default jobs
08.08.2023 19:04:19
2023-08-08T17:04:19.864Z | scheduler.schedule <info> Scheduled job 'check_muted_vods' with cronTime '0 */12 * * *'
08.08.2023 19:04:19
2023-08-08T17:04:19.866Z | scheduler.schedule <info> Scheduled job 'check_deleted_vods' with cronTime '10 */12 * * *'
08.08.2023 19:04:19
2023-08-08T17:04:19.867Z | scheduler.schedule <info> Scheduled job 'match_vods' with cronTime '30 */12 * * *'
08.08.2023 19:04:19
2023-08-08T17:04:19.867Z | scheduler.schedule <info> Scheduled job 'clipdownload' with cronTime '0 0 * * *'
08.08.2023 19:04:19
2023-08-08T17:04:19.869Z | scheduler.schedule <info> Scheduled job 'validate_oauth' with cronTime '0 */1 * * *'
08.08.2023 19:04:19
2023-08-08T17:04:19.870Z | scheduler.schedule <info> Scheduled job 'export_vods' with cronTime '0 1 * * *'
08.08.2023 19:04:19
2023-08-08T17:04:19.870Z | scheduler.defaultJobs <info> Default job 'check_muted_vods' enabled
08.08.2023 19:04:19
2023-08-08T17:04:19.870Z | scheduler.defaultJobs <info> Default job 'check_deleted_vods' enabled
08.08.2023 19:04:19
2023-08-08T17:04:19.870Z | scheduler.defaultJobs <info> Default job 'match_vods' disabled
08.08.2023 19:04:19
2023-08-08T17:04:19.870Z | scheduler.defaultJobs <info> Default job 'clipdownload' disabled
08.08.2023 19:04:19
2023-08-08T17:04:19.870Z | scheduler.defaultJobs <info> Default job 'export_vods' disabled
08.08.2023 19:04:19
2023-08-08T17:04:19.871Z | tw.helper <info> Eventsub is not using websocket
08.08.2023 19:04:20
2023-08-08T17:04:20.055Z | dvr.venvcheck <info> Checking python virtual environment...
08.08.2023 19:04:20
2023-08-08T17:04:20.615Z | helper.execSimple <info> Process 48 for 'pipenv --venv' exited with code 0
08.08.2023 19:04:20
2023-08-08T17:04:20.616Z | dvr.venvcheck <info> Python virtual environment path: /home/node/.local/share/virtualenvs/twitchautomator-rNbiFSV2
08.08.2023 19:04:20
2023-08-08T17:04:20.616Z | dvr.bincheck <info> Checking binary versions...
08.08.2023 19:04:20
2023-08-08T17:04:20.902Z | helper.execSimple <info> Process 50 for 'about binary check' exited with code 0
08.08.2023 19:04:20
2023-08-08T17:04:20.903Z | dvr.checkBinaryVersions <info> Pip package streamlink version: 5.5.1
08.08.2023 19:04:20
2023-08-08T17:04:20.903Z | dvr.init <success> Loading config stuff done.
08.08.2023 19:04:20
Setting trust proxy to true.
08.08.2023 19:04:20
Warning: connect.session() MemoryStore is not
08.08.2023 19:04:20
designed for a production environment, as it will leak
08.08.2023 19:04:20
memory, and will not scale past a single process.
08.08.2023 19:04:20
2023-08-08T17:04:20.908Z | clientBroker.attach <info> Attaching WebSocket server to broker...
08.08.2023 19:04:20
🥞 LiveStreamDVR listening on port 8080, mode production. Base path: / 🥞
08.08.2023 19:04:20
Local: http://localhost:8080
08.08.2023 19:04:20
Public: https://redacted
08.08.2023 19:04:20
Type: Compiled JavaScript
08.08.2023 19:04:20
Build date: 8/3/2023, 6:47:56 PM (server.js)
08.08.2023 19:04:20
Version: 1.6.0 running on node v19.9.0 linux 🦄
08.08.2023 19:04:20
Debug: false
08.08.2023 19:04:20
Build: CI
08.08.2023 19:04:20
Development: true
08.08.2023 19:04:20
Build date: 2023-08-03T18:42:49+02:00
08.08.2023 19:04:20
Version: undefined
08.08.2023 19:04:20
VCS ref: undefined
08.08.2023 19:04:20
2023-08-08T17:04:20.911Z | clientBroker.attach <info> Client broker now attached to websocket.
08.08.2023 19:04:23
redacted - - [08/Aug/2023:17:04:23 +0000] "GET /api/v0/channels HTTP/1.1" 401 44 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:23
redacted - - [08/Aug/2023:17:04:23 +0000] "GET /assets/3D_TV_static-8fc4d343.gif HTTP/1.1" 200 206842 "https://redacted/assets/index-c0bcced4.css" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:24
redacted - - [08/Aug/2023:17:04:24 +0000] "GET /api/v0/auth/check HTTP/1.1" 401 115 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:24
redacted - - [08/Aug/2023:17:04:24 +0000] "GET /sw.js HTTP/1.1" 200 3664 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:24
redacted - - [08/Aug/2023:17:04:24 +0000] "GET /workbox-e71b7dbd.js HTTP/1.1" 200 15071 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "POST /api/v0/auth/login HTTP/1.1" 200 65 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /assets/3D_TV_static-8fc4d343.gif HTTP/1.1" 304 - "https://redacted/assets/index-c0bcced4.css" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /api/v0/auth/check HTTP/1.1" 200 107 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /api/v0/settings HTTP/1.1" 200 25228 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /api/v0/channels HTTP/1.1" 200 23813 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /cache/thumbs/8b025e2c8517be1eb5a4d67d09b52884.jpg HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /cache/thumbs/8c1a1eabef7a16a77245b76c85d7dcc8.jpg HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /cache/thumbs/b8d767e1ee65663122a45f32c192abab.jpg HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /cache/thumbs/756479674ed8b6cebcaaefea40bb0162.jpg HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /cache/thumbs/7a51c476bec19b2174a701ffb72068ed.jpg HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /cache/thumbs/11f6192bb795eaafd2601d01b50a4c95.jpg HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /cache/covers/509658.jpg HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /cache/covers/2009321156.jpg HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:27
redacted - - [08/Aug/2023:17:04:27 +0000] "GET /api/v0/jobs HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:28
redacted - - [08/Aug/2023:17:04:28 +0000] "GET /sw.js HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:28
redacted - - [08/Aug/2023:17:04:28 +0000] "GET /workbox-e71b7dbd.js HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:36
redacted - - [08/Aug/2023:17:04:36 +0000] "GET /api/v0/youtube/status HTTP/1.1" 200 117 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:44
2023-08-08T17:04:44.463Z | YouTube.Authenticate <info> Begin auth process...
08.08.2023 19:04:44
2023-08-08T17:04:44.463Z | YouTube.Authenticate <success> Send raw URL to user: https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.upload%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutubepartner&response_type=code&client_id=redacted-sffhrrkovrf7eggpf8v6uqp1li7olvoh.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fredacted%2Fapi%2Fv0%2Fyoutube%2Fcallback
08.08.2023 19:04:44
redacted - - [08/Aug/2023:17:04:44 +0000] "GET /api/v0/youtube/authenticate?rawurl=true HTTP/1.1" 200 518 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:50
2023-08-08T17:04:50.700Z | YouTube.Callback <info> Got callback from YouTube...
08.08.2023 19:04:50
youtube access token redacted
08.08.2023 19:04:50
2023-08-08T17:04:50.890Z | YouTube.Callback <success> Authenticated with YouTube
08.08.2023 19:04:50
redacted - - [08/Aug/2023:17:04:50 +0000] "GET /api/v0/youtube/callback?code=4%redacted&scope=profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.upload+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutubepartner HTTP/1.1" 200 70 "https://accounts.google.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:51
redacted - - [08/Aug/2023:17:04:51 +0000] "GET /sw.js HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:51
redacted - - [08/Aug/2023:17:04:51 +0000] "GET /workbox-e71b7dbd.js HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:54
redacted - - [08/Aug/2023:17:04:54 +0000] "GET /api/v0/youtube/status HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:04:58
redacted - - [08/Aug/2023:17:04:58 +0000] "GET /api/v0/youtube/status HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:05:03
redacted - - [08/Aug/2023:17:05:03 +0000] "GET /api/v0/youtube/playlists HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
08.08.2023 19:05:10
Create exporter youtube vod {
08.08.2023 19:05:10
  title_template: '[{login}] {title} ({date})',
08.08.2023 19:05:10
  directory: '',
08.08.2023 19:05:10
  host: '',
08.08.2023 19:05:10
  username: '',
08.08.2023 19:05:10
  password: '',
08.08.2023 19:05:10
  description: 'Test',
08.08.2023 19:05:10
  tags: 'Test',
08.08.2023 19:05:10
  category: '20',
08.08.2023 19:05:10
  file_source: 'segment',
08.08.2023 19:05:10
  privacy: 'private',
08.08.2023 19:05:10
  vod: 'redacted',
08.08.2023 19:05:10
  remote: '',
08.08.2023 19:05:10
  playlist_id: 'redacted'
08.08.2023 19:05:10
}
08.08.2023 19:05:10
/usr/local/share/twitchautomator/server/src/Controllers/Exporter.ts:218
08.08.2023 19:05:10
            message: (error as Error).message
08.08.2023 19:05:10
                                      ^
08.08.2023 19:05:10
08.08.2023 19:05:10
08.08.2023 19:05:10
TypeError: Cannot read properties of undefined (reading 'message')
08.08.2023 19:05:10
    at ExportFile (/usr/local/share/twitchautomator/server/src/Controllers/Exporter.ts:218:39)
08.08.2023 19:05:10
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
08.08.2023 19:05:10
MrBrax commented 1 year ago

wow i'm really at a loss, nowhere in the exporter code can i find a place where an error is returned undefined

MrBrax commented 1 year ago

wow pretty useful to have a debugger huh

Serph91P commented 1 year ago

wow pretty useful to have a debugger huh

Working again we will see what happens

Serph91P commented 1 year ago

wow pretty useful to have a debugger huh

Stream are being recorded but auto exported does nothing and I cannot find anything in the logs after stream end that they are being exported to YouTube.

MrBrax commented 1 year ago

wow pretty useful to have a debugger huh

Stream are being recorded but auto exported does nothing and I cannot find anything in the logs after stream end that they are being exported to YouTube.

hmm, wonder how far it gets. so nothing is logged regarding exporter stuff after stream end?

Serph91P commented 1 year ago

wow pretty useful to have a debugger huh

Stream are being recorded but auto exported does nothing and I cannot find anything in the logs after stream end that they are being exported to YouTube.

hmm, wonder how far it gets. so nothing is logged regarding exporter stuff after stream end?

found something:

2023-08-11 06:23:35
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 62979/63162 seconds (100%)
2023-08-11 06:23:36
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63002/63162 seconds (100%)
2023-08-11 06:23:37
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63023/63162 seconds (100%)
2023-08-11 06:23:37
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63053/63162 seconds (100%)
2023-08-11 06:23:38
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63081/63162 seconds (100%)
2023-08-11 06:23:38
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63112/63162 seconds (100%)
2023-08-11 06:23:39
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63151/63162 seconds (100%)
2023-08-11 06:23:39
 Create MOOV atom for bonjwa_2023-08-10T12_25_13Z_40976634536.ts (this usually takes a while)
2023-08-11 06:51:33
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63162/63162 seconds (100%)
2023-08-11 06:51:34
 2023-08-11T06:51:34.280Z | exec.startJob <success> Process 1496 for remux_bonjwa_2023-08-10T12_25_13Z_40976634536.ts closed with code 0
2023-08-11 06:51:34
 2023-08-11T06:51:34.281Z | job.clear <info> Clear job remux_bonjwa_2023-08-10T12_25_13Z_40976634536.ts with PID 1496
2023-08-11 06:51:34
 2023-08-11T06:51:34.282Z | job.clear <success> Job remux_bonjwa_2023-08-10T12_25_13Z_40976634536.ts removed from jobs list
2023-08-11 06:51:34
 2023-08-11T06:51:34.282Z | job.clear <warn> Job remux_bonjwa_2023-08-10T12_25_13Z_40976634536.ts not found in jobs list
2023-08-11 06:51:34
 2023-08-11T06:51:34.291Z | video.remux <success> Remuxed /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.ts to /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4
2023-08-11 06:51:34
 2023-08-11T06:51:34.291Z | automator.convertVideo <success> Converted video /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.ts to /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4
2023-08-11 06:51:34
 😴 Sleeping for 10000 ms
2023-08-11 06:51:45
 2023-08-11T06:51:45.307Z | automator.download <info> Conversion done, add segment '/usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4' to 'bonjwa_2023-08-10T12_25_13Z_40976634536'
2023-08-11 06:51:45
 2023-08-11T06:51:45.307Z | vod.addSegment <info> Adding segment bonjwa_2023-08-10T12_25_13Z_40976634536.mp4 to bonjwa_2023-08-10T12_25_13Z_40976634536
2023-08-11 06:51:45
 2023-08-11T06:51:45.311Z | vod.saveJSON <success> Saving JSON of bonjwa_2023-08-10T12_25_13Z_40976634536  (add segment)
2023-08-11 06:51:45
 2023-08-11T06:51:45.369Z | automator.download <info> Sleep 30 seconds for bonjwa_2023-08-10T12_25_13Z_40976634536
2023-08-11 06:51:45
 😴 Sleeping for 30000 ms
2023-08-11 06:52:15
 2023-08-11T06:52:15.381Z | automator.download <info> Do metadata on bonjwa_2023-08-10T12_25_13Z_40976634536
2023-08-11 06:52:15
 2023-08-11T06:52:15.381Z | vod.finalize <info> Finalize bonjwa_2023-08-10T12_25_13Z_40976634536 @ /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536
2023-08-11 06:52:15
 2023-08-11T06:52:15.395Z | vod.getMediainfo <info> Fetching mediainfo of bonjwa_2023-08-10T12_25_13Z_40976634536, segment #0
2023-08-11 06:52:15
 2023-08-11T06:52:15.398Z | helper.mediainfo <info> Run mediainfo on /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4
2023-08-11 06:52:18
 2023-08-11T06:52:18.230Z | helper.execSimple <info> Process 1506 for 'mediainfo' exited with code 0
2023-08-11 06:52:18
 2023-08-11T06:52:18.232Z | helper.videometadata <success> /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4 is a video file 17:32:41 long at 1080p59.
2023-08-11 06:52:18
 2023-08-11T06:52:18.232Z | vod.saveLosslessCut <info> Saving lossless cut csv for bonjwa_2023-08-10T12_25_13Z_40976634536 to /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536-llc-edl.csv
2023-08-11 06:52:18
 2023-08-11T06:52:18.308Z | vod.saveFFMPEGChapters <info> Saving FFMPEG chapters file for bonjwa_2023-08-10T12_25_13Z_40976634536 to /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536-ffmpeg-chapters.txt
2023-08-11 06:52:18
 2023-08-11T06:52:18.328Z | vod.saveVTTChapters <info> Saving VTT chapters file for bonjwa_2023-08-10T12_25_13Z_40976634536 to /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.chapters.vtt
2023-08-11 06:52:18
 2023-08-11T06:52:18.347Z | vod.matchProviderVod <info> Trying to match bonjwa_2023-08-10T12_25_13Z_40976634536 to provider...
2023-08-11 06:52:18
 2023-08-11T06:52:18.352Z | vod.watch <info> VOD file /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536-llc-edl.csv changed (change)!
2023-08-11 06:52:18
 2023-08-11T06:52:18.352Z | clientBroker.notify <info> (system) VOD file changed externally: bonjwa_2023-08-10T12_25_13Z_40976634536-llc-edl.csv
2023-08-11 06:52:18
 2023-08-11T06:52:18.353Z | vod.watch <info> VOD file /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536-ffmpeg-chapters.txt changed (change)!
2023-08-11 06:52:18
 2023-08-11T06:52:18.353Z | clientBroker.notify <info> (system) VOD file changed externally: bonjwa_2023-08-10T12_25_13Z_40976634536-ffmpeg-chapters.txt
2023-08-11 06:52:18
 2023-08-11T06:52:18.353Z | vod.watch <info> VOD file /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.chapters.vtt changed (change)!
2023-08-11 06:52:18
 2023-08-11T06:52:18.353Z | clientBroker.notify <info> (system) VOD file changed externally: bonjwa_2023-08-10T12_25_13Z_40976634536.chapters.vtt
2023-08-11 06:52:18
 2023-08-11T06:52:18.665Z | vod.matchProviderVod <success> Found matching VOD for bonjwa_2023-08-10T12_25_13Z_40976634536 (2023-08-10T12:25:13.000Z): 1895025452 (Donnerstag, 10.08.2023)
2023-08-11 06:52:18
 2023-08-11T06:52:18.670Z | helper.videoContactSheet <info> Requested video contact sheet of /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4 with width 1920 and grid 3x5, output to /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536-contact_sheet.png
2023-08-11 06:52:49
 2023-08-11T06:52:49.323Z | helper.execSimple <info> Process 1507 for 'vcsi video contact sheet' exited with code 0
2023-08-11 06:52:49
 2023-08-11T06:52:49.323Z | helper.videoContactSheet <success> Created video contact sheet for /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4
2023-08-11 06:52:49
 2023-08-11T06:52:49.324Z | vod.saveJSON <success> Saving JSON of bonjwa_2023-08-10T12_25_13Z_40976634536  (finalized)
2023-08-11 06:52:49
 2023-08-11T06:52:49.377Z | automator.download <info> Cleanup old VODs for Bonjwa
2023-08-11 06:52:49
 2023-08-11T06:52:49.377Z | tw.channel.cleanupVods <info> Cleanup VODs for bonjwa, ignore 4a5d69f2-01a8-4ec5-af79-7f27c7947e92
2023-08-11 06:52:49
 2023-08-11T06:52:49.378Z | tw.channel.roundupCleanupVodCandidates <info> Chose 0 vods to delete
2023-08-11 06:52:49
 2023-08-11T06:52:49.378Z | tw.channel.cleanupVods <info> Not enough vods to delete for bonjwa
2023-08-11 06:52:49
 2023-08-11T06:52:49.378Z | automator.download <success> All done for bonjwa_2023-08-10T12_25_13Z_40976634536
2023-08-11 06:52:49
 Create exporter youtube vod {
2023-08-11 06:52:49
   vod: '4a5d69f2-01a8-4ec5-af79-7f27c7947e92',
2023-08-11 06:52:49
   directory: undefined,
2023-08-11 06:52:49
   host: undefined,
2023-08-11 06:52:49
   username: undefined,
2023-08-11 06:52:49
   password: undefined,
2023-08-11 06:52:49
   description: 'Test',
2023-08-11 06:52:49
   tags: 'Test',
2023-08-11 06:52:49
   category: '20',
2023-08-11 06:52:49
   remote: undefined,
2023-08-11 06:52:49
   title_template: '[{internalName}] {title}_{date}_{resolution}',
2023-08-11 06:52:49
   privacy: 'private'
2023-08-11 06:52:49
 }
2023-08-11 06:52:49
 2023-08-11T06:52:49.381Z | BaseExporter.getFormattedTitle <warn> No value for replacement literal 'comment', using template '[{internalName}] {title}_{date}_{resolution}'
2023-08-11 06:52:49
 2023-08-11T06:52:49.381Z | BaseExporter.getFormattedTitle <warn> No value for replacement literal 'absolute_episode', using template '[{internalName}] {title}_{date}_{resolution}'
2023-08-11 06:52:49
 2023-08-11T06:52:49.381Z | BaseExporter.getFormattedTitle <warn> No value for replacement literal 'resolution', using template '[{internalName}] {title}_{date}_{resolution}'
2023-08-11 06:52:49
 2023-08-11T06:52:49.381Z | YouTubeExporter.export <info> Uploading /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4 to YouTube...
2023-08-11 06:52:49
 2023-08-11T06:52:49.382Z | YouTubeExporter.export <error> Could not upload video: No access, refresh token, API key or refresh handler callback is set.
2023-08-11 06:52:49
 2023-08-11T06:52:49.383Z | automator.onEndDownload <error> Export error: No access, refresh token, API key or refresh handler callback is set.
2023-08-11 10:00:00
 2023-08-11T10:00:00.013Z | vod.checkMutedVod <info> Check muted VOD for bonjwa_2023-08-07T19_59_54Z_40969158360 using streamlink
2023-08-11 10:00:01
 2023-08-11T10:00:01.147Z | helper.execSimple <info> Process 1681 for 'vod mute check' exited with code 0
2023-08-11 10:00:01
 2023-08-11T10:00:01.147Z | vod.checkMutedStreamlink <success> VOD bonjwa_2023-08-07T19_59_54Z_40969158360 is not muted!

but youtube is authorized? Looks like it keeps getting unauthorized.

MrBrax commented 1 year ago

yeah their api is really unstable and difficult to work with, does it work fetching status before and after this?

Serph91P commented 1 year ago

yeah their api is really unstable and difficult to work with, does it work fetching status before and after this?

Cannot realy say just authorized it again and then it worked to export obviously.

MrBrax commented 1 year ago

i think i might have figured it out now, it should automatically fetch the token now both on startup and when it expires using the refresh token

Serph91P commented 1 year ago

i think i might have figured it out now, it should automatically fetch the token now both on startup and when it expires using the refresh token

Still losing login the login expires in 1h.


2023-08-12T21:52:26.882Z | YouTubeExporter.export <info> Uploading /usr/local/share/twitchautomator/data/storage/vods/giantwaffle/giantwaffle_2023-08-12T16_05_19Z_42598078683/giantwaffle_2023-08-12T16_05_19Z_42598078683.mp4 to YouTube...
23:52:26
2023-08-12T21:52:26.883Z | YouTubeExporter.export <error> Could not upload video: No refresh token is set.
23:52:26
2023-08-12T21:52:26.883Z | automator.onEndDownload <error> Export error: No refresh token is set.
MrBrax commented 1 year ago

hmm, did you authenticate again? maybe you need to delete the related files in cache concerning youtube.

on my end it still works, even over a day later

Serph91P commented 1 year ago

hmm, did you authenticate again? maybe you need to delete the related files in cache concerning youtube.

on my end it still works, even over a day later

Yep did authenticate again, will try to kill the session completely an authenticate again.

Serph91P commented 1 year ago

hmm, did you authenticate again? maybe you need to delete the related files in cache concerning youtube.

on my end it still works, even over a day later

still keeps loosing authentication. YouTube authenticated with user: redacted, expires in about 1 hour (2023-08-14T09:51:30.448Z)


13.08.2023 22:29:27
Create exporter youtube vod {
13.08.2023 22:29:27
  vod: '5d472caa-854a-4dd8-87d8-0d27b7ef2096',
13.08.2023 22:29:27
  directory: undefined,
13.08.2023 22:29:27
  host: undefined,
13.08.2023 22:29:27
  username: undefined,
13.08.2023 22:29:27
  password: undefined,
13.08.2023 22:29:27
  description: 'Test',
13.08.2023 22:29:27
  tags: 'Test',
13.08.2023 22:29:27
  category: '20',
13.08.2023 22:29:27
  remote: undefined,
13.08.2023 22:29:27
  title_template: '[{internalName}] {title}_{date}_{resolution}',
13.08.2023 22:29:27
  privacy: 'private'
13.08.2023 22:29:27
}
13.08.2023 22:29:27
2023-08-13T20:29:27.996Z | BaseExporter.getFormattedTitle <warn> No value for replacement literal 'comment', using template '[{internalName}] {title}_{date}_{resolution}'
13.08.2023 22:29:27
2023-08-13T20:29:27.996Z | BaseExporter.getFormattedTitle <warn> No value for replacement literal 'absolute_episode', using template '[{internalName}] {title}_{date}_{resolution}'
13.08.2023 22:29:27
2023-08-13T20:29:27.996Z | BaseExporter.getFormattedTitle <warn> No value for replacement literal 'resolution', using template '[{internalName}] {title}_{date}_{resolution}'
13.08.2023 22:29:27
2023-08-13T20:29:27.996Z | YouTubeExporter.export <info> Uploading /usr/local/share/twitchautomator/data/storage/vods/cohhcarnage/cohhcarnage_2023-08-13T16_55_13Z_49087871293/cohhcarnage_2023-08-13T16_55_13Z_49087871293.mp4 to YouTube...
13.08.2023 22:29:27
2023-08-13T20:29:27.998Z | YouTubeExporter.export <error> Could not upload video: No refresh token is set.
13.08.2023 22:29:27
2023-08-13T20:29:27.998Z | automator.onEndDownload <error> Export error: No refresh token is set.
MrBrax commented 1 year ago

so the button to check status works but not the upload?

Serph91P commented 1 year ago

so the button to check status works but not the upload?

this is about the auto exporter, everything manual works just fine I can login and press export all. But as soon as the auto exporter gets to do its thing it cannot because the authentication is expored.

MrBrax commented 1 year ago

the auto exporter fails even if it is done just right after the authentication is done?

MrBrax commented 1 year ago

this next build will have some more info when you press check status about what tokens are set, might help debug this

Serph91P commented 1 year ago

the auto exporter fails even if it is done just right after the authentication is done?

that I cannot say because it expires after 1h atleast thats what the ui says. Since I cannot say when some streamers end their stream I cannot time it correctly.

MrBrax commented 1 year ago

hmm well at least i think it should refresh on its own regardless of what method. when the new one has been built, can you test authenticating and then check status after the date it says when it expires (1 hour)?

also check what "yes/no" checks it outputs on all status checks

Serph91P commented 1 year ago

hmm well at least i think it should refresh on its own regardless of what method. when the new one has been built, can you test authenticating and then check status after the date it says when it expires (1 hour)?

also check what "yes/no" checks it outputs on all status checks

so far it says the new things you implemented, will report back tomrrow after streams have been recorded.

YouTube authenticated with user: redacted, expires in about 1 hour (2023-08-14T18:22:38.443Z). Refresh token: no. Access token: yes. OAuth2 cred token: yes. OAuth2 cred refresh token: no.

MrBrax commented 1 year ago

that is a bit odd that it doesn't have a refresh token, it's the thing that allows for new tokens to be generated.

wonder if this is a google api issue depending on how you set it up

Serph91P commented 1 year ago

that is a bit odd that it doesn't have a refresh token, it's the thing that allows for new tokens to be generated.

wonder if this is a google api issue depending on how you set it up

If you tell me what to look for I can check in the dev console?

MrBrax commented 1 year ago

i'm really not sure what to check for, anything with offline access or refresh tokens? it should be logging on the server if either are set

Serph91P commented 1 year ago

found this online:

https://stackoverflow.com/questions/40811386/not-getting-refresh-token-in-youtube-oauth

I cannot change this can I

Note: Google does not return a refresh token by default. In order to receive a refresh token on authorization from a Google API, you need to add an extra query parameter to your auth URL. Modify your auth URL to https://accounts.google.com/o/oauth2/v2/auth?access_type=offline, which includes a query parameter of access_type set to offline. The default state is online, and you need to explicitly set it to offline.

MrBrax commented 1 year ago

that's enabled already, so hopefully shouldn't be related

Serph91P commented 1 year ago

that's enabled already, so hopefully shouldn't be related

than I dont understand why it is not working.

MrBrax commented 1 year ago

do the logs say anywhere that it gets a refresh token?

MrBrax commented 1 year ago

https://stackoverflow.com/a/10857806

maybe revoke the app completely from your channel and redo it?

Serph91P commented 1 year ago

https://stackoverflow.com/a/10857806

maybe revoke the app completely from your channel and redo it?

as far as I can see no:



15.08.2023 08:23:35
2023-08-15T06:23:35.292Z | YouTube.Authenticate <info> Begin auth process...
15.08.2023 08:23:35
2023-08-15T06:23:35.293Z | YouTube.Authenticate <success> Send user to: https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.upload%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutubepartner&response_type=code&client_id=redacred-redactede%2Fapi%2Fv0%2Fyoutube%2Fcallback
15.08.2023 08:23:35
149.172.101.184 - - [15/Aug/2023:06:23:35 +0000] "GET /api/v0/youtube/authenticate HTTP/1.1" 302 1062 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
15.08.2023 08:23:36
149.172.101.184 - - [15/Aug/2023:06:23:36 +0000] "GET /workbox-e71b7dbd.js HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
15.08.2023 08:23:36
149.172.101.184 - - [15/Aug/2023:06:23:36 +0000] "GET /sw.js HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
15.08.2023 08:23:38
2023-08-15T06:23:38.240Z | YouTube.Callback <info> Got callback from YouTube...
15.08.2023 08:23:38
2023-08-15T06:23:38.327Z | YouTubeHelper.setupClient <warn> Got new tokens, but no refresh.
15.08.2023 08:23:38
2023-08-15T06:23:38.327Z | YouTubeHelper.applyToken <info> Applying regular token to OAuth2Client, keeping old refresh token.
15.08.2023 08:23:38
2023-08-15T06:23:38.328Z | YouTube.Callback <success> Authenticated with YouTube
15.08.2023 08:23:38
2023-08-15T06:23:38.328Z | YouTube.Callback <warn> No refresh token received
15.08.2023 08:23:38
149.172.101.184 - - [15/Aug/2023:06:23:38 +0000] "GET /api/v0/youtube/callback?code=4%2F0redactedFLogDw&scope=profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.upload+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutubepartner+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile HTTP/1.1" 200 70 "https://accounts.google.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
Serph91P commented 1 year ago

https://stackoverflow.com/a/10857806

maybe revoke the app completely from your channel and redo it?

that fixed it thank you:

YouTube authenticated with user: redacted, expires in about 1 hour (2023-08-15T07:31:21.398Z). Refresh token: yes. Access token: yes. OAuth2 cred token: yes. OAuth2 cred refresh token: yes.

MrBrax commented 1 year ago

nice to finally get that sorted, i'll put some kind of disclaimer on the auth component

Serph91P commented 1 year ago

nice to finally get that sorted, i'll put some kind of disclaimer on the auth component

thanks for the help. Left a little tip.

MrBrax commented 1 year ago

thanks! of note though, it seems that unverified apps only has the refresh token be valid for 7 days or something like that, so it still needs to be occasionally refreshed

Serph91P commented 1 year ago

thanks! of note though, it seems that unverified apps only has the refresh token be valid for 7 days or something like that, so it still needs to be occasionally refreshed

thank you, yeah will look into it how I will handle this refresh after 7 days thing. Working now as intended thank you.

Serph91P commented 1 year ago

thanks! of note though, it seems that unverified apps only has the refresh token be valid for 7 days or something like that, so it still needs to be occasionally refreshed

thank you, yeah will look into it how I will handle this refresh after 7 days thing. Working now as intended thank you.

Sorry to ask, but any ETA when it will be on Master?

MrBrax commented 1 year ago

working on it