Last active
January 10, 2024 16:43
-
-
Save geuis/8b1b2ea57d7f9a9ae22f80d4fbf5b97f to your computer and use it in GitHub Desktop.
Get Youtube video urls
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Run from the dev tools console of any Youtube video | |
// Accurate as of July 2, 2020. | |
// | |
// Copy and paste this into the dev console in a browser with the desired video loaded. | |
// | |
// NOTE: Some Youtube videos do not directly expose the video url in the response. | |
// This script doesn't currently attempt to handle those. It will work for most other general video types though. | |
(async () => { | |
const html = await fetch(window.location.href).then((resp) => resp.text()).then((text) => text); | |
const startStr = 'ytplayer.config = {'; | |
const start = html.indexOf(startStr) + startStr.length - 1; | |
const end = html.indexOf('};', start) + 1; | |
const playerObj = JSON.parse(html.slice(start, end)); | |
playerObj.args.player_response = JSON.parse(playerObj.args.player_response); | |
const videoUrls = playerObj.args.player_response.streamingData.adaptiveFormats.reduce((acc, item) => { | |
if (!acc[item.quality]) { | |
acc[item.quality] = {}; | |
} | |
const mimeType = item.mimeType.split(';')[0]; | |
acc[item.quality][mimeType] = item; | |
return acc; | |
}, {}); | |
console.log('!!', videoUrls); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Nope because Apple is very strict with playback rights and I have dropped idea of this script in my app