Skip to content

Commit

Permalink
feat(extension): embed: youtube, qqvideo
Browse files Browse the repository at this point in the history
  • Loading branch information
mekery committed Apr 29, 2020
1 parent 1c83063 commit 141a00e
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/components/views/OEmbedView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ export default {
this.link = this.originalLink
this.src = result.src
console.log('result', result)
}
},
computed: {
Expand Down
62 changes: 62 additions & 0 deletions src/data/embed.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,12 @@ export const getEmbedService = (value) => {
* @src source src, used in iframe
*/
export const EmbedServiceLink = {
youtube: {
link: 'https://www.youtube.com/watch?v=FA8S1ISmDiY',
src: 'https://www.youtube.com/embed/FA8S1ISmDiY',
srcPrefix: 'https://www.youtube.com/embed',
linkRule: 'www.youtube.com\\/watch\\?v=\\w+'
},
youku: {
link: 'https://v.youku.com/v_show/id_XNDM0NDM4MTcy.html?spm=a2h0c.8166622.PhoneSokuUgc_4.dtitle',
src: 'https://player.youku.com/embed/XNDM0NDM4MTcy',
Expand All @@ -74,7 +80,36 @@ export const EmbedServiceLink = {
src: 'https://player.bilibili.com/player.html?bvid=BV1EJ411u7DN',
srcPrefix: 'https://player.bilibili.com/player.html?bvid',
linkRule: 'www.bilibili.com\\/video\\/\\w+',
},
qqvideo: {
link: 'https://v.qq.com/x/cover/mzc002001pvxwzy/i0033cgr1vn.html',
src: 'https://v.qq.com/txp/iframe/player.html?vid=i0033cgr1vn',
srcPrefix: 'https://v.qq.com/txp/iframe/player.html?vid',
linkRule: 'v.qq.com\\/x\\/cover\\/\\w+\\/\\w+',
}
}

function getYoutubeSrc (originalLink, result) {
let link = EmbedServiceLink.youtube
let linkRule = link.linkRule
let regex = new RegExp(linkRule)
let match = originalLink.match(regex)
if (match && match.length > 0) {
let url = match[0]
result.validLink = true

let splits = url.split('=')
let len = splits.length
if (len > 0) {
let id = splits[len - 1]
result.src = `${link.srcPrefix}/${id}`
result.validId = true
}
} else {
result.validLink = false
}

return result
}

function getYoukuSrc (originalLink, result) {
Expand Down Expand Up @@ -127,6 +162,29 @@ function getBilibiliSrc (originalLink, result) {
return result
}

function getQQVideoSrc (originalLink, result) {
let link = EmbedServiceLink.qqvideo
let linkRule = link.linkRule
let regex = new RegExp(linkRule)
let match = originalLink.match(regex)
if (match && match.length > 0) {
let url = match[0]
result.validLink = true

let splits = url.split('/')
let len = splits.length
if (len > 0) {
let id = splits[len - 1]
result.src = `${link.srcPrefix}=${id}`
result.validId = true
}
} else {
result.validLink = false
}

return result
}

export const getServiceSrc = (service, originalLink) => {
let result = {
validLink: false,
Expand All @@ -135,10 +193,14 @@ export const getServiceSrc = (service, originalLink) => {
}

switch (service) {
case 'youtube':
return getYoutubeSrc(originalLink, result)
case 'youku':
return getYoukuSrc(originalLink, result)
case 'bilibili':
return getBilibiliSrc(originalLink, result)
case 'qqvideo':
return getQQVideoSrc(originalLink, result)
}

return result
Expand Down

0 comments on commit 141a00e

Please sign in to comment.