5.5: vine support and bug fixes
- added support for vine archives - fixed ability to download muted videos from tumblr - removed extra instagram id testing which i left by mistake
This commit is contained in:
parent
6e097de2db
commit
a25615982c
8 changed files with 64 additions and 4 deletions
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "cobalt",
|
"name": "cobalt",
|
||||||
"description": "save what you love",
|
"description": "save what you love",
|
||||||
"version": "5.4.7",
|
"version": "5.5",
|
||||||
"author": "wukko",
|
"author": "wukko",
|
||||||
"exports": "./src/cobalt.js",
|
"exports": "./src/cobalt.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|
|
@ -16,6 +16,7 @@ import tumblr from "./services/tumblr.js";
|
||||||
import vimeo from "./services/vimeo.js";
|
import vimeo from "./services/vimeo.js";
|
||||||
import soundcloud from "./services/soundcloud.js";
|
import soundcloud from "./services/soundcloud.js";
|
||||||
import instagram from "./services/instagram.js";
|
import instagram from "./services/instagram.js";
|
||||||
|
import vine from "./services/vine.js";
|
||||||
|
|
||||||
export default async function (host, patternMatch, url, lang, obj) {
|
export default async function (host, patternMatch, url, lang, obj) {
|
||||||
try {
|
try {
|
||||||
|
@ -104,7 +105,10 @@ export default async function (host, patternMatch, url, lang, obj) {
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "instagram":
|
case "instagram":
|
||||||
r = await instagram({ id: patternMatch["id"] ? patternMatch["id"] : false });
|
r = await instagram({ id: patternMatch["id"] });
|
||||||
|
break;
|
||||||
|
case "vine":
|
||||||
|
r = await vine({ id: patternMatch["id"] });
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return apiJSON(0, { t: errorUnsupported(lang) });
|
return apiJSON(0, { t: errorUnsupported(lang) });
|
||||||
|
|
|
@ -52,6 +52,7 @@ export default function(r, host, ip, audioFormat, isAudioOnly, lang, isAudioMute
|
||||||
params = { type: "bridge" };
|
params = { type: "bridge" };
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "vine":
|
||||||
case "instagram":
|
case "instagram":
|
||||||
case "tumblr":
|
case "tumblr":
|
||||||
case "twitter":
|
case "twitter":
|
||||||
|
|
|
@ -10,5 +10,5 @@ export default async function(obj) {
|
||||||
if (!html) return { error: 'ErrorCouldntFetch' };
|
if (!html) return { error: 'ErrorCouldntFetch' };
|
||||||
if (!html.includes('property="og:video" content="https://va.media.tumblr.com/')) return { error: 'ErrorEmptyDownload' };
|
if (!html.includes('property="og:video" content="https://va.media.tumblr.com/')) return { error: 'ErrorEmptyDownload' };
|
||||||
|
|
||||||
return { urls: `https://va.media.tumblr.com/${html.split('property="og:video" content="https://va.media.tumblr.com/')[1].split('"')[0]}`, audioFilename: `tumblr_${obj.id}_audio` }
|
return { urls: `https://va.media.tumblr.com/${html.split('property="og:video" content="https://va.media.tumblr.com/')[1].split('"')[0]}`, filename: `tumblr_${obj.id}.mp4`, audioFilename: `tumblr_${obj.id}_audio` }
|
||||||
}
|
}
|
||||||
|
|
8
src/modules/processing/services/vine.js
Normal file
8
src/modules/processing/services/vine.js
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
export default async function(obj) {
|
||||||
|
let post = await fetch(`https://archive.vine.co/posts/${obj.id}.json`).then((r) => { return r.json() }).catch(() => { return false });
|
||||||
|
if (!post) return { error: 'ErrorEmptyDownload' };
|
||||||
|
|
||||||
|
if (post.videoUrl) return { urls: post.videoUrl.replace("http://", "https://"), filename: `vine_${obj.id}.mp4`, audioFilename: `vine_${obj.id}_audio` };
|
||||||
|
|
||||||
|
return { error: 'ErrorEmptyDownload' }
|
||||||
|
}
|
|
@ -56,6 +56,12 @@
|
||||||
"alias": "instagram reels & video posts",
|
"alias": "instagram reels & video posts",
|
||||||
"patterns": ["reels/:id", "reel/:id", "p/:id"],
|
"patterns": ["reels/:id", "reel/:id", "p/:id"],
|
||||||
"enabled": true
|
"enabled": true
|
||||||
|
},
|
||||||
|
"vine": {
|
||||||
|
"alias": "vine archive",
|
||||||
|
"tld": "co",
|
||||||
|
"patterns": ["v/:id"],
|
||||||
|
"enabled": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,5 +26,7 @@ export const testers = {
|
||||||
"soundcloud": (patternMatch) => ((patternMatch["author"] && patternMatch["song"]
|
"soundcloud": (patternMatch) => ((patternMatch["author"] && patternMatch["song"]
|
||||||
&& (patternMatch["author"].length + patternMatch["song"].length) <= 96) || (patternMatch["shortLink"] && patternMatch["shortLink"].length <= 32)),
|
&& (patternMatch["author"].length + patternMatch["song"].length) <= 96) || (patternMatch["shortLink"] && patternMatch["shortLink"].length <= 32)),
|
||||||
|
|
||||||
"instagram": (patternMatch) => (patternMatch["id"] && patternMatch["id"].length <= 12)
|
"instagram": (patternMatch) => (patternMatch["id"] && patternMatch["id"].length <= 12),
|
||||||
|
|
||||||
|
"vine": (patternMatch) => (patternMatch["id"] && patternMatch["id"].length <= 12)
|
||||||
}
|
}
|
||||||
|
|
|
@ -814,6 +814,16 @@
|
||||||
"code": 200,
|
"code": 200,
|
||||||
"status": "stream"
|
"status": "stream"
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
"name": "reel (isAudioMuted)",
|
||||||
|
"url": "https://www.instagram.com/reel/CoEBV3eM4QR/",
|
||||||
|
"params": {
|
||||||
|
"isAudioMuted": true
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"code": 200,
|
||||||
|
"status": "stream"
|
||||||
|
}
|
||||||
}, {
|
}, {
|
||||||
"name": "inexistent reel",
|
"name": "inexistent reel",
|
||||||
"url": "https://www.instagram.com/reel/XXXXXXXXXX/",
|
"url": "https://www.instagram.com/reel/XXXXXXXXXX/",
|
||||||
|
@ -830,5 +840,34 @@
|
||||||
"code": 400,
|
"code": 400,
|
||||||
"status": "error"
|
"status": "error"
|
||||||
}
|
}
|
||||||
|
}],
|
||||||
|
"vine": [{
|
||||||
|
"name": "regular vine link (9+10=21)",
|
||||||
|
"url": "https://vine.co/v/huwVJIEJW50",
|
||||||
|
"params": {},
|
||||||
|
"expected": {
|
||||||
|
"code": 200,
|
||||||
|
"status": "redirect"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"name": "regular vine link (isAudioOnly)",
|
||||||
|
"url": "https://vine.co/v/huwVJIEJW50",
|
||||||
|
"params": {
|
||||||
|
"isAudioOnly": true
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"code": 200,
|
||||||
|
"status": "stream"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"name": "regular vine link (isAudioMuted)",
|
||||||
|
"url": "https://vine.co/v/huwVJIEJW50",
|
||||||
|
"params": {
|
||||||
|
"isAudioMuted": true
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"code": 200,
|
||||||
|
"status": "stream"
|
||||||
|
}
|
||||||
}]
|
}]
|
||||||
}
|
}
|
Loading…
Reference in a new issue