Merge pull request #33 from cloudrac3r/support-go-to-url

Better support for go to url
This commit is contained in:
Preston 2020-06-21 22:28:49 -04:00 committed by GitHub
commit c1169b9c81
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 29 additions and 10 deletions

View File

@ -53,18 +53,37 @@ const actions = {
return state.colorClasses[randomInt] return state.colorClasses[randomInt]
}, },
getVideoIdFromUrl ({ state }, url) { getVideoIdFromUrl (_, url) {
console.log('checking for id') /** @type {URL} */
console.log(url) let urlObject
const rx = /^.*(?:(?:(you|hook)tu\.?be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|&v(?:i)?=))([^#&?]*).*/ try {
urlObject = new URL(url)
const match = url.match(rx) } catch (e) {
if (match) {
return match[2]
} else {
return false return false
} }
const extractors = [
// anything with /watch?v=
function() {
if (urlObject.pathname === '/watch' && urlObject.searchParams.has('v')) {
return urlObject.searchParams.get('v')
}
},
// youtu.be
function() {
if (urlObject.host === 'youtu.be' && urlObject.pathname.match(/^\/[A-Za-z0-9_-]+$/)) {
return urlObject.pathname.slice(1)
}
},
// cloudtube
function() {
if (urlObject.host.match(/^cadence\.(gq|moe)$/) && urlObject.pathname.match(/^\/cloudtube\/video\/[A-Za-z0-9_-]+$/)) {
return urlObject.pathname.slice('/cloudtube/video/'.length)
}
}
]
return extractors.reduce((a, c) => a || c(), null) || false
} }
} }