mirror of
https://github.com/wukko/cobalt.git
synced 2025-02-12 05:36:22 +01:00
198 lines
4.5 KiB
JavaScript
198 lines
4.5 KiB
JavaScript
|
import UrlPattern from "url-pattern";
|
||
|
|
||
|
export const audioIgnore = ["vk", "ok", "loom"];
|
||
|
export const hlsExceptions = ["dailymotion", "vimeo", "rutube"];
|
||
|
|
||
|
export const services = {
|
||
|
bilibili: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
"video/:comId",
|
||
|
"_shortLink/:comShortLink",
|
||
|
"_tv/:lang/video/:tvId",
|
||
|
"_tv/video/:tvId"
|
||
|
],
|
||
|
subdomains: ["m"],
|
||
|
},
|
||
|
dailymotion: {
|
||
|
enabled: true,
|
||
|
patterns: ["video/:id"],
|
||
|
},
|
||
|
facebook: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
"_shortLink/:shortLink",
|
||
|
":username/videos/:caption/:id",
|
||
|
":username/videos/:id",
|
||
|
"reel/:id",
|
||
|
"share/:shareType/:id"
|
||
|
],
|
||
|
subdomains: ["web"],
|
||
|
altDomains: ["fb.watch"],
|
||
|
},
|
||
|
instagram: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
"reels/:postId",
|
||
|
":username/reel/:postId",
|
||
|
"reel/:postId",
|
||
|
"p/:postId",
|
||
|
":username/p/:postId",
|
||
|
"tv/:postId",
|
||
|
"stories/:username/:storyId"
|
||
|
],
|
||
|
altDomains: ["ddinstagram.com"],
|
||
|
},
|
||
|
loom: {
|
||
|
enabled: true,
|
||
|
patterns: ["share/:id"],
|
||
|
},
|
||
|
ok: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
"video/:id",
|
||
|
"videoembed/:id"
|
||
|
],
|
||
|
tld: "ru",
|
||
|
},
|
||
|
pinterest: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
"pin/:id",
|
||
|
"pin/:id/:garbage",
|
||
|
"url_shortener/:shortLink"
|
||
|
],
|
||
|
},
|
||
|
reddit: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
"r/:sub/comments/:id/:title",
|
||
|
"user/:user/comments/:id/:title"
|
||
|
],
|
||
|
subdomains: "*",
|
||
|
},
|
||
|
rutube: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
"video/:id",
|
||
|
"play/embed/:id",
|
||
|
"shorts/:id",
|
||
|
"yappy/:yappyId",
|
||
|
"video/private/:id?p=:key",
|
||
|
"video/private/:id"
|
||
|
],
|
||
|
tld: "ru",
|
||
|
},
|
||
|
snapchat: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
":shortLink",
|
||
|
"spotlight/:spotlightId",
|
||
|
"add/:username/:storyId",
|
||
|
"u/:username/:storyId",
|
||
|
"add/:username",
|
||
|
"u/:username"
|
||
|
],
|
||
|
subdomains: ["t", "story"],
|
||
|
},
|
||
|
soundcloud: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
":author/:song/s-:accessKey",
|
||
|
":author/:song",
|
||
|
":shortLink"
|
||
|
],
|
||
|
subdomains: ["on", "m"],
|
||
|
},
|
||
|
streamable: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
":id",
|
||
|
"o/:id",
|
||
|
"e/:id",
|
||
|
"s/:id"
|
||
|
],
|
||
|
},
|
||
|
tiktok: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
":user/video/:postId",
|
||
|
":id",
|
||
|
"t/:id",
|
||
|
":user/photo/:postId",
|
||
|
"v/:id.html"
|
||
|
],
|
||
|
subdomains: ["vt", "vm", "m"],
|
||
|
},
|
||
|
tumblr: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
"post/:id",
|
||
|
"blog/view/:user/:id",
|
||
|
":user/:id",
|
||
|
":user/:id/:trackingId"
|
||
|
],
|
||
|
subdomains: "*",
|
||
|
},
|
||
|
twitch: {
|
||
|
enabled: true,
|
||
|
patterns: [":channel/clip/:clip"],
|
||
|
tld: "tv",
|
||
|
},
|
||
|
twitter: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
":user/status/:id",
|
||
|
":user/status/:id/video/:index",
|
||
|
":user/status/:id/photo/:index",
|
||
|
":user/status/:id/mediaviewer",
|
||
|
":user/status/:id/mediaViewer"
|
||
|
],
|
||
|
subdomains: ["mobile"],
|
||
|
altDomains: ["x.com", "vxtwitter.com", "fixvx.com"],
|
||
|
},
|
||
|
vine: {
|
||
|
enabled: true,
|
||
|
patterns: ["v/:id"],
|
||
|
tld: "co",
|
||
|
},
|
||
|
vimeo: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
":id",
|
||
|
"video/:id",
|
||
|
":id/:password",
|
||
|
"/channels/:user/:id"
|
||
|
],
|
||
|
subdomains: ["player"],
|
||
|
bestAudio: "mp3",
|
||
|
},
|
||
|
vk: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
"video:userId_:videoId",
|
||
|
"clip:userId_:videoId",
|
||
|
"clips:duplicate?z=clip:userId_:videoId"
|
||
|
],
|
||
|
subdomains: ["m"],
|
||
|
},
|
||
|
youtube: {
|
||
|
enabled: true,
|
||
|
patterns: [
|
||
|
"watch?v=:id",
|
||
|
"embed/:id",
|
||
|
"watch/:id"
|
||
|
],
|
||
|
subdomains: ["music", "m"],
|
||
|
bestAudio: "opus",
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Object.values(services).forEach(service => {
|
||
|
service.patterns = service.patterns.map(
|
||
|
pattern => new UrlPattern(pattern, {
|
||
|
segmentValueCharset: UrlPattern.defaultOptions.segmentValueCharset + '@\\.'
|
||
|
})
|
||
|
)
|
||
|
})
|