From f75783569edf200763af35612b41e7ecc80c07f2 Mon Sep 17 00:00:00 2001 From: Omer Sabic Date: Sat, 10 Aug 2024 23:43:15 +0200 Subject: [PATCH] cookies for ytdl --- src/utils/youtube.js | 346 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 343 insertions(+), 3 deletions(-) diff --git a/src/utils/youtube.js b/src/utils/youtube.js index f7adc1b..3f2b183 100644 --- a/src/utils/youtube.js +++ b/src/utils/youtube.js @@ -9,6 +9,345 @@ import * as xml2js from 'xml2js'; const service = google.youtube("v3"); +const agent = ytdl.createAgent([ + { + "domain": ".youtube.com", + "expirationDate": 1757885754.678493, + "hostOnly": false, + "httpOnly": false, + "name": "__Secure-1PAPISID", + "path": "/", + "sameSite": "unspecified", + "secure": true, + "session": false, + "storeId": "1", + "value": "Ydllg_a0ziZ2IRkW/AxTe18r6nUqk7BEbQ", + "id": 1 + }, + { + "domain": ".youtube.com", + "expirationDate": 1757885754.678415, + "hostOnly": false, + "httpOnly": true, + "name": "__Secure-1PSID", + "path": "/", + "sameSite": "unspecified", + "secure": true, + "session": false, + "storeId": "1", + "value": "g.a000mwiFpDXHv-mE1JbzAv29Ye5X1D7V-zT1tEGx1_bd46Kree9yTMpJEGK4nnajwLM5d0hj7gACgYKAYUSARUSFQHGX2MiVlSE8GgO3Vmj3YT3n8k6WhoVAUF8yKoU4xPY7CM6zb7j98zdaVV70076", + "id": 2 + }, + { + "domain": ".youtube.com", + "expirationDate": 1754861761.153214, + "hostOnly": false, + "httpOnly": true, + "name": "__Secure-1PSIDCC", + "path": "/", + "sameSite": "unspecified", + "secure": true, + "session": false, + "storeId": "1", + "value": "AKEyXzXzGpG2-NgDLDoR0-TXlyJVUQJQ_hzs2wEvAZmPy5VTxaOIXg4QrrR3N_v5EWUqhQ4q", + "id": 3 + }, + { + "domain": ".youtube.com", + "expirationDate": 1754861754.678387, + "hostOnly": false, + "httpOnly": true, + "name": "__Secure-1PSIDTS", + "path": "/", + "sameSite": "unspecified", + "secure": true, + "session": false, + "storeId": "1", + "value": "sidts-CjIBUFGohzuXoAbjBYmkalmpToyVGhPcAMyp-r3IgiyU7WlYnluERYQWrB-zOvpwcD5F_RAA", + "id": 4 + }, + { + "domain": ".youtube.com", + "expirationDate": 1757885754.678506, + "hostOnly": false, + "httpOnly": false, + "name": "__Secure-3PAPISID", + "path": "/", + "sameSite": "no_restriction", + "secure": true, + "session": false, + "storeId": "1", + "value": "Ydllg_a0ziZ2IRkW/AxTe18r6nUqk7BEbQ", + "id": 5 + }, + { + "domain": ".youtube.com", + "expirationDate": 1757885754.678427, + "hostOnly": false, + "httpOnly": true, + "name": "__Secure-3PSID", + "path": "/", + "sameSite": "no_restriction", + "secure": true, + "session": false, + "storeId": "1", + "value": "g.a000mwiFpDXHv-mE1JbzAv29Ye5X1D7V-zT1tEGx1_bd46Kree9y4tCIp7vBEBU5tBLxdPiklQACgYKAVgSARUSFQHGX2MiCFYG1JWlH9dAu8gduZa6dRoVAUF8yKpMaD9-H5JRU8a-L-_Za4wd0076", + "id": 6 + }, + { + "domain": ".youtube.com", + "expirationDate": 1754861761.153238, + "hostOnly": false, + "httpOnly": true, + "name": "__Secure-3PSIDCC", + "path": "/", + "sameSite": "no_restriction", + "secure": true, + "session": false, + "storeId": "1", + "value": "AKEyXzUy-4CY7B0Gu-XHjrZVVpAWPNJNET5PQOlbRbmaa_ecvp7AS8Nwf5gbDTfL47zj0Dez3Q", + "id": 7 + }, + { + "domain": ".youtube.com", + "expirationDate": 1754861754.678402, + "hostOnly": false, + "httpOnly": true, + "name": "__Secure-3PSIDTS", + "path": "/", + "sameSite": "no_restriction", + "secure": true, + "session": false, + "storeId": "1", + "value": "sidts-CjIBUFGohzuXoAbjBYmkalmpToyVGhPcAMyp-r3IgiyU7WlYnluERYQWrB-zOvpwcD5F_RAA", + "id": 8 + }, + { + "domain": ".youtube.com", + "expirationDate": 1757453723.663338, + "hostOnly": false, + "httpOnly": true, + "name": "__Secure-YEC", + "path": "/", + "sameSite": "lax", + "secure": true, + "session": false, + "storeId": "1", + "value": "CgtVakdtMnJrZ2VwRSi_ut-1BjIKCgJERRIEEgAgKQ%3D%3D", + "id": 9 + }, + { + "domain": ".youtube.com", + "expirationDate": 1757885754.678463, + "hostOnly": false, + "httpOnly": false, + "name": "APISID", + "path": "/", + "sameSite": "unspecified", + "secure": false, + "session": false, + "storeId": "1", + "value": "PzwvCMFIwi-WXHNK/Aa7aeSu6UGGiR3Xw-", + "id": 10 + }, + { + "domain": ".youtube.com", + "expirationDate": 1723326359, + "hostOnly": false, + "httpOnly": false, + "name": "CONSISTENCY", + "path": "/", + "sameSite": "unspecified", + "secure": true, + "session": false, + "storeId": "1", + "value": "AKreu9uoPRzjfNbvjscAvYa4AnZ7yXSd9GkhniF8n1uodA2SI5_UawxviB_l5efAOS7TIHbrzFvCUM3riEdLFWvDQ0So_SGThxdrORfZ0vAZzDn30MIgE0ddEa_h-aBhNzX4ispknt4SY4E76opMTGsu", + "id": 11 + }, + { + "domain": ".youtube.com", + "expirationDate": 1757885754.678441, + "hostOnly": false, + "httpOnly": true, + "name": "HSID", + "path": "/", + "sameSite": "unspecified", + "secure": false, + "session": false, + "storeId": "1", + "value": "An0F5SiZ_NJH4_Rx4", + "id": 12 + }, + { + "domain": ".youtube.com", + "expirationDate": 1757885756.324828, + "hostOnly": false, + "httpOnly": true, + "name": "LOGIN_INFO", + "path": "/", + "sameSite": "no_restriction", + "secure": true, + "session": false, + "storeId": "1", + "value": "AFmmF2swRQIgQD5euCkX56qyeRocOC192DF6siCwmZiG5RFdXIsIOKQCIQDVYMUXa9fafpFC4gJAi32F-LsqO7a5ptBfytQ0ooI-7g:QUQ3MjNmd1RmUlRfd25hTUFDT214TF9pcHlXcEh5ZHAzc2d0Rjc2WjZVUEJCRW1KSV9QRTlBZXpTLXA1QXFtdExyMzFncVdteTE4N1pMWk9yUnhTVU8taF93eEZlRm95UTdubHJ3emt4SVBYeVNjQ0dDREtnb2JWeHhHeU1HYy1xVlhlZTU4V3g3TnEyMm9uWDZzTzlBZHhjSG81dXZ3WnJn", + "id": 13 + }, + { + "domain": ".youtube.com", + "expirationDate": 1739136959.800355, + "hostOnly": false, + "httpOnly": true, + "name": "NID", + "path": "/", + "sameSite": "unspecified", + "secure": true, + "session": false, + "storeId": "1", + "value": "516=aE2sFI_rh_Rh7q0T-GD9vzWm4pf6Uak1iFjvzBFuRr8wxfSmJEDS6NzXpXKLLNKi_ba-NaxkIxkfhKJ9I3ODz9TmFnuTwQVvGbSordWz2DI3IvtXEygFNEGTTW1WuKBOHO-WXjdM2nuQ4b7d3KWiDttthySlnE6l0vur98aENPo", + "id": 14 + }, + { + "domain": ".youtube.com", + "expirationDate": 1757885758.099494, + "hostOnly": false, + "httpOnly": false, + "name": "PREF", + "path": "/", + "sameSite": "unspecified", + "secure": true, + "session": false, + "storeId": "1", + "value": "f6=40000000&tz=Europe.Berlin", + "id": 15 + }, + { + "domain": ".youtube.com", + "expirationDate": 1757885754.678475, + "hostOnly": false, + "httpOnly": false, + "name": "SAPISID", + "path": "/", + "sameSite": "unspecified", + "secure": true, + "session": false, + "storeId": "1", + "value": "Ydllg_a0ziZ2IRkW/AxTe18r6nUqk7BEbQ", + "id": 16 + }, + { + "domain": ".youtube.com", + "expirationDate": 1757885754.678333, + "hostOnly": false, + "httpOnly": false, + "name": "SID", + "path": "/", + "sameSite": "unspecified", + "secure": false, + "session": false, + "storeId": "1", + "value": "g.a000mwiFpDXHv-mE1JbzAv29Ye5X1D7V-zT1tEGx1_bd46Kree9yaWb-XRQACGvVe52ZscToXgACgYKAc4SARUSFQHGX2MipK_BxY_xGkd82ZuR_-usghoVAUF8yKoD-HK1Ms_BeaLioA-9grr10076", + "id": 17 + }, + { + "domain": ".youtube.com", + "expirationDate": 1754861761.153147, + "hostOnly": false, + "httpOnly": false, + "name": "SIDCC", + "path": "/", + "sameSite": "unspecified", + "secure": false, + "session": false, + "storeId": "1", + "value": "AKEyXzVET2aVXEooYcLzVZcKqrNU4ugR61hBJSb9_Kg9YQSdRmMSiwZNQZEHDNA0spao7jlE", + "id": 18 + }, + { + "domain": ".youtube.com", + "expirationDate": 1757453733.489585, + "hostOnly": false, + "httpOnly": false, + "name": "SOCS", + "path": "/", + "sameSite": "lax", + "secure": true, + "session": false, + "storeId": "1", + "value": "CAESFggDEgk2NjA1NTYzMjIaBWVuLUdCIAEaBgiA29q1Bg", + "id": 19 + }, + { + "domain": ".youtube.com", + "expirationDate": 1757885754.678452, + "hostOnly": false, + "httpOnly": true, + "name": "SSID", + "path": "/", + "sameSite": "unspecified", + "secure": true, + "session": false, + "storeId": "1", + "value": "AMLcUMa2BaB8t4bo0", + "id": 20 + }, + { + "domain": ".youtube.com", + "expirationDate": 1723325764, + "hostOnly": false, + "httpOnly": false, + "name": "ST-hcbf8d", + "path": "/", + "sameSite": "unspecified", + "secure": false, + "session": false, + "storeId": "1", + "value": "session_logininfo=AFmmF2swRQIgQD5euCkX56qyeRocOC192DF6siCwmZiG5RFdXIsIOKQCIQDVYMUXa9fafpFC4gJAi32F-LsqO7a5ptBfytQ0ooI-7g%3AQUQ3MjNmd1RmUlRfd25hTUFDT214TF9pcHlXcEh5ZHAzc2d0Rjc2WjZVUEJCRW1KSV9QRTlBZXpTLXA1QXFtdExyMzFncVdteTE4N1pMWk9yUnhTVU8taF93eEZlRm95UTdubHJ3emt4SVBYeVNjQ0dDREtnb2JWeHhHeU1HYy1xVlhlZTU4V3g3TnEyMm9uWDZzTzlBZHhjSG81dXZ3WnJn", + "id": 21 + }, + { + "domain": ".youtube.com", + "expirationDate": 1723325763, + "hostOnly": false, + "httpOnly": false, + "name": "ST-l3hjtt", + "path": "/", + "sameSite": "unspecified", + "secure": false, + "session": false, + "storeId": "1", + "value": "session_logininfo=AFmmF2swRQIgQD5euCkX56qyeRocOC192DF6siCwmZiG5RFdXIsIOKQCIQDVYMUXa9fafpFC4gJAi32F-LsqO7a5ptBfytQ0ooI-7g%3AQUQ3MjNmd1RmUlRfd25hTUFDT214TF9pcHlXcEh5ZHAzc2d0Rjc2WjZVUEJCRW1KSV9QRTlBZXpTLXA1QXFtdExyMzFncVdteTE4N1pMWk9yUnhTVU8taF93eEZlRm95UTdubHJ3emt4SVBYeVNjQ0dDREtnb2JWeHhHeU1HYy1xVlhlZTU4V3g3TnEyMm9uWDZzTzlBZHhjSG81dXZ3WnJn", + "id": 22 + }, + { + "domain": ".youtube.com", + "expirationDate": 1723325763, + "hostOnly": false, + "httpOnly": false, + "name": "ST-tladcw", + "path": "/", + "sameSite": "unspecified", + "secure": false, + "session": false, + "storeId": "1", + "value": "session_logininfo=AFmmF2swRQIgQD5euCkX56qyeRocOC192DF6siCwmZiG5RFdXIsIOKQCIQDVYMUXa9fafpFC4gJAi32F-LsqO7a5ptBfytQ0ooI-7g%3AQUQ3MjNmd1RmUlRfd25hTUFDT214TF9pcHlXcEh5ZHAzc2d0Rjc2WjZVUEJCRW1KSV9QRTlBZXpTLXA1QXFtdExyMzFncVdteTE4N1pMWk9yUnhTVU8taF93eEZlRm95UTdubHJ3emt4SVBYeVNjQ0dDREtnb2JWeHhHeU1HYy1xVlhlZTU4V3g3TnEyMm9uWDZzTzlBZHhjSG81dXZ3WnJn", + "id": 23 + }, + { + "domain": ".youtube.com", + "expirationDate": 1723325764, + "hostOnly": false, + "httpOnly": false, + "name": "ST-xuwub9", + "path": "/", + "sameSite": "unspecified", + "secure": false, + "session": false, + "storeId": "1", + "value": "session_logininfo=AFmmF2swRQIgQD5euCkX56qyeRocOC192DF6siCwmZiG5RFdXIsIOKQCIQDVYMUXa9fafpFC4gJAi32F-LsqO7a5ptBfytQ0ooI-7g%3AQUQ3MjNmd1RmUlRfd25hTUFDT214TF9pcHlXcEh5ZHAzc2d0Rjc2WjZVUEJCRW1KSV9QRTlBZXpTLXA1QXFtdExyMzFncVdteTE4N1pMWk9yUnhTVU8taF93eEZlRm95UTdubHJ3emt4SVBYeVNjQ0dDREtnb2JWeHhHeU1HYy1xVlhlZTU4V3g3TnEyMm9uWDZzTzlBZHhjSG81dXZ3WnJn", + "id": 24 + } + ]); + export async function getVideoById(access_token, video_id) { const video = await service.videos.list({ access_token, @@ -60,7 +399,7 @@ export async function getChannelInfo(access_token) { part: "id,contentDetails,snippet", mine: true, maxResults: 1 - }).then(res => res); + }, {agent}).then(res => res); if (!channel.data.items[0]) { throw new Error("no_channel"); @@ -121,7 +460,7 @@ export async function getAccessToken(fastify, request) { export async function getVideoDetails(video_url) { if (!(ytdl.validateURL(video_url))) throw new Error("Invalid Youtube URL"); - const info = await ytdl.getBasicInfo(video_url); + const info = await ytdl.getBasicInfo(video_url, {agent}); return { title: info.videoDetails.title, description: info.videoDetails.description @@ -176,4 +515,5 @@ export async function getVideoWithCaptions(video_url) { description: info.videoDetails.description, captions: await parseXMLCaptions(captions) } -} \ No newline at end of file +} +