From 7f1ba6b36ba8d6098e9c6d8a4f2338acbf57abdf Mon Sep 17 00:00:00 2001 From: wukko Date: Sat, 17 Dec 2022 17:09:49 +0600 Subject: [PATCH 01/14] 4.6.0: video muting and soundcloud client_id --- docs/API.md | 1 + package.json | 2 +- src/cobalt.js | 6 +- src/config.json | 3 + src/front/cobalt.js | 5 +- src/front/updateBanners/shutup.png | Bin 0 -> 225340 bytes src/localization/languages/en.json | 8 ++- src/localization/languages/ru.json | 14 ++-- src/modules/changelog/changelog.json | 9 ++- src/modules/pageRender/elements.js | 14 +++- src/modules/pageRender/page.js | 19 +++-- src/modules/processing/match.js | 2 +- src/modules/processing/matchActionDecider.js | 16 ++++- src/modules/processing/servicesConfig.json | 1 - src/modules/services/bilibili.js | 2 +- src/modules/services/reddit.js | 2 +- src/modules/services/soundcloud.js | 72 ++++++++++++++----- src/modules/services/tiktok.js | 4 +- src/modules/services/tumblr.js | 2 +- src/modules/services/twitter.js | 14 ++-- src/modules/services/vimeo.js | 6 +- src/modules/services/vk.js | 2 +- src/modules/stream/manage.js | 5 +- src/modules/stream/stream.js | 5 +- src/modules/stream/types.js | 32 ++++++++- src/modules/sub/utils.js | 7 +- 26 files changed, 179 insertions(+), 74 deletions(-) create mode 100644 src/front/updateBanners/shutup.png diff --git a/docs/API.md b/docs/API.md index dac2e57..9801a55 100644 --- a/docs/API.md +++ b/docs/API.md @@ -21,6 +21,7 @@ Response Body Type: ``application/json`` | isAudioOnly | boolean | ``true / false`` | ``false`` | | | isNoTTWatermark | boolean | ``true / false`` | ``false`` | Changes whether downloaded TikTok & Douyin videos have watermarks. | | isTTFullAudio | boolean | ``true / false`` | ``false`` | Enables download of original sound used in a TikTok video. | +| isAudioMuted | boolean | ``true / false`` | ``false`` | Disables audio track in video downloads. | ### Response Body Variables | key | type | variables | diff --git a/package.json b/package.json index 70b996f..7df551e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cobalt", "description": "save what you love", - "version": "4.5", + "version": "4.6.0", "author": "wukko", "exports": "./src/cobalt.js", "type": "module", diff --git a/src/cobalt.js b/src/cobalt.js index 5a0861e..bce2398 100644 --- a/src/cobalt.js +++ b/src/cobalt.js @@ -10,7 +10,7 @@ import { appName, genericUserAgent, version, internetExplorerRedirect } from "./ import { getJSON } from "./modules/api.js"; import renderPage from "./modules/pageRender/page.js"; import { apiJSON, checkJSONPost, languageCode } from "./modules/sub/utils.js"; -import { Bright, Cyan } from "./modules/sub/consoleText.js"; +import { Bright, Cyan, Green, Red } from "./modules/sub/consoleText.js"; import stream from "./modules/stream/stream.js"; import loc from "./localization/manager.js"; import { buildFront } from "./modules/build.js"; @@ -190,8 +190,8 @@ if (fs.existsSync('./.env') && process.env.selfURL && process.env.streamSalt && res.redirect('/') }); app.listen(process.env.port, () => { - console.log(`\n${Bright(`${appName} (${version})`)}\n\nURL: ${Cyan(`${process.env.selfURL}`)}\nPort: ${process.env.port}\nCurrent commit: ${Bright(`${commitHash}`)}\nStart time: ${Bright(Math.floor(new Date().getTime()))}\n`) + console.log(`\n${Cyan(appName)} ${Bright(`v.${version}-${commitHash}`)}\n\nURL: ${Cyan(`${process.env.selfURL}`)}\nPort: ${process.env.port}\nStart time: ${Bright(Math.floor(new Date().getTime()))}\n`) }); } else { - console.log(`you can't run the server without generating a .env file. please run the setup script first: npm run setup`) + console.log(Red(`cobalt hasn't been configured yet or configuration is invalid.\n`) + Bright(`please run the setup script to fix this: `) + Green(`npm run setup`)) } diff --git a/src/config.json b/src/config.json index 98bdd3f..d42baf2 100644 --- a/src/config.json +++ b/src/config.json @@ -41,6 +41,9 @@ "10-31": "🎃", "11-01": "đŸ•¯ī¸", "11-02": "đŸ•¯ī¸", + "12-20": "🎄", + "12-21": "🎄", + "12-22": "🎄", "12-23": "🎄", "12-24": "🎄", "12-25": "🎄", diff --git a/src/front/cobalt.js b/src/front/cobalt.js index b8b5ddf..0c57be8 100644 --- a/src/front/cobalt.js +++ b/src/front/cobalt.js @@ -1,7 +1,7 @@ let ua = navigator.userAgent.toLowerCase(); let isIOS = ua.match("iphone os"); let isMobile = ua.match("android") || ua.match("iphone os"); -let version = 19; +let version = 20; let regex = new RegExp(/https:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()!@:%_\+.~#?&\/\/=]*)/); let notification = `
` @@ -13,7 +13,7 @@ let switchers = { "vQuality": ["hig", "max", "mid", "low"], "aFormat": ["mp3", "best", "ogg", "wav", "opus"] } -let checkboxes = ["disableTikTokWatermark", "fullTikTokAudio"]; +let checkboxes = ["disableTikTokWatermark", "fullTikTokAudio", "muteAudio"]; let exceptions = { // used for mobile devices "vQuality": "mid" } @@ -339,6 +339,7 @@ async function download(url) { if (sGet("fullTikTokAudio") === "true") req["isTTFullAudio"] = true; // audio tiktok full } else { req["vQuality"] = sGet("vQuality").slice(0, 4); + if (sGet("muteAudio") === "true") req["isAudioMuted"] = true; if (url.includes("youtube.com/") || url.includes("/youtu.be/")) req["vFormat"] = sGet("vFormat").slice(0, 4); if ((url.includes("tiktok.com/") || url.includes("douyin.com/")) && sGet("disableTikTokWatermark") === "true") req["isNoTTWatermark"] = true; } diff --git a/src/front/updateBanners/shutup.png b/src/front/updateBanners/shutup.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc80ae847cf51e65acc22e06d78126afef0d84b GIT binary patch literal 225340 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

A@NI%pQL?-2@)}(0 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 literal 0 HcmV?d00001 diff --git a/src/localization/languages/en.json b/src/localization/languages/en.json index 745a89e..c364fc4 100644 --- a/src/localization/languages/en.json +++ b/src/localization/languages/en.json @@ -1,7 +1,7 @@ { "name": "english", "substrings": { - "ContactLink": "contact the maintainer" + "ContactLink": "file an issue on github" }, "strings": { "LinkInput": "paste the link here", @@ -38,7 +38,6 @@ "SettingsAppearanceSubtitle": "appearance", "SettingsThemeSubtitle": "theme", "SettingsFormatSubtitle": "download format", - "SettingsDownloadsSubtitle": "downloads", "SettingsQualitySubtitle": "quality", "SettingsThemeAuto": "auto", "SettingsThemeLight": "light", @@ -108,6 +107,9 @@ "DonateExplanation": "{appName} does not (and will never) serve ads or sell your data, therefore it's completely free to use. but hey! turns out keeping up a web service used by hundreds of thousands of people is somewhat costly.\n\nif you ever found {appName} useful and want to keep it online, or simply want to thank the developer, consider chipping in! each and every cent helps and is VERY appreciated.", "DonateVia": "donate via", "DonateHireMe": "or, as an alternative, you can hire me.", - "DiscordServer": "join the live conversation about {appName} on the official discord server" + "SettingsVideoMute": "mute audio", + "SettingsVideoMuteExplanation": "disables audio in downloaded video when possible. you'll get the source video file if video and audio channels are served in two files by the origin service. ignored when audio mode is on or service only supports audio.", + "SettingsVideoGeneral": "general", + "ErrorSoundCloudNoClientId": "couldn't find client_id that is required to fetch audio data from soundcloud. try again, and if issue persists, {ContactLink}." } } diff --git a/src/localization/languages/ru.json b/src/localization/languages/ru.json index d40f770..8c76ae2 100644 --- a/src/localization/languages/ru.json +++ b/src/localization/languages/ru.json @@ -1,7 +1,7 @@ { "name": "Ņ€ŅƒŅŅĐēиК", "substrings": { - "ContactLink": "ĐŊĐ°ĐŋиŅˆĐ¸ Ой ŅŅ‚ĐžĐŧ ĐŧĐĩĐšĐŊŅ‚ĐĩĐšĐŊĐĩŅ€Ņƒ" + "ContactLink": "ĐŊĐ°ĐŋиŅˆĐ¸ Ой ŅŅ‚ĐžĐŧ ĐŊĐ° github" }, "strings": { "LinkInput": "вŅŅ‚авŅŒ ŅŅŅ‹ĐģĐēŅƒ ŅŅŽĐ´Đ°", @@ -25,7 +25,7 @@ "ErrorUnsupported": "Ņ Ņ‚вОĐĩĐš ŅŅŅ‹ĐģĐēОК Ņ‡Ņ‚Đž-Ņ‚Đž ĐŊĐĩ Ņ‚Đ°Đē, иĐģи ĐļĐĩ ŅŅ‚ĐžŅ‚ ŅĐĩŅ€Đ˛Đ¸Ņ ĐĩŅ‰Ņ‘ ĐŊĐĩ ĐŋОддĐĩŅ€ĐļиваĐĩŅ‚ŅŅ. ĐŧĐžĐļĐĩŅ‚ ĐąŅ‹Ņ‚ŅŒ, Ņ‚Ņ‹ вŅŅ‚авиĐģ ĐŊĐĩ Ņ‚Ņƒ ŅŅŅ‹ĐģĐēŅƒ?", "ErrorBrokenLink": "{s} ĐŋОддĐĩŅ€ĐļиваĐĩŅ‚ŅŅ, ĐŊĐž Ņ Ņ‚вОĐĩĐš ŅŅŅ‹ĐģĐēОК Ņ‡Ņ‚Đž-Ņ‚Đž ĐŊĐĩ Ņ‚Đ°Đē. ĐŧĐžĐļĐĩŅ‚ ĐąŅ‹Ņ‚ŅŒ, Ņ‚Ņ‹ ĐĩŅ‘ ĐŊĐĩ ĐŋĐžĐģĐŊĐžŅŅ‚ŅŒŅŽ ŅĐēĐžĐŋиŅ€ĐžĐ˛Đ°Đģ?", "ErrorNoLink": "Ņ ĐŊĐĩ ĐŗĐ°Đ´Đ°ĐģĐēĐ° и ĐŊĐĩ ĐŧĐžĐŗŅƒ ŅƒĐŗĐ°Đ´Ņ‹Đ˛Đ°Ņ‚ŅŒ, Ņ‡Ņ‚Đž Ņ‚Ņ‹ Ņ…ĐžŅ‡ĐĩŅˆŅŒ ŅĐēĐ°Ņ‡Đ°Ņ‚ŅŒ. ĐŋĐžĐŋŅ€ĐžĐąŅƒĐš в ŅĐģĐĩĐ´ŅƒŅŽŅ‰Đ¸Đš Ņ€Đ°Đˇ вŅŅ‚авиŅ‚ŅŒ ŅŅŅ‹ĐģĐēŅƒ.", - "ErrorPageRenderFail": "Ņ‡Ņ‚Đž-Ņ‚Đž ĐŋĐžŅˆĐģĐž ĐŊĐĩ Ņ‚Đ°Đē, ĐŋĐžŅŅ‚ĐžĐŧŅƒ Ņƒ ĐŧĐĩĐŊŅ ĐŊĐĩ ĐŋĐžĐģŅƒŅ‡Đ¸ĐģĐžŅŅŒ ŅŅ€ĐĩĐŊĐ´ĐĩŅ€Đ¸Ņ‚ŅŒ ŅŅ‚Ņ€Đ°ĐŊиŅ†Ņƒ. ĐĩŅĐģи ŅŅ‚Đž ĐŋОвŅ‚ĐžŅ€Đ¸Ņ‚ŅŅ ĐĩŅ‰Ņ‘ Ņ€Đ°Đˇ, ĐŋĐžĐļĐ°ĐģŅƒĐšŅŅ‚Đ°, {ContactLink}. Ņ‚Đ°ĐēĐļĐĩ ĐŋŅ€Đ¸ĐģĐžĐļи Ņ…ŅŅˆ Ņ‚ĐĩĐēŅƒŅ‰ĐĩĐŗĐž ĐēĐžĐŧĐŧиŅ‚Đ° ({s}) Ņ Đ´ĐĩĐšŅŅ‚виŅĐŧи Đ´ĐģŅ ĐŋОвŅ‚ĐžŅ€ĐĩĐŊиŅ ŅŅ‚ОК ĐžŅˆĐ¸ĐąĐēи. ĐŧĐžĐļĐŊĐž ĐŊĐ° Ņ€ŅƒŅŅĐēĐžĐŧ ŅĐˇŅ‹ĐēĐĩ. ŅĐŋĐ°ŅĐ¸ĐąĐž :)", + "ErrorPageRenderFail": "Ņ‡Ņ‚Đž-Ņ‚Đž ĐŋĐžŅˆĐģĐž ĐŊĐĩ Ņ‚Đ°Đē и Ņƒ ĐŧĐĩĐŊŅ ĐŊĐĩ ĐŋĐžĐģŅƒŅ‡Đ¸ĐģĐžŅŅŒ ŅŅ€ĐĩĐŊĐ´ĐĩŅ€Đ¸Ņ‚ŅŒ ŅŅ‚Ņ€Đ°ĐŊиŅ†Ņƒ. ĐĩŅĐģи ŅŅ‚Đž ĐŋОвŅ‚ĐžŅ€Đ¸Ņ‚ŅŅ ĐĩŅ‰Ņ‘ Ņ€Đ°Đˇ, ĐŋĐžĐļĐ°ĐģŅƒĐšŅŅ‚Đ°, {ContactLink}. Ņ‚Đ°ĐēĐļĐĩ ĐŋŅ€Đ¸ĐģĐžĐļи Ņ…ŅŅˆ Ņ‚ĐĩĐēŅƒŅ‰ĐĩĐŗĐž ĐēĐžĐŧĐŧиŅ‚Đ° ({s}) Ņ Đ´ĐĩĐšŅŅ‚виŅĐŧи Đ´ĐģŅ ĐŋОвŅ‚ĐžŅ€ĐĩĐŊиŅ ŅŅ‚ОК ĐžŅˆĐ¸ĐąĐēи. ĐŧĐžĐļĐŊĐž ĐŊĐ° Ņ€ŅƒŅŅĐēĐžĐŧ ŅĐˇŅ‹ĐēĐĩ. ŅĐŋĐ°ŅĐ¸ĐąĐž :)", "ErrorRateLimit": "Ņ‚Ņ‹ Đ´ĐĩĐģĐ°ĐĩŅˆŅŒ ŅĐģиŅˆĐēĐžĐŧ ĐŧĐŊĐžĐŗĐž СаĐŋŅ€ĐžŅĐžĐ˛. ŅƒŅĐŋĐžĐēОКŅŅ и ĐŋĐžĐŋŅ€ĐžĐąŅƒĐš ĐĩŅ‰Ņ‘ Ņ€Đ°Đˇ Ņ‡ĐĩŅ€ĐĩС ĐŊĐĩŅĐēĐžĐģŅŒĐēĐž ĐŧиĐŊŅƒŅ‚.", "ErrorCouldntFetch": "ĐŧĐŊĐĩ ĐŊĐĩ ŅƒĐ´Đ°ĐģĐžŅŅŒ ĐŋĐžĐģŅƒŅ‡Đ¸Ņ‚ŅŒ иĐŊŅ„Ņƒ Đž Ņ‚вОĐĩĐš ŅŅŅ‹ĐģĐēĐĩ. ĐŋŅ€ĐžĐ˛ĐĩŅ€ŅŒ ĐĩŅ‘ и ĐŋĐžĐŋŅ€ĐžĐąŅƒĐš ĐĩŅ‰Ņ‘ Ņ€Đ°Đˇ.", "ErrorLengthLimit": "Ņ‚вОŅ‘ видĐĩĐž Đ´ĐģиĐŊĐŊĐĩĐĩ Ņ‡ĐĩĐŧ {s} ĐŧиĐŊŅƒŅ‚(Ņ‹). ŅŅ‚Đž ĐŋŅ€ĐĩвŅ‹ŅˆĐ°ĐĩŅ‚ Ņ‚ĐĩĐēŅƒŅ‰Đ¸Đš ĐģиĐŧиŅ‚. ŅĐēĐ°Ņ‡Đ°Đš Ņ‡Ņ‚Đž-ĐŊийŅƒĐ´ŅŒ ĐŋĐžĐēĐžŅ€ĐžŅ‡Đĩ, Đ° ĐŊĐĩ ŅĐēŅ€Đ°ĐŊиСаŅ†Đ¸ŅŽ \"вОКĐŊŅ‹ и ĐŧиŅ€Đ°\".", @@ -38,7 +38,6 @@ "SettingsAppearanceSubtitle": "вĐŊĐĩŅˆĐŊиК вид", "SettingsThemeSubtitle": "Ņ‚ĐĩĐŧĐ°", "SettingsFormatSubtitle": "Ņ„ĐžŅ€ĐŧĐ°Ņ‚ СаĐŗŅ€ŅƒĐˇĐžĐē", - "SettingsDownloadsSubtitle": "СаĐŗŅ€ŅƒĐˇĐēи", "SettingsQualitySubtitle": "ĐēĐ°Ņ‡ĐĩŅŅ‚вО", "SettingsThemeAuto": "авŅ‚Đž", "SettingsThemeLight": "ŅĐ˛ĐĩŅ‚ĐģĐ°Ņ", @@ -54,8 +53,8 @@ "AccessibilityEnableDownloadPopup": "ŅĐŋŅ€Đ°ŅˆĐ¸Đ˛Đ°Ņ‚ŅŒ, Ņ‡Ņ‚Đž Đ´ĐĩĐģĐ°Ņ‚ŅŒ Ņ СаĐŗŅ€ŅƒĐˇĐēĐ°Đŧи", "SettingsFormatDescription": "вŅ‹ĐąĐ¸Ņ€Đ°Đš webm, ĐĩŅĐģи Ņ…ĐžŅ‡ĐĩŅˆŅŒ ĐŧĐ°ĐēŅĐ¸ĐŧĐ°ĐģŅŒĐŊĐžĐĩ ĐēĐ°Ņ‡ĐĩŅŅ‚вО. Ņƒ webm видĐĩĐž йиŅ‚Ņ€ĐĩĐšŅ‚ ОйŅ‹Ņ‡ĐŊĐž вŅ‹ŅˆĐĩ, ĐŊĐž ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚ва ĐŊĐ° ios ĐŊĐĩ ĐŧĐžĐŗŅƒŅ‚ ĐŋŅ€ĐžĐ¸ĐŗŅ€Ņ‹Đ˛Đ°Ņ‚ŅŒ иŅ… ĐąĐĩС ŅŅ‚ĐžŅ€ĐžĐŊĐŊиŅ… ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиК.", "SettingsQualityDescription": "ĐĩŅĐģи вŅ‹ĐąŅ€Đ°ĐŊĐŊĐžĐĩ ĐēĐ°Ņ‡ĐĩŅŅ‚вО ĐŊĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž, Ņ‚Đž вŅ‹ĐąĐ¸Ņ€Đ°ĐĩŅ‚ŅŅ ĐąĐģиĐļĐ°ĐšŅˆĐĩĐĩ Đē ĐŊĐĩĐŧŅƒ.\nĐĩŅĐģи Ņ‚Ņ‹ Ņ…ĐžŅ‡ĐĩŅˆŅŒ ĐžĐŋŅƒĐąĐģиĐēОваŅ‚ŅŒ видĐĩĐž Ņ youtube ĐŗĐ´Đĩ-Ņ‚Đž в ŅĐžŅ†. ŅĐĩŅ‚ŅŅ…, Ņ‚Đž вŅ‹ĐąĐ¸Ņ€Đ°Đš ĐēĐžĐŧйиĐŊĐ°Ņ†Đ¸ŅŽ иС mp4 и 720p. Ņƒ Ņ‚Đ°ĐēиŅ… видĐĩĐž ĐēОдĐĩĐē ОйŅ‹Ņ‡ĐŊĐž ĐŊĐĩ av1, ĐŋĐžŅŅ‚ĐžĐŧŅƒ ĐžĐŊи Đ´ĐžĐģĐļĐŊŅ‹ Ņ€Đ°ĐąĐžŅ‚Đ°Ņ‚ŅŒ ĐŋŅ€Đ°ĐēŅ‚иŅ‡ĐĩŅĐēи вĐĩСдĐĩ.", - "LinkGitHubIssues": ">> ŅĐžĐžĐąŅ‰Đ°Đš Đž ĐŋŅ€ĐžĐąĐģĐĩĐŧĐ°Ņ… и ŅĐŧĐžŅ‚Ņ€Đ¸ иŅŅ…ОдĐŊŅ‹Đš ĐēОд ĐŊĐ° ĐŗиŅ‚Ņ…Đ°ĐąĐĩ", - "LinkGitHubChanges": ">> ŅĐŧĐžŅ‚Ņ€Đ¸ ĐŋŅ€ĐĩĐ´Ņ‹Đ´ŅƒŅ‰Đ¸Đĩ иСĐŧĐĩĐŊĐĩĐŊиŅ ĐŊĐ° ĐŗиŅ‚Ņ…Đ°ĐąĐĩ", + "LinkGitHubIssues": ">> ŅĐžĐžĐąŅ‰Đ°Đš Đž ĐŋŅ€ĐžĐąĐģĐĩĐŧĐ°Ņ… и ŅĐŧĐžŅ‚Ņ€Đ¸ иŅŅ…ОдĐŊŅ‹Đš ĐēОд ĐŊĐ° github", + "LinkGitHubChanges": ">> ŅĐŧĐžŅ‚Ņ€Đ¸ ĐŋŅ€ĐĩĐ´Ņ‹Đ´ŅƒŅ‰Đ¸Đĩ иСĐŧĐĩĐŊĐĩĐŊиŅ ĐŊĐ° github", "NoScriptMessage": "{appName} иŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ javascript Đ´ĐģŅ ОйŅ€Đ°ĐąĐžŅ‚Đēи ŅŅŅ‹ĐģĐžĐē и иĐŊŅ‚ĐĩŅ€Đ°ĐēŅ‚ивĐŊĐžĐŗĐž иĐŊŅ‚ĐĩŅ€Ņ„ĐĩĐšŅĐ°. Ņ‚Ņ‹ Đ´ĐžĐģĐļĐĩĐŊ Ņ€Đ°ĐˇŅ€ĐĩŅˆĐ¸Ņ‚ŅŒ иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиĐĩ javascript, Ņ‡Ņ‚ОйŅ‹ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒŅŅ ŅĐ°ĐšŅ‚ĐžĐŧ. Ņ‚ŅƒŅ‚ ĐŊĐĩŅ‚ ĐŊиĐēĐ°ĐēиŅ… Ņ‚Ņ€ĐĩĐēĐĩŅ€ĐžĐ˛ иĐģи Ņ€ĐĩĐēĐģĐ°ĐŧŅ‹, ОйĐĩŅ‰Đ°ŅŽ.", "DownloadPopupDescriptionIOS": "Ņ‚Đ°Đē ĐēĐ°Đē Ņƒ Ņ‚ĐĩĐąŅ ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚вО ĐŊĐ° ios, Ņ‚ĐĩĐąĐĩ ĐŊŅƒĐļĐŊĐž СаĐļĐ°Ņ‚ŅŒ ĐēĐŊĐžĐŋĐēŅƒ \"ŅĐēĐ°Ņ‡Đ°Ņ‚ŅŒ\", СаŅ‚ĐĩĐŧ ŅĐēŅ€Ņ‹Ņ‚ŅŒ ĐŋŅ€ĐĩвŅŒŅŽ видĐĩĐž и вŅ‹ĐąŅ€Đ°Ņ‚ŅŒ \"СаĐŗŅ€ŅƒĐˇĐ¸Ņ‚ŅŒ Ņ„Đ°ĐšĐģ ĐŋĐž ŅŅŅ‹ĐģĐēĐĩ\" в ĐŋĐžŅĐ˛Đ¸Đ˛ŅˆĐĩĐŧŅŅ ĐžĐēĐŊĐĩ.", "DownloadPopupDescription": "ĐēĐŊĐžĐŋĐēĐ° ŅĐēĐ°Ņ‡Đ¸Đ˛Đ°ĐŊиŅ ĐžŅ‚ĐēŅ€Ņ‹Đ˛Đ°ĐĩŅ‚ ĐŊОвОĐĩ ĐžĐēĐŊĐž Ņ Ņ„Đ°ĐšĐģĐžĐŧ. Ņ‚Ņ‹ ĐŧĐžĐļĐĩŅˆŅŒ ĐžŅ‚ĐēĐģŅŽŅ‡Đ¸Ņ‚ŅŒ вŅ‹ĐąĐžŅ€ ĐŧĐĩŅ‚Ода ŅĐžŅ…Ņ€Đ°ĐŊĐĩĐŊиŅ Ņ„Đ°ĐšĐģĐ° в ĐŊĐ°ŅŅ‚Ņ€ĐžĐšĐēĐ°Ņ….", @@ -108,6 +107,9 @@ "DonateExplanation": "{appName} ĐŊĐĩ ĐŋиŅ…Đ°ĐĩŅ‚ Ņ€ĐĩĐēĐģĐ°ĐŧŅƒ Ņ‚ĐĩĐąĐĩ в ĐģиŅ†Đž и ĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°Ņ‘Ņ‚ Ņ‚вОи ĐģиŅ‡ĐŊŅ‹Đĩ Đ´Đ°ĐŊĐŊŅ‹Đĩ, Đ° СĐŊĐ°Ņ‡Đ¸Ņ‚ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚ ŅĐžĐ˛ĐĩŅ€ŅˆĐĩĐŊĐŊĐž ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐŊĐž. ĐŊĐž ĐžĐēаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ, Ņ‡Ņ‚Đž Ņ…ĐžŅŅ‚иĐŊĐŗ ŅĐĩŅ€Đ˛Đ¸ŅĐ°, ĐēĐžŅ‚ĐžŅ€Ņ‹Đŧ ĐŋĐžĐģŅŒĐˇŅƒŅŽŅ‚ŅŅ ŅĐžŅ‚ĐŊи Ņ‚Ņ‹ŅŅŅ‡ ĐģŅŽĐ´ĐĩĐš, ОйŅ…ОдиŅ‚ŅŅ дОвОĐģŅŒĐŊĐž Đ´ĐžŅ€ĐžĐŗĐž.\n\nĐĩŅĐģи Ņ‚Ņ‹ Ņ…ĐžŅ‡ĐĩŅˆŅŒ, Ņ‡Ņ‚ОйŅ‹ Ņ‚вОК ĐģŅŽĐąĐ¸ĐŧŅ‹Đš СаĐŗŅ€ŅƒĐˇŅ‡Đ¸Đē ĐžŅŅ‚аваĐģŅŅ ĐžĐŊĐģĐ°ĐšĐŊ, Đ° Ņ€Đ°ĐˇŅ€Đ°ĐąĐžŅ‚Ņ‡Đ¸Đē ĐŊĐĩ ĐŋĐžĐŧĐĩŅ€ Ņ ĐŗĐžĐģОдŅƒ вĐŧĐĩŅŅ‚Đĩ Ņ двŅƒĐŧŅ ĐēĐžŅ‚Đ°Đŧи, Ņ‚Đž ĐŋОдŅƒĐŧĐ°Đš ĐŊĐ°Đ´ Ņ‚ĐĩĐŧ, Ņ‡Ņ‚ОйŅ‹ СадОĐŊĐ°Ņ‚иŅ‚ŅŒ. ĐēĐ°ĐļĐ´Ņ‹Đš Ņ€ŅƒĐąĐģŅŒ ĐŋĐžĐŧĐžĐļĐĩŅ‚ ĐŧĐŊĐĩ, ĐŧОиĐŧ ĐēĐžŅ‚Đ°Đŧ, и {appName}!", "DonateVia": "ĐžŅ‚ĐēŅ€Ņ‹Ņ‚ŅŒ", "DonateHireMe": "иĐģи ĐļĐĩ Ņ‚Ņ‹ ĐŧĐžĐļĐĩŅˆŅŒ ĐŋŅ€Đ¸ĐŗĐģĐ°ŅĐ¸Ņ‚ŅŒ ĐŧĐĩĐŊŅ ĐŊĐ° Ņ€Đ°ĐąĐžŅ‚Ņƒ.", - "DiscordServer": "ĐŋŅ€Đ¸ŅĐžĐĩдиĐŊŅĐšŅŅ Đē ĐļивОК ĐąĐĩŅĐĩĐ´Đĩ Đž {appName} ĐŋŅ€ŅĐŧĐž ĐŊĐ° ĐĩĐŗĐž ĐžŅ„иŅ†Đ¸Đ°ĐģŅŒĐŊĐžĐŧ discord ŅĐĩŅ€Đ˛ĐĩŅ€Đĩ" + "SettingsVideoMute": "ĐžŅ‚ĐēĐģŅŽŅ‡Đ¸Ņ‚ŅŒ Đ°ŅƒĐ´Đ¸Đž", + "SettingsVideoMuteExplanation": "ŅƒĐąĐ¸Ņ€Đ°ĐĩŅ‚ Đ°ŅƒĐ´Đ¸Đž ĐŋŅ€Đ¸ СаĐŗŅ€ŅƒĐˇĐēĐĩ видĐĩĐž, ĐēĐžĐŗĐ´Đ° ŅŅ‚Đž вОСĐŧĐžĐļĐŊĐž. Ņ‚Ņ‹ ĐŋĐžĐģŅƒŅ‡Đ¸ŅˆŅŒ иŅŅ…ОдĐŊĐžĐĩ видĐĩĐž ĐŊĐ°ĐŋŅ€ŅĐŧŅƒŅŽ ĐžŅ‚ ŅĐĩŅ€Đ˛Đ¸ŅĐ°, ĐĩŅĐģи видĐĩĐž и Đ°ŅƒĐ´Đ¸Đž ĐēĐ°ĐŊĐ°ĐģŅ‹ Ņ€Đ°ĐˇĐąĐ¸Ņ‚Ņ‹ ĐŋĐž Ņ„Đ°ĐšĐģĐ°Đŧ. иĐŗĐŊĐžŅ€Đ¸Ņ€ŅƒĐĩŅ‚ŅŅ ĐĩŅĐģи вĐēĐģŅŽŅ‡ĐĩĐŊ Ņ€ĐĩĐļиĐŧ Đ°ŅƒĐ´Đ¸Đž иĐģи ŅĐĩŅ€Đ˛Đ¸Ņ ĐŋОддĐĩŅ€ĐļиваĐĩŅ‚ Ņ‚ĐžĐģŅŒĐēĐž Đ°ŅƒĐ´Đ¸Đž СаĐŗŅ€ŅƒĐˇĐēи.", + "SettingsVideoGeneral": "ĐžŅĐŊОвĐŊŅ‹Đĩ", + "ErrorSoundCloudNoClientId": "ĐŧĐŊĐĩ ĐŊĐĩ ŅƒĐ´Đ°ĐģĐžŅŅŒ Đ´ĐžŅŅ‚Đ°Ņ‚ŅŒ client_id, ĐēĐžŅ‚ĐžŅ€Ņ‹Đš ĐŊĐĩОйŅ…ОдиĐŧ Đ´ĐģŅ ĐŋĐžĐģŅƒŅ‡ĐĩĐŊиŅ Đ°ŅƒĐ´Đ¸Đž иС soundcloud. ĐŋĐžĐŋŅ€ĐžĐąŅƒĐš ĐĩŅ‰Ņ‘ Ņ€Đ°Đˇ, ĐŊĐž ĐĩŅĐģи Ņ‚Đ°Đē и ĐŊĐĩ ĐŋĐžĐģŅƒŅ‡Đ¸Ņ‚ŅŅ, {ContactLink}." } } diff --git a/src/modules/changelog/changelog.json b/src/modules/changelog/changelog.json index 43f86c7..01c21a2 100644 --- a/src/modules/changelog/changelog.json +++ b/src/modules/changelog/changelog.json @@ -1,11 +1,16 @@ { "current": { + "version": "4.6", + "title": "mute videos and proper soundcloud support", + "banner": "shutup.png", + "content": "i've been longing to implement both of these things, and here they finally are.\n\nservice-related improvements:\n

• you now can download videos with no audio! simply enable the \"mute audio\" option in settings > audio.\n• soundcloud module has been updated, and downloads should no longer break after some time.
\nvisual improvements:\n
• moved some things around in settings popup, and added separators where separation is needed.\n• updated some texts in english and russian.\n• version and commit hash have been joined together, now they're a single unit.
\ninternal improvements:\n
• updated api documentation to include isAudioMuted.\n• created render elements for separator and explanation due to high duplication of them in the page.\n• fixed some code quirks.
\nhere's how soundcloud downloads got fixed:\n\npreviously, client_id was (stupidly) hardcoded. that means cobalt wasn't able to fetch song data if soundcloud web app got updated.\nnow, cobalt tries to find the up-to-date client_id, caches it in memory, and checks if web app version has changed to update the id accordingly. you can see this change for yourself on github." + }, + "history": [{ "version": "4.5", "title": "better, faster, stronger, stable", "banner": "meowthstrong.webp", "content": "your favorite social media downloader just got even better! this update includes a ton of imporvements and fixes.\n\nin fact, there are so many changes, i had to split them in sections.\n\nservice-related improvements:\n
• vimeo module has been revamped, all sorts of videos should now be supported.\n• vimeo audio downloads! you now can download audios from more recent videos.\n• {appName} now supports all sorts of tumblr links. (even those scary ones from the mobile app)\n• vk clips support has been fixed. they rolled back the separation of videos and clips, so i had to do the same.\n• youtube videos with community warnings should now be possible to download.
\nuser interface improvements:\n
• list of supported services is now MUCH easier to read.\n• banners in changelog history should no longer overlap each other.\n• bullet points! they have a bit of extra padding, so it makes them stand out of the rest of text.
\ninternal improvements:\n
• cobalt will now match the link to regex when using ?u= query for autopasting it into input area.\n• better rate limiting: limiting now is done per minute, not per 20 minutes. this ensures less waiting and less attack area for request spammers.\n• moved to my own fork of ytdl-core, cause main project seems to have been abandoned. go check it out on github or npm!\n• ALL user inputs are now properly sanitized on the server. that includes variables for POST api method, too.\n• \"got\" package has been (mostly) replaced by native fetch api. this should greately reduce ram usage.\n• all unnecessary duplications of module imports have been gotten rid of. no more error passing strings from inside of service modules. you don't make mistakes only if you don't do anything, right?\n• other code optimizations. there's less clutter overall.
\nhuge update, right? seems like everything's fixed now?\n\nnope, one issue still persists: sometimes youtube server drops packets for an audio file while cobalt's rendering the video for you. this results in abrupt cuts of audio. if you want to help solving this issue, please feel free to do it on github!\n\nthank you for reading this, and thank you for sticking with cobalt and me." - }, - "history": [{ + }, { "version": "4.4", "title": "over 1 million monthly requests. thank you.", "banner": "onemillionr.webp", diff --git a/src/modules/pageRender/elements.js b/src/modules/pageRender/elements.js index 25bebb9..fd1b6c5 100644 --- a/src/modules/pageRender/elements.js +++ b/src/modules/pageRender/elements.js @@ -39,7 +39,15 @@ export function checkbox(action, text, aria, paddingType) { ${text} ` } - +export function sep(paddingType) { + let paddingClass = `` + switch(paddingType) { + case 0: + paddingClass += ` top-margin`; + break; + } + return `
` +} export function popup(obj) { let classes = obj.classes ? obj.classes : [] let body = obj.body; @@ -143,7 +151,9 @@ export function footerButtons(obj) { return ` ` } - +export function explanation(text) { + return `
${text}
` +} export function celebrationsEmoji() { let n = new Date().toISOString().split('T')[0].split('-'); let dm = `${n[1]}-${n[2]}`; diff --git a/src/modules/pageRender/page.js b/src/modules/pageRender/page.js index 2c5c188..938f3b0 100644 --- a/src/modules/pageRender/page.js +++ b/src/modules/pageRender/page.js @@ -1,4 +1,4 @@ -import { backdropLink, celebrationsEmoji, checkbox, footerButtons, multiPagePopup, popup, popupWithBottomButtons, settingsCategory, switcher } from "./elements.js"; +import { backdropLink, celebrationsEmoji, checkbox, explanation, footerButtons, multiPagePopup, popup, popupWithBottomButtons, sep, settingsCategory, switcher } from "./elements.js"; import { services as s, appName, authorInfo, version, quality, repo, donations, supportedAudio } from "../config.js"; import { getCommitInfo } from "../sub/currentCommit.js"; import loc from "../../localization/manager.js"; @@ -115,7 +115,7 @@ export default function(obj) { }, { text: changelogManager("content") }, { - text: `
${obj.hash}: ${com[0]}`, + text: `${sep()}${obj.hash}: ${com[0]}`, classes: ["changelog-subtitle"], nopadding: true }, { @@ -153,13 +153,13 @@ export default function(obj) { text: loc(obj.lang, 'DonateLinksDescription'), classes: ["explanation"] }, { - text: `
`, + text: sep(), raw: true }, { text: donate.replace(/REPLACEME/g, loc(obj.lang, 'ClickToCopy')), classes: ["desc-padding"] }, { - text: `
`, + text: sep(), raw: true }, { text: loc(obj.lang, 'DonateHireMe', authorInfo.link), @@ -173,7 +173,7 @@ export default function(obj) { closeAria: loc(obj.lang, 'AccessibilityClosePopup'), header: { aboveTitle: { - text: `v.${version} ~ ${obj.hash}`, + text: `v.${version}-${obj.hash}`, url: `${repo}/commit/${obj.hash}` }, title: `${emoji("⚙ī¸", 30)} ${loc(obj.lang, 'TitlePopupSettings')}` @@ -183,7 +183,7 @@ export default function(obj) { title: `${emoji("đŸŽŦ")} ${loc(obj.lang, 'SettingsVideoTab')}`, content: settingsCategory({ name: "downloads", - title: loc(obj.lang, 'SettingsDownloadsSubtitle'), + title: loc(obj.lang, 'SettingsVideoGeneral'), body: switcher({ name: "vQuality", subtitle: loc(obj.lang, 'SettingsQualitySubtitle'), @@ -202,8 +202,7 @@ export default function(obj) { "text": `${loc(obj.lang, 'SettingsQualitySwitchLow')}
(${quality.low}p)` }] }) - }) + `${!isIOS ? checkbox("downloadPopup", loc(obj.lang, 'SettingsEnableDownloadPopup'), loc(obj.lang, 'AccessibilityEnableDownloadPopup'), 1) : ''}` - + settingsCategory({ + }) + settingsCategory({ name: "youtube", body: switcher({ name: "vFormat", @@ -234,7 +233,7 @@ export default function(obj) { subtitle: loc(obj.lang, 'SettingsFormatSubtitle'), explanation: loc(obj.lang, 'SettingsAudioFormatDescription'), items: audioFormats - }) + }) + sep(0) + checkbox("muteAudio", loc(obj.lang, 'SettingsVideoMute'), loc(obj.lang, 'SettingsVideoMute'), 3) + explanation(loc(obj.lang, 'SettingsVideoMuteExplanation')) }) + settingsCategory({ name: "tiktok", title: "tiktok & douyin", @@ -263,7 +262,7 @@ export default function(obj) { }) + settingsCategory({ name: "miscellaneous", title: loc(obj.lang, 'Miscellaneous'), - body: checkbox("disableChangelog", loc(obj.lang, 'SettingsDisableNotifications')) + body: checkbox("disableChangelog", loc(obj.lang, 'SettingsDisableNotifications')) + `${!isIOS ? checkbox("downloadPopup", loc(obj.lang, 'SettingsEnableDownloadPopup'), loc(obj.lang, 'AccessibilityEnableDownloadPopup'), 1) : ''}` }) }], })} diff --git a/src/modules/processing/match.js b/src/modules/processing/match.js index a7cc586..b840df1 100644 --- a/src/modules/processing/match.js +++ b/src/modules/processing/match.js @@ -107,7 +107,7 @@ export default async function (host, patternMatch, url, lang, obj) { default: return apiJSON(0, { t: errorUnsupported(lang) }); } - return !r.error ? matchActionDecider(r, host, obj.ip, obj.aFormat, obj.isAudioOnly, lang) : apiJSON(0, { + return !r.error ? matchActionDecider(r, host, obj.ip, obj.aFormat, obj.isAudioOnly, lang, obj.isAudioMuted) : apiJSON(0, { t: Array.isArray(r.error) ? loc(lang, r.error[0], r.error[1]) : loc(lang, r.error) }); } catch (e) { diff --git a/src/modules/processing/matchActionDecider.js b/src/modules/processing/matchActionDecider.js index 7f03b8c..2de3ed2 100644 --- a/src/modules/processing/matchActionDecider.js +++ b/src/modules/processing/matchActionDecider.js @@ -2,8 +2,8 @@ import { audioIgnore, services, supportedAudio } from "../config.js" import { apiJSON } from "../sub/utils.js" import loc from "../../localization/manager.js"; -export default function(r, host, ip, audioFormat, isAudioOnly, lang) { - if (!isAudioOnly && !r.picker) { +export default function(r, host, ip, audioFormat, isAudioOnly, lang, isAudioMuted) { + if (!isAudioOnly && !r.picker && !isAudioMuted) { switch (host) { case "twitter": return apiJSON(1, { u: r.urls }); @@ -42,7 +42,7 @@ export default function(r, host, ip, audioFormat, isAudioOnly, lang) { case "tumblr": return apiJSON(1, { u: r.urls }); case "vimeo": - if (r.filename) { + if (Array.isArray(r.urls)) { return apiJSON(2, { type: "render", u: r.urls, service: host, ip: ip, filename: r.filename @@ -51,6 +51,16 @@ export default function(r, host, ip, audioFormat, isAudioOnly, lang) { return apiJSON(1, { u: r.urls }); } } + } else if (isAudioMuted) { + let isSplit = Array.isArray(r.urls); + return apiJSON(2, { + type: isSplit ? "bridge" : "mute", + u: isSplit ? r.urls[0] : r.urls, + service: host, + ip: ip, + filename: r.filename, + mute: true, + }); } else if (r.picker) { switch (host) { case "douyin": diff --git a/src/modules/processing/servicesConfig.json b/src/modules/processing/servicesConfig.json index c0cd70a..5535025 100644 --- a/src/modules/processing/servicesConfig.json +++ b/src/modules/processing/servicesConfig.json @@ -86,7 +86,6 @@ "soundcloud": { "patterns": [":author/:song", ":shortLink"], "bestAudio": "none", - "clientid": "YeTcsotswIIc4sse5WZsXszVxMtP6eLc", "enabled": true } } diff --git a/src/modules/services/bilibili.js b/src/modules/services/bilibili.js index d831132..367e538 100644 --- a/src/modules/services/bilibili.js +++ b/src/modules/services/bilibili.js @@ -4,7 +4,7 @@ export default async function(obj) { try { let html = await fetch(`https://bilibili.com/video/${obj.id}`, { headers: {"user-agent": genericUserAgent} - }).then(async (r) => {return await r.text()}).catch(() => {return false}); + }).then(async (r) => {return r.text()}).catch(() => {return false}); if (!html) return { error: 'ErrorCouldntFetch' }; if (html.includes('')[0]) if (json["media"]["transcodings"]) { - let fileUrl = `${json.media.transcodings[0]["url"].replace("/hls", "/progressive")}?client_id=${services["soundcloud"]["clientid"]}&track_authorization=${json.track_authorization}`; - if (fileUrl.substring(0, 54) === "https://api-v2.soundcloud.com/media/soundcloud:tracks:") { - if (json.duration < maxAudioDuration) { - let file = await fetch(fileUrl).then(async (r) => {return (await r.json()).url}).catch(() => {return false}); - if (!file) return { error: 'ErrorCouldntFetch' }; - return { - urls: file, - audioFilename: `soundcloud_${json.id}`, - fileMetadata: { - title: json.title, - artist: json.user.username, + let clientId = await findClientID(); + if (clientId) { + let fileUrl = `${json.media.transcodings[0]["url"].replace("/hls", "/progressive")}?client_id=${clientId}&track_authorization=${json.track_authorization}`; + if (fileUrl.substring(0, 54) === "https://api-v2.soundcloud.com/media/soundcloud:tracks:") { + if (json.duration < maxAudioDuration) { + let file = await fetch(fileUrl).then(async (r) => {return (await r.json()).url}).catch(() => {return false}); + if (!file) return { error: 'ErrorCouldntFetch' }; + return { + urls: file, + audioFilename: `soundcloud_${json.id}`, + fileMetadata: { + title: json.title, + artist: json.user.username, + } } - } - } else return { error: ['ErrorLengthAudioConvert', maxAudioDuration / 60000] } - } + } else return { error: ['ErrorLengthAudioConvert', maxAudioDuration / 60000] } + } + } else return { error: 'ErrorSoundCloudNoClientId' } } else return { error: 'ErrorEmptyDownload' } } else return { error: ['ErrorBrokenLink', 'soundcloud'] } } catch (e) { diff --git a/src/modules/services/tiktok.js b/src/modules/services/tiktok.js index d38b8c5..72e548b 100644 --- a/src/modules/services/tiktok.js +++ b/src/modules/services/tiktok.js @@ -32,7 +32,7 @@ export default async function(obj) { let html = await fetch(`${config[obj.host]["short"]}${obj.id}`, { redirect: "manual", headers: { "user-agent": userAgent } - }).then(async (r) => {return await r.text()}).catch(() => {return false}); + }).then(async (r) => {return r.text()}).catch(() => {return false}); if (!html) return { error: 'ErrorCouldntFetch' }; if (html.slice(0, 17) === ' {return await r.json()}).catch(() => {return false}); + }).then(async (r) => {return r.json()}).catch(() => {return false}); detail = selector(detail, obj.host, obj.postId); diff --git a/src/modules/services/tumblr.js b/src/modules/services/tumblr.js index 23306ca..2959289 100644 --- a/src/modules/services/tumblr.js +++ b/src/modules/services/tumblr.js @@ -5,7 +5,7 @@ export default async function(obj) { let user = obj.user ? obj.user : obj.url.split('.')[0].replace('https://', ''); let html = await fetch(`https://${user}.tumblr.com/post/${obj.id}`, { headers: {"user-agent": genericUserAgent} - }).then(async (r) => {return await r.text()}).catch(() => {return false}); + }).then(async (r) => {return r.text()}).catch(() => {return false}); if (!html) return { error: 'ErrorCouldntFetch' }; if (html.includes('property="og:video" content="https://va.media.tumblr.com/')) { 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` } diff --git a/src/modules/services/twitter.js b/src/modules/services/twitter.js index 923c882..4298378 100644 --- a/src/modules/services/twitter.js +++ b/src/modules/services/twitter.js @@ -15,13 +15,13 @@ export default async function(obj) { let req_act = await fetch(`${apiURL}/guest/activate.json`, { method: "POST", headers: _headers - }).then(async (r) => { return r.status == 200 ? await r.json() : false;}).catch(() => {return false}); + }).then(async (r) => { return r.status == 200 ? r.json() : false;}).catch(() => {return false}); if (!req_act) return { error: 'ErrorCouldntFetch' }; _headers["x-guest-token"] = req_act["guest_token"]; let showURL = `${apiURL}/statuses/show/${obj.id}.json?tweet_mode=extended&include_user_entities=0&trim_user=1&include_entities=0&cards_platform=Web-12&include_cards=1` if (!obj.spaceId) { - let req_status = await fetch(showURL, { headers: _headers }).then(async (r) => { return r.status == 200 ? await r.json() : false;}).catch((e) => { return false}); + let req_status = await fetch(showURL, { headers: _headers }).then(async (r) => { return r.status == 200 ? r.json() : false;}).catch((e) => { return false}); if (!req_status) { _headers.authorization = "Bearer AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw"; delete _headers["x-guest-token"] @@ -29,11 +29,11 @@ export default async function(obj) { req_act = await fetch(`${apiURL}/guest/activate.json`, { method: "POST", headers: _headers - }).then(async (r) => { return r.status == 200 ? await r.json() : false;}).catch(() => {return false}); + }).then(async (r) => { return r.status == 200 ? r.json() : false;}).catch(() => {return false}); if (!req_act) return { error: 'ErrorCouldntFetch' }; _headers["x-guest-token"] = req_act["guest_token"]; - req_status = await fetch(showURL, { headers: _headers }).then(async (r) => { return r.status == 200 ? await r.json() : false;}).catch(() => {return false}); + req_status = await fetch(showURL, { headers: _headers }).then(async (r) => { return r.status == 200 ? r.json() : false;}).catch(() => {return false}); } if (!req_status) return { error: 'ErrorCouldntFetch' } if (req_status["extended_entities"] && req_status["extended_entities"]["media"]) { @@ -47,7 +47,7 @@ export default async function(obj) { return { error: 'ErrorNoVideosInTweet' } } if (single) { - return { urls: single, audioFilename: `twitter_${obj.id}_audio` } + return { urls: single, filename: `twitter_${obj.id}.mp4`, audioFilename: `twitter_${obj.id}_audio` } } else if (multiple) { return { picker: multiple } } else { @@ -64,12 +64,12 @@ export default async function(obj) { } let AudioSpaceById = await fetch(`https://twitter.com/i/api/graphql/wJ5g4zf7v8qPHSQbaozYuw/AudioSpaceById?variables=${new URLSearchParams(JSON.stringify(query.variables)).toString().slice(0, -1)}&features=${new URLSearchParams(JSON.stringify(query.features)).toString().slice(0, -1)}`, { headers: _headers }).then(async (r) => { - return r.status == 200 ? await r.json() : false; + return r.status == 200 ? r.json() : false; }).catch((e) => {return false}); if (AudioSpaceById) { if (AudioSpaceById.data.audioSpace.metadata.is_space_available_for_replay === true) { - let streamStatus = await fetch(`https://twitter.com/i/api/1.1/live_video_stream/status/${AudioSpaceById.data.audioSpace.metadata.media_key}`, { headers: _headers }).then(async (r) => {return r.status == 200 ? await r.json() : false;}).catch(() => {return false;}); + let streamStatus = await fetch(`https://twitter.com/i/api/1.1/live_video_stream/status/${AudioSpaceById.data.audioSpace.metadata.media_key}`, { headers: _headers }).then(async (r) => {return r.status == 200 ? r.json() : false;}).catch(() => {return false;}); if (!streamStatus) return { error: 'ErrorCouldntFetch' }; let participants = AudioSpaceById.data.audioSpace.participants.speakers diff --git a/src/modules/services/vimeo.js b/src/modules/services/vimeo.js index 0c2b06c..b1ca763 100644 --- a/src/modules/services/vimeo.js +++ b/src/modules/services/vimeo.js @@ -2,7 +2,7 @@ import { quality, services } from "../config.js"; export default async function(obj) { try { - let api = await fetch(`https://player.vimeo.com/video/${obj.id}/config`).then(async (r) => {return await r.json()}).catch(() => {return false}); + let api = await fetch(`https://player.vimeo.com/video/${obj.id}/config`).then(async (r) => {return r.json()}).catch(() => {return false}); if (!api) return { error: 'ErrorCouldntFetch' }; let downloadType = ""; @@ -29,10 +29,10 @@ export default async function(obj) { } catch (e) { best = all[0] } - return { urls: best["url"] }; + return { urls: best["url"], filename: `tumblr_${obj.id}.mp4` }; case "dash": let masterJSONURL = api["request"]["files"]["dash"]["cdns"]["akfire_interconnect_quic"]["url"]; - let masterJSON = await fetch(masterJSONURL).then(async (r) => {return await r.json()}).catch(() => {return false}); + let masterJSON = await fetch(masterJSONURL).then(async (r) => {return r.json()}).catch(() => {return false}); if (!masterJSON) return { error: 'ErrorCouldntFetch' }; if (masterJSON.video) { let type = ""; diff --git a/src/modules/services/vk.js b/src/modules/services/vk.js index 3d77ffd..eb66361 100644 --- a/src/modules/services/vk.js +++ b/src/modules/services/vk.js @@ -7,7 +7,7 @@ export default async function(obj) { let html; html = await fetch(`https://vk.com/video-${obj.userId}_${obj.videoId}`, { headers: {"user-agent": genericUserAgent} - }).then(async (r) => {return await r.text()}).catch(() => {return false}); + }).then(async (r) => {return r.text()}).catch(() => {return false}); if (!html) return { error: 'ErrorCouldntFetch' }; if (html.includes(`{"lang":`)) { let js = JSON.parse('{"lang":' + html.split(`{"lang":`)[1].split(']);')[0]); diff --git a/src/modules/stream/manage.js b/src/modules/stream/manage.js index 5093bb5..6c06b3a 100644 --- a/src/modules/stream/manage.js +++ b/src/modules/stream/manage.js @@ -22,8 +22,9 @@ export function createStream(obj) { exp: exp, isAudioOnly: !!obj.isAudioOnly, audioFormat: obj.audioFormat, - time: obj.time, - copy: obj.copy, + time: obj.time ? obj.time : false, + copy: obj.copy ? true : false, + mute: obj.mute ? true : false, metadata: obj.fileMetadata ? obj.fileMetadata : false }); return `${process.env.selfURL}api/stream?t=${streamUUID}&e=${exp}&h=${ghmac}`; diff --git a/src/modules/stream/stream.js b/src/modules/stream/stream.js index 796bc4c..eb84308 100644 --- a/src/modules/stream/stream.js +++ b/src/modules/stream/stream.js @@ -1,6 +1,6 @@ import { apiJSON } from "../sub/utils.js"; import { verifyStream } from "./manage.js"; -import { streamAudioOnly, streamDefault, streamLiveRender } from "./types.js"; +import { streamAudioOnly, streamDefault, streamLiveRender, streamVideoOnly } from "./types.js"; export default function(res, ip, id, hmac, exp) { try { @@ -13,6 +13,9 @@ export default function(res, ip, id, hmac, exp) { case "render": streamLiveRender(streamInfo, res); break; + case "mute": + streamVideoOnly(streamInfo, res); + break; default: streamDefault(streamInfo, res); break; diff --git a/src/modules/stream/types.js b/src/modules/stream/types.js index b2d386f..d32f5e8 100644 --- a/src/modules/stream/types.js +++ b/src/modules/stream/types.js @@ -6,7 +6,9 @@ import { metadataManager, msToTime } from "../sub/utils.js"; export function streamDefault(streamInfo, res) { try { - res.setHeader('Content-disposition', `attachment; filename="${streamInfo.isAudioOnly ? `${streamInfo.filename}.${streamInfo.audioFormat}` : streamInfo.filename}"`); + let format = streamInfo.filename.split('.')[streamInfo.filename.split('.').length - 1] + let regFilename = !streamInfo.mute ? streamInfo.filename : `${streamInfo.filename.split('.')[0]}_mute.${format}` + res.setHeader('Content-disposition', `attachment; filename="${streamInfo.isAudioOnly ? `${streamInfo.filename}.${streamInfo.audioFormat}` : regFilename}"`); const stream = got.get(streamInfo.urls, { headers: { "user-agent": genericUserAgent @@ -96,3 +98,31 @@ export function streamAudioOnly(streamInfo, res) { res.end(); } } +export function streamVideoOnly(streamInfo, res) { + try { + let format = streamInfo.filename.split('.')[streamInfo.filename.split('.').length - 1], args = [ + '-loglevel', '-8', + '-i', streamInfo.urls, + '-c', 'copy', '-an' + ] + if (format == "mp4") args.push('-movflags', 'faststart+frag_keyframe+empty_moov') + args.push('-f', format, 'pipe:3'); + const ffmpegProcess = spawn(ffmpeg, args, { + windowsHide: true, + stdio: [ + 'inherit', 'inherit', 'inherit', + 'pipe' + ], + }); + res.setHeader('Connection', 'keep-alive'); + res.setHeader('Content-Disposition', `attachment; filename="${streamInfo.filename.split('.')[0]}_mute.${format}"`); + ffmpegProcess.stdio[3].pipe(res); + + ffmpegProcess.on('error', (err) => { + ffmpegProcess.kill(); + res.end(); + }); + } catch (e) { + res.end(); + } +} diff --git a/src/modules/sub/utils.js b/src/modules/sub/utils.js index 548e597..adf85ba 100644 --- a/src/modules/sub/utils.js +++ b/src/modules/sub/utils.js @@ -6,7 +6,7 @@ let apiVar = { vQuality: ["max", "hig", "mid", "low", "los"], aFormat: ["best", "mp3", "ogg", "wav", "opus"] }, - booleanOnly: ["isAudioOnly", "isNoTTWatermark", "isTTFullAudio"] + booleanOnly: ["isAudioOnly", "isNoTTWatermark", "isTTFullAudio", "isAudioMuted"] } export function apiJSON(type, obj) { @@ -95,7 +95,8 @@ export function checkJSONPost(obj) { aFormat: "mp3", isAudioOnly: false, isNoTTWatermark: false, - isTTFullAudio: false + isTTFullAudio: false, + isAudioMuted: false, } try { let objKeys = Object.keys(obj); @@ -106,7 +107,7 @@ export function checkJSONPost(obj) { if (apiVar.booleanOnly.includes(objKeys[i])) { def[objKeys[i]] = obj[objKeys[i]] ? true : false; } else { - if (apiVar.allowed[objKeys[i]].includes(obj[objKeys[i]])) def[objKeys[i]] = String(obj[objKeys[i]]) + if (apiVar.allowed[objKeys[i]] && apiVar.allowed[objKeys[i]].includes(obj[objKeys[i]])) def[objKeys[i]] = String(obj[objKeys[i]]) } } } From 13c2884a413c90f7d86cffe4a54e6e5aff3a0995 Mon Sep 17 00:00:00 2001 From: wukko Date: Sat, 17 Dec 2022 17:22:39 +0600 Subject: [PATCH 02/14] updated readme and fixed some things --- README.md | 29 ++++++++++++++++------------- src/modules/services/bilibili.js | 2 +- src/modules/services/reddit.js | 2 +- src/modules/services/soundcloud.js | 8 ++++---- src/modules/services/tiktok.js | 4 ++-- src/modules/services/tumblr.js | 2 +- src/modules/services/twitter.js | 12 ++++++------ src/modules/services/vimeo.js | 4 ++-- src/modules/services/vk.js | 2 +- 9 files changed, 34 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 30363a3..f8d86b4 100644 --- a/README.md +++ b/README.md @@ -13,19 +13,22 @@ cobalt is social media downloader with zero bullshit. It's friendly, accessible, It preserves original media quality so you get best downloads possible (unless you change that in settings). ## Supported services -| Service | Video + Audio | Only audio | Additional features | -| -------- | :---: | :---: | :----- | -| Twitter | ✅ | ✅ | Ability to save multiple videos/GIFs from a single tweet. | -| Twitter Spaces | ❌ī¸ | ✅ | Audio metadata. | -| YouTube & Shorts | ✅ | ✅ | Support for 8K, 4K, HDR, and high FPS videos. | -| YouTube Music | ❌ | ✅ | Audio metadata. | -| Reddit | ✅ | ✅ | | -| TikTok & douyin | ✅ | ✅ | Video downloads with or without watermark; image slideshow downloads without watermarks. | -| SoundCloud | ❌ | ✅ | Audio metadata. | -| bilibili.com | ✅ | ✅ | | -| Tumblr | ✅ | ✅ | | -| Vimeo | ✅ | ❌ī¸ | | -| VK Videos & Clips | ✅ | ❌ī¸ | | +| Service | Video + Audio | Only audio | Additional features | +| -------- | :---: | :---: | :----- | +| Twitter | ✅ | ✅ | Ability to save multiple videos/GIFs from a single tweet. | +| Twitter Spaces | ❌ī¸ | ✅ | Audio metadata. | +| YouTube & Shorts | ✅ | ✅ | Support for 8K, 4K, HDR, and high FPS videos. | +| YouTube Music | ❌ | ✅ | Audio metadata. | +| Reddit | ✅ | ✅ | | +| TikTok & douyin | ✅ | ✅ | Video downloads with or without watermark; image slideshow downloads without watermarks. | +| SoundCloud | ❌ | ✅ | Audio metadata. | +| bilibili.com | ✅ | ✅ | | +| Tumblr | ✅ | ✅ | | +| Vimeo | ✅ | ❌ī¸ | | +| VK Videos & Clips | ✅ | ❌ī¸ | | + +## cobalt API +cobalt has an open API that you can use for free. It's pretty straightforward in use, [check out the docs](https://github.com/wukko/cobalt/blob/current/docs/API.md) and see for yourself. ## How to contribute translations You can translate cobalt to any language you want on [cobalt's crowdin](https://crowdin-co.wukko.me/). Feel free to ignore QA errors if you think you know better. If you don't see a language you want to translate cobalt to, open an issue, and I'll add it to crowdin. diff --git a/src/modules/services/bilibili.js b/src/modules/services/bilibili.js index 367e538..5d1902f 100644 --- a/src/modules/services/bilibili.js +++ b/src/modules/services/bilibili.js @@ -4,7 +4,7 @@ export default async function(obj) { try { let html = await fetch(`https://bilibili.com/video/${obj.id}`, { headers: {"user-agent": genericUserAgent} - }).then(async (r) => {return r.text()}).catch(() => {return false}); + }).then((r) => {return r.text()}).catch(() => {return false}); if (!html) return { error: 'ErrorCouldntFetch' }; if (html.includes(' `; } catch (err) { - return `${loc(obj.lang, 'ErrorPageRenderFail', obj.hash)}`; + return `${t('ErrorPageRenderFail', obj.hash)}`; } } diff --git a/src/modules/processing/match.js b/src/modules/processing/match.js index b840df1..ff150b8 100644 --- a/src/modules/processing/match.js +++ b/src/modules/processing/match.js @@ -81,7 +81,7 @@ export default async function (host, patternMatch, url, lang, obj) { noWatermark: obj.isNoTTWatermark, fullAudio: obj.isTTFullAudio, isAudioOnly: obj.isAudioOnly }); - if (r.isAudioOnly) obj.isAudioOnly = true + if (r.isAudioOnly) obj.isAudioOnly = true; break; case "tumblr": r = await tumblr({ @@ -100,6 +100,7 @@ export default async function (host, patternMatch, url, lang, obj) { r = await soundcloud({ author: patternMatch["author"], song: patternMatch["song"], url: url, shortLink: patternMatch["shortLink"] ? patternMatch["shortLink"] : false, + accessKey: patternMatch["accessKey"] ? patternMatch["accessKey"] : false, format: obj.aFormat, lang: lang }); diff --git a/src/modules/processing/matchActionDecider.js b/src/modules/processing/matchActionDecider.js index 2de3ed2..a8070cd 100644 --- a/src/modules/processing/matchActionDecider.js +++ b/src/modules/processing/matchActionDecider.js @@ -51,7 +51,7 @@ export default function(r, host, ip, audioFormat, isAudioOnly, lang, isAudioMute return apiJSON(1, { u: r.urls }); } } - } else if (isAudioMuted) { + } else if (isAudioMuted && !isAudioOnly) { let isSplit = Array.isArray(r.urls); return apiJSON(2, { type: isSplit ? "bridge" : "mute", @@ -81,13 +81,13 @@ export default function(r, host, ip, audioFormat, isAudioOnly, lang, isAudioMute picker: r.picker, service: host }) } - } else { + } else if (isAudioOnly) { if ((host === "reddit" && r.typeId === 1) || (host === "vimeo" && !r.filename) || audioIgnore.includes(host)) return apiJSON(0, { t: loc(lang, 'ErrorEmptyDownload') }); let type = "render"; let copy = false; if (!supportedAudio.includes(audioFormat)) audioFormat = "best"; - if ((host == "tiktok" || host == "douyin") && isAudioOnly && services.tiktok.audioFormats.includes(audioFormat)) { + if ((host == "tiktok" || host == "douyin") && services.tiktok.audioFormats.includes(audioFormat)) { if (r.isMp3) { if (audioFormat === "mp3" || audioFormat === "best") { audioFormat = "mp3" @@ -115,5 +115,7 @@ export default function(r, host, ip, audioFormat, isAudioOnly, lang, isAudioMute filename: r.audioFilename, isAudioOnly: true, audioFormat: audioFormat, copy: copy, fileMetadata: r.fileMetadata ? r.fileMetadata : false }) + } else { + return apiJSON(0, { t: loc(lang, 'ErrorSomethingWentWrong') }); } } diff --git a/src/modules/processing/servicesConfig.json b/src/modules/processing/servicesConfig.json index 5535025..49380fd 100644 --- a/src/modules/processing/servicesConfig.json +++ b/src/modules/processing/servicesConfig.json @@ -84,7 +84,7 @@ "enabled": true }, "soundcloud": { - "patterns": [":author/:song", ":shortLink"], + "patterns": [":author/:song/s-:accessKey", ":author/:song", ":shortLink"], "bestAudio": "none", "enabled": true } diff --git a/src/modules/services/soundcloud.js b/src/modules/services/soundcloud.js index ee9392f..af26a92 100644 --- a/src/modules/services/soundcloud.js +++ b/src/modules/services/soundcloud.js @@ -44,7 +44,7 @@ export default async function(obj) { }).then((r) => {return r.text()}).catch(() => {return false}); } if (obj.author && obj.song) { - html = await fetch(`https://soundcloud.com/${obj.author}/${obj.song}`, { + html = await fetch(`https://soundcloud.com/${obj.author}/${obj.song}${obj.accessKey ? `/s-${obj.accessKey}` : ''}`, { headers: {"user-agent": genericUserAgent} }).then((r) => {return r.text()}).catch(() => {return false}); } @@ -54,7 +54,8 @@ export default async function(obj) { if (json["media"]["transcodings"]) { let clientId = await findClientID(); if (clientId) { - let fileUrl = `${json.media.transcodings[0]["url"].replace("/hls", "/progressive")}?client_id=${clientId}&track_authorization=${json.track_authorization}`; + let fileUrlBase = json.media.transcodings[0]["url"].replace("/hls", "/progressive") + let fileUrl = `${fileUrlBase}${fileUrlBase.includes("?") ? "&" : "?"}client_id=${clientId}&track_authorization=${json.track_authorization}`; if (fileUrl.substring(0, 54) === "https://api-v2.soundcloud.com/media/soundcloud:tracks:") { if (json.duration < maxAudioDuration) { let file = await fetch(fileUrl).then(async (r) => {return (await r.json()).url}).catch(() => {return false}); diff --git a/src/modules/stream/manage.js b/src/modules/stream/manage.js index 6c06b3a..dcfb12f 100644 --- a/src/modules/stream/manage.js +++ b/src/modules/stream/manage.js @@ -1,40 +1,50 @@ import NodeCache from "node-cache"; -import { UUID, encrypt } from "../sub/crypto.js"; +import { sha256 } from "../sub/crypto.js"; import { streamLifespan } from "../config.js"; -const streamCache = new NodeCache({ stdTTL: streamLifespan, checkperiod: 120 }); +const streamCache = new NodeCache({ stdTTL: streamLifespan/1000, checkperiod: 10, deleteOnExpire: true }); const salt = process.env.streamSalt; -export function createStream(obj) { - let streamUUID = UUID(), - exp = Math.floor(new Date().getTime()) + streamLifespan, - ghmac = encrypt(`${streamUUID},${obj.service},${obj.ip},${exp}`, salt) +streamCache.on("expired", (key) => { + streamCache.del(key); +}); - streamCache.set(streamUUID, { - id: streamUUID, - service: obj.service, - type: obj.type, - urls: obj.u, - filename: obj.filename, - hmac: ghmac, - ip: obj.ip, - exp: exp, - isAudioOnly: !!obj.isAudioOnly, - audioFormat: obj.audioFormat, - time: obj.time ? obj.time : false, - copy: obj.copy ? true : false, - mute: obj.mute ? true : false, - metadata: obj.fileMetadata ? obj.fileMetadata : false - }); - return `${process.env.selfURL}api/stream?t=${streamUUID}&e=${exp}&h=${ghmac}`; +export function createStream(obj) { + let streamID = sha256(`${obj.ip},${obj.service},${obj.filename},${obj.audioFormat},${obj.mute}`, salt), + exp = Math.floor(new Date().getTime()) + streamLifespan, + ghmac = sha256(`${streamID},${obj.service},${obj.ip},${exp}`, salt); + + if (!streamCache.has(streamID)) { + streamCache.set(streamID, { + id: streamID, + service: obj.service, + type: obj.type, + urls: obj.u, + filename: obj.filename, + hmac: ghmac, + ip: obj.ip, + exp: exp, + isAudioOnly: !!obj.isAudioOnly, + audioFormat: obj.audioFormat, + time: obj.time ? obj.time : false, + copy: !!obj.copy, + mute: !!obj.mute, + metadata: obj.fileMetadata ? obj.fileMetadata : false + }); + } else { + let streamInfo = streamCache.get(streamID); + exp = streamInfo.exp; + ghmac = streamInfo.hmac; + } + return `${process.env.selfURL}api/stream?t=${streamID}&e=${exp}&h=${ghmac}`; } export function verifyStream(ip, id, hmac, exp) { try { let streamInfo = streamCache.get(id); if (streamInfo) { - let ghmac = encrypt(`${id},${streamInfo.service},${ip},${exp}`, salt); + let ghmac = sha256(`${id},${streamInfo.service},${ip},${exp}`, salt); if (hmac == ghmac && ip == streamInfo.ip && ghmac == streamInfo.hmac && exp > Math.floor(new Date().getTime()) && exp == streamInfo.exp) { return streamInfo; } else { diff --git a/src/modules/sub/crypto.js b/src/modules/sub/crypto.js index a34d5a6..e8bf2f9 100644 --- a/src/modules/sub/crypto.js +++ b/src/modules/sub/crypto.js @@ -1,8 +1,5 @@ -import { createHmac, randomUUID } from "crypto"; +import { createHmac } from "crypto"; -export function encrypt(str, salt) { +export function sha256(str, salt) { return createHmac("sha256", salt).update(str).digest("hex"); } -export function UUID() { - return randomUUID(); -} diff --git a/src/modules/sub/utils.js b/src/modules/sub/utils.js index adf85ba..6c65f5f 100644 --- a/src/modules/sub/utils.js +++ b/src/modules/sub/utils.js @@ -62,7 +62,18 @@ export function msToTime(d) { return r; } export function cleanURL(url, host) { - let forbiddenChars = ['}', '{', '(', ')', '\\', '@', '%', '>', '<', '^', '*', '!', '~', ';', ':', ',', '`', '[', ']', '#', '$', '"', "'"] + let forbiddenChars = ['}', '{', '(', ')', '\\', '%', '>', '<', '^', '*', '!', '~', ';', ':', ',', '`', '[', ']', '#', '$', '"', "'", "@"] + switch(host) { + case "youtube": + url = url.split('&')[0]; + break; + case "tiktok": + url = url.replace(/@([a-zA-Z]+(\.[a-zA-Z]+)+)/, "@a") + default: + url = url.split('?')[0]; + if (url.substring(url.length - 1) === "/") url = url.substring(0, url.length - 1); + break; + } for (let i in forbiddenChars) { url = url.replaceAll(forbiddenChars[i], '') } @@ -70,14 +81,6 @@ export function cleanURL(url, host) { if (url.includes('youtube.com/shorts/')) { url = url.split('?')[0].replace('shorts/', 'watch?v='); } - if (host === "youtube") { - url = url.split('&')[0]; - } else { - url = url.split('?')[0]; - if (url.substring(url.length - 1) === "/") { - url = url.substring(0, url.length - 1); - } - } return url.slice(0, 128) } export function languageCode(req) { From 108fcc569a6113720b8bbc3081af608dbe3c105c Mon Sep 17 00:00:00 2001 From: wukko Date: Sat, 14 Jan 2023 00:46:10 +0600 Subject: [PATCH 09/14] fixed a typo in changelog --- src/modules/changelog/changelog.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/changelog/changelog.json b/src/modules/changelog/changelog.json index 1394a63..5701d99 100644 --- a/src/modules/changelog/changelog.json +++ b/src/modules/changelog/changelog.json @@ -3,7 +3,7 @@ "version": "4.7", "title": "we're better together! thank you for bug reports.", "banner": "bettertogether.webp", - "content": "this update includes a bunch of improvements, many of which were made thanks to the community :D\n\nservice-related improvements:\n*; private soundcloud links are now supported (#68);\n*; tiktok usernames with dots in them no longer confuse cobalt (#71);\n*; .ogg files no longer wrongfully include a video channel (#67);\n*; fixed an issue that caused cobalt to freak out when user attempted to download an audio from audio-only service with \"mute video\" option enabled.\n\nui improvements:\n*; all buttons are now of even size and are displayed without any padding issues across all modern browsers and devices;\n*; checkbox is no longer crippled on ios;\n*; many explanation texts have been simplified to get rid of unnecessary bloat (no bullshit, remember?);\n*; moved tiktok section in video settings higher due to higher priority.\n\nstability improvements:\n*; fixed a memory leak that was caused by misconfigured stream information caching (#63).\n\ninternal improvements:\n*; requested streams are now stored in cache for 2 minutes instead of 1000 hours (yes, 1000 hours, i fucked up);\n*; cached data is now reused if user requests same content within 2 minutes;\n*; page render module is now even cleaner than before;\n*; proper support for bullet-points in loc strings.\n\nyou can suggest features or report bugs either on github or twitter.\nboth work just fine, use whichever you're more comfortable with.\n\nthank you for using cobalt, and thank you for reading this changelog.\n\nyou're amazing, keep it up :)" + "content": "this update includes a bunch of improvements, many of which were made thanks to the community :D\n\nservice-related improvements:\n*; private soundcloud links are now supported (#68);\n*; tiktok usernames with dots in them no longer confuse cobalt (#71);\n*; .ogg files no longer wrongfully include a video channel (#67);\n*; fixed an issue that caused cobalt to freak out when user attempted to download an audio from audio-only service with \"mute video\" option enabled.\n\nui improvements:\n*; all buttons are now of even size and are displayed without any padding issues across all modern browsers and devices;\n*; checkbox is no longer crippled on ios;\n*; many explanation texts have been simplified to get rid of unnecessary bloat (no bullshit, remember?);\n*; moved tiktok section in video settings higher due to higher priority.\n\nstability improvements:\n*; fixed a memory leak that was caused by misconfigured stream information caching (#63).\n\ninternal improvements:\n*; requested streams are now stored in cache for 2 minutes instead of 1000 hours (yes, 1000 hours, i fucked up);\n*; cached data is now reused if user requests same content within 2 minutes;\n*; page render module is now even cleaner than before;\n*; proper support for bullet-points in loc strings.\n\nyou can suggest features or report bugs on github or twitter. both work just fine, use whichever you're more comfortable with.\n\nthank you for using cobalt, and thank you for reading this changelog.\n\nyou're amazing, keep it up :)" }, "history": [{ "version": "4.6", From 9a27e467217c2ba65fcdf1d2b2c0c4d1cfd95cc8 Mon Sep 17 00:00:00 2001 From: wukko Date: Sat, 14 Jan 2023 00:54:00 +0600 Subject: [PATCH 10/14] updated readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f8d86b4..dafc15b 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ It preserves original media quality so you get best downloads possible (unless y | YouTube Music | ❌ | ✅ | Audio metadata. | | Reddit | ✅ | ✅ | | | TikTok & douyin | ✅ | ✅ | Video downloads with or without watermark; image slideshow downloads without watermarks. | -| SoundCloud | ❌ | ✅ | Audio metadata. | +| SoundCloud | ❌ | ✅ | Audio metadata, downloads from private links | | bilibili.com | ✅ | ✅ | | | Tumblr | ✅ | ✅ | | | Vimeo | ✅ | ❌ī¸ | | From 007fcddd48a18e0e3a48b18785df304b36e13a15 Mon Sep 17 00:00:00 2001 From: wukko Date: Sun, 15 Jan 2023 16:51:37 +0600 Subject: [PATCH 11/14] 4.7.1: fixed popup padding --- package.json | 2 +- src/front/cobalt.css | 24 +++++++++++++++++------- src/modules/changelog/changelog.json | 2 +- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 079cb65..615993a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cobalt", "description": "save what you love", - "version": "4.7", + "version": "4.7.1", "author": "wukko", "exports": "./src/cobalt.js", "type": "module", diff --git a/src/front/cobalt.css b/src/front/cobalt.css index 283da7c..30d2ff5 100644 --- a/src/front/cobalt.css +++ b/src/front/cobalt.css @@ -281,9 +281,9 @@ input[type="checkbox"] { height: auto; width: 32%; z-index: 999; - padding: 3rem 2rem 2rem 2rem; + padding: 2rem; font-size: 0.9rem; - max-height: 80%; + max-height: 85%; } .popup.small { width: 20% @@ -299,7 +299,7 @@ input[type="checkbox"] { z-index: 998; } .popup.scrollable { - height: 80%; + height: 85%; } .scrollable .bottom-link { padding-bottom: 2rem; @@ -381,6 +381,7 @@ input[type="checkbox"] { position: relative; background: var(--background); z-index: 999; + padding-top: 0.8rem; } #popup-content.with-footer { margin-bottom: 3rem; @@ -496,7 +497,7 @@ input[type="checkbox"] { overflow: auto; } #close-bottom { - max-width: 3rem; + max-width: 2.8rem; margin-left: 1rem; background: var(--background); border: var(--border-15); @@ -513,7 +514,7 @@ input[type="checkbox"] { width: 100%; } .popup-tabs { - margin-top: 0.5rem; + margin-top: 0.8rem; } .emoji { margin-right: 0.4rem; @@ -720,7 +721,7 @@ input[type="checkbox"] { width: 100%!important; } #footer { - bottom: 2rem; + bottom: 1.7rem; transform: translate(-50%, 0%); } #footer-buttons { @@ -730,6 +731,12 @@ input[type="checkbox"] { .footer-pair .footer-button { width: 100%!important; } + #popup-header { + padding-top: 1.2rem; + } + #popup-settings #popup-header { + padding-top: 0.8rem; + } .picker-image-container { height: 7rem; width: 7rem; @@ -757,12 +764,15 @@ input[type="checkbox"] { .popup, .popup.scrollable, .popup.small { border: none; width: 90%; - height: 92%; + height: 95%; max-height: 100%; } .bottom-link { padding-bottom: 2rem; } + .popup-tabs { + margin-top: .3rem; + } } @media screen and (max-width: 400px) { .popup-title { diff --git a/src/modules/changelog/changelog.json b/src/modules/changelog/changelog.json index 5701d99..ba37df6 100644 --- a/src/modules/changelog/changelog.json +++ b/src/modules/changelog/changelog.json @@ -3,7 +3,7 @@ "version": "4.7", "title": "we're better together! thank you for bug reports.", "banner": "bettertogether.webp", - "content": "this update includes a bunch of improvements, many of which were made thanks to the community :D\n\nservice-related improvements:\n*; private soundcloud links are now supported (#68);\n*; tiktok usernames with dots in them no longer confuse cobalt (#71);\n*; .ogg files no longer wrongfully include a video channel (#67);\n*; fixed an issue that caused cobalt to freak out when user attempted to download an audio from audio-only service with \"mute video\" option enabled.\n\nui improvements:\n*; all buttons are now of even size and are displayed without any padding issues across all modern browsers and devices;\n*; checkbox is no longer crippled on ios;\n*; many explanation texts have been simplified to get rid of unnecessary bloat (no bullshit, remember?);\n*; moved tiktok section in video settings higher due to higher priority.\n\nstability improvements:\n*; fixed a memory leak that was caused by misconfigured stream information caching (#63).\n\ninternal improvements:\n*; requested streams are now stored in cache for 2 minutes instead of 1000 hours (yes, 1000 hours, i fucked up);\n*; cached data is now reused if user requests same content within 2 minutes;\n*; page render module is now even cleaner than before;\n*; proper support for bullet-points in loc strings.\n\nyou can suggest features or report bugs on github or twitter. both work just fine, use whichever you're more comfortable with.\n\nthank you for using cobalt, and thank you for reading this changelog.\n\nyou're amazing, keep it up :)" + "content": "this update includes a bunch of improvements, many of which were made thanks to the community :D\n\nservice-related improvements:\n*; private soundcloud links are now supported (#68);\n*; tiktok usernames with dots in them no longer confuse cobalt (#71);\n*; .ogg files no longer wrongfully include a video channel (#67);\n*; fixed an issue that caused cobalt to freak out when user attempted to download an audio from audio-only service with \"mute video\" option enabled.\n\nui improvements:\n*; popup padding has been evened out. popups are now able to fit in more information on scroll, especially on mobile;\n*; all buttons are now of even size and are displayed without any padding issues across all modern browsers and devices;\n*; checkbox is no longer crippled on ios;\n*; many explanation texts have been simplified to get rid of unnecessary bloat (no bullshit, remember?);\n*; moved tiktok section in video settings higher due to higher priority.\n\nstability improvements:\n*; fixed a memory leak that was caused by misconfigured stream information caching (#63).\n\ninternal improvements:\n*; requested streams are now stored in cache for 2 minutes instead of 1000 hours (yes, 1000 hours, i fucked up);\n*; cached data is now reused if user requests same content within 2 minutes;\n*; page render module is now even cleaner than before;\n*; proper support for bullet-points in loc strings.\n\nyou can suggest features or report bugs on github or twitter. both work just fine, use whichever you're more comfortable with.\n\nthank you for using cobalt, and thank you for reading this changelog.\n\nyou're amazing, keep it up :)" }, "history": [{ "version": "4.6", From 64dad9ee70ed309382ae834245d45993c67f54ce Mon Sep 17 00:00:00 2001 From: wukko Date: Sun, 15 Jan 2023 17:11:12 +0600 Subject: [PATCH 12/14] 4.7.2: ffmpeg should now quit on render end --- package.json | 2 +- src/modules/changelog/changelog.json | 2 +- src/modules/stream/types.js | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 615993a..904f568 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cobalt", "description": "save what you love", - "version": "4.7.1", + "version": "4.7.2", "author": "wukko", "exports": "./src/cobalt.js", "type": "module", diff --git a/src/modules/changelog/changelog.json b/src/modules/changelog/changelog.json index ba37df6..c2b525d 100644 --- a/src/modules/changelog/changelog.json +++ b/src/modules/changelog/changelog.json @@ -3,7 +3,7 @@ "version": "4.7", "title": "we're better together! thank you for bug reports.", "banner": "bettertogether.webp", - "content": "this update includes a bunch of improvements, many of which were made thanks to the community :D\n\nservice-related improvements:\n*; private soundcloud links are now supported (#68);\n*; tiktok usernames with dots in them no longer confuse cobalt (#71);\n*; .ogg files no longer wrongfully include a video channel (#67);\n*; fixed an issue that caused cobalt to freak out when user attempted to download an audio from audio-only service with \"mute video\" option enabled.\n\nui improvements:\n*; popup padding has been evened out. popups are now able to fit in more information on scroll, especially on mobile;\n*; all buttons are now of even size and are displayed without any padding issues across all modern browsers and devices;\n*; checkbox is no longer crippled on ios;\n*; many explanation texts have been simplified to get rid of unnecessary bloat (no bullshit, remember?);\n*; moved tiktok section in video settings higher due to higher priority.\n\nstability improvements:\n*; fixed a memory leak that was caused by misconfigured stream information caching (#63).\n\ninternal improvements:\n*; requested streams are now stored in cache for 2 minutes instead of 1000 hours (yes, 1000 hours, i fucked up);\n*; cached data is now reused if user requests same content within 2 minutes;\n*; page render module is now even cleaner than before;\n*; proper support for bullet-points in loc strings.\n\nyou can suggest features or report bugs on github or twitter. both work just fine, use whichever you're more comfortable with.\n\nthank you for using cobalt, and thank you for reading this changelog.\n\nyou're amazing, keep it up :)" + "content": "this update includes a bunch of improvements, many of which were made thanks to the community :D\n\nservice-related improvements:\n*; private soundcloud links are now supported (#68);\n*; tiktok usernames with dots in them no longer confuse cobalt (#71);\n*; .ogg files no longer wrongfully include a video channel (#67);\n*; fixed an issue that caused cobalt to freak out when user attempted to download an audio from audio-only service with \"mute video\" option enabled.\n\nui improvements:\n*; popup padding has been evened out. popups are now able to fit in more information on scroll, especially on mobile;\n*; all buttons are now of even size and are displayed without any padding issues across all modern browsers and devices;\n*; checkbox is no longer crippled on ios;\n*; many explanation texts have been simplified to get rid of unnecessary bloat (no bullshit, remember?);\n*; moved tiktok section in video settings higher due to higher priority.\n\nstability improvements:\n*; ffmpeg process now actually quits upon finishing the render;\n*; fixed a memory leak that was caused by misconfigured stream information caching (#63).\n\ninternal improvements:\n*; requested streams are now stored in cache for 2 minutes instead of 1000 hours (yes, 1000 hours, i fucked up);\n*; cached data is now reused if user requests same content within 2 minutes;\n*; page render module is now even cleaner than before;\n*; proper support for bullet-points in loc strings.\n\nyou can suggest features or report bugs on github or twitter. both work just fine, use whichever you're more comfortable with.\n\nthank you for using cobalt, and thank you for reading this changelog.\n\nyou're amazing, keep it up :)" }, "history": [{ "version": "4.6", diff --git a/src/modules/stream/types.js b/src/modules/stream/types.js index d32f5e8..6394fd0 100644 --- a/src/modules/stream/types.js +++ b/src/modules/stream/types.js @@ -48,7 +48,7 @@ export function streamLiveRender(streamInfo, res) { res.setHeader('Connection', 'keep-alive'); res.setHeader('Content-Disposition', `attachment; filename="${streamInfo.filename}"`); ffmpegProcess.stdio[3].pipe(res); - + ffmpegProcess.on('end', () => ffmpegProcess.kill()); ffmpegProcess.on('error', (err) => { ffmpegProcess.kill(); res.end(); @@ -89,7 +89,7 @@ export function streamAudioOnly(streamInfo, res) { res.setHeader('Connection', 'keep-alive'); res.setHeader('Content-Disposition', `attachment; filename="${streamInfo.filename}.${streamInfo.audioFormat}"`); ffmpegProcess.stdio[3].pipe(res); - + ffmpegProcess.on('end', () => ffmpegProcess.kill()); ffmpegProcess.on('error', (err) => { ffmpegProcess.kill(); res.end(); @@ -117,7 +117,7 @@ export function streamVideoOnly(streamInfo, res) { res.setHeader('Connection', 'keep-alive'); res.setHeader('Content-Disposition', `attachment; filename="${streamInfo.filename.split('.')[0]}_mute.${format}"`); ffmpegProcess.stdio[3].pipe(res); - + ffmpegProcess.on('end', () => ffmpegProcess.kill()); ffmpegProcess.on('error', (err) => { ffmpegProcess.kill(); res.end(); From 06d4d8a5b00d597217efcce76bdcb6698a43fbbc Mon Sep 17 00:00:00 2001 From: wukko Date: Sun, 15 Jan 2023 17:27:45 +0600 Subject: [PATCH 13/14] 4.7.3: ffmpeg should quit when download is abruptly cut off --- package.json | 2 +- src/modules/changelog/changelog.json | 2 +- src/modules/stream/types.js | 6 ++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 904f568..52cfa03 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cobalt", "description": "save what you love", - "version": "4.7.2", + "version": "4.7.3", "author": "wukko", "exports": "./src/cobalt.js", "type": "module", diff --git a/src/modules/changelog/changelog.json b/src/modules/changelog/changelog.json index c2b525d..00c4629 100644 --- a/src/modules/changelog/changelog.json +++ b/src/modules/changelog/changelog.json @@ -3,7 +3,7 @@ "version": "4.7", "title": "we're better together! thank you for bug reports.", "banner": "bettertogether.webp", - "content": "this update includes a bunch of improvements, many of which were made thanks to the community :D\n\nservice-related improvements:\n*; private soundcloud links are now supported (#68);\n*; tiktok usernames with dots in them no longer confuse cobalt (#71);\n*; .ogg files no longer wrongfully include a video channel (#67);\n*; fixed an issue that caused cobalt to freak out when user attempted to download an audio from audio-only service with \"mute video\" option enabled.\n\nui improvements:\n*; popup padding has been evened out. popups are now able to fit in more information on scroll, especially on mobile;\n*; all buttons are now of even size and are displayed without any padding issues across all modern browsers and devices;\n*; checkbox is no longer crippled on ios;\n*; many explanation texts have been simplified to get rid of unnecessary bloat (no bullshit, remember?);\n*; moved tiktok section in video settings higher due to higher priority.\n\nstability improvements:\n*; ffmpeg process now actually quits upon finishing the render;\n*; fixed a memory leak that was caused by misconfigured stream information caching (#63).\n\ninternal improvements:\n*; requested streams are now stored in cache for 2 minutes instead of 1000 hours (yes, 1000 hours, i fucked up);\n*; cached data is now reused if user requests same content within 2 minutes;\n*; page render module is now even cleaner than before;\n*; proper support for bullet-points in loc strings.\n\nyou can suggest features or report bugs on github or twitter. both work just fine, use whichever you're more comfortable with.\n\nthank you for using cobalt, and thank you for reading this changelog.\n\nyou're amazing, keep it up :)" + "content": "this update includes a bunch of improvements, many of which were made thanks to the community :D\n\nservice-related improvements:\n*; private soundcloud links are now supported (#68);\n*; tiktok usernames with dots in them no longer confuse cobalt (#71);\n*; .ogg files no longer wrongfully include a video channel (#67);\n*; fixed an issue that caused cobalt to freak out when user attempted to download an audio from audio-only service with \"mute video\" option enabled.\n\nui improvements:\n*; popup padding has been evened out. popups are now able to fit in more information on scroll, especially on mobile;\n*; all buttons are now of even size and are displayed without any padding issues across all modern browsers and devices;\n*; checkbox is no longer crippled on ios;\n*; many explanation texts have been simplified to get rid of unnecessary bloat (no bullshit, remember?);\n*; moved tiktok section in video settings higher due to higher priority.\n\nstability improvements:\n*; ffmpeg process now should end upon finishing the render;\n*; ffmpeg should also quit when download is abruptly cut off;\n*; fixed a memory leak that was caused by misconfigured stream information caching (#63).\n\ninternal improvements:\n*; requested streams are now stored in cache for 2 minutes instead of 1000 hours (yes, 1000 hours, i fucked up);\n*; cached data is now reused if user requests same content within 2 minutes;\n*; page render module is now even cleaner than before;\n*; proper support for bullet-points in loc strings.\n\nyou can suggest features or report bugs on github or twitter. both work just fine, use whichever you're more comfortable with.\n\nthank you for using cobalt, and thank you for reading this changelog.\n\nyou're amazing, keep it up :)" }, "history": [{ "version": "4.6", diff --git a/src/modules/stream/types.js b/src/modules/stream/types.js index 6394fd0..2c63b1f 100644 --- a/src/modules/stream/types.js +++ b/src/modules/stream/types.js @@ -49,6 +49,8 @@ export function streamLiveRender(streamInfo, res) { res.setHeader('Content-Disposition', `attachment; filename="${streamInfo.filename}"`); ffmpegProcess.stdio[3].pipe(res); ffmpegProcess.on('end', () => ffmpegProcess.kill()); + res.on('finish', () => ffmpegProcess.kill()); + res.on('close', () => ffmpegProcess.kill()); ffmpegProcess.on('error', (err) => { ffmpegProcess.kill(); res.end(); @@ -90,6 +92,8 @@ export function streamAudioOnly(streamInfo, res) { res.setHeader('Content-Disposition', `attachment; filename="${streamInfo.filename}.${streamInfo.audioFormat}"`); ffmpegProcess.stdio[3].pipe(res); ffmpegProcess.on('end', () => ffmpegProcess.kill()); + res.on('finish', () => ffmpegProcess.kill()); + res.on('close', () => ffmpegProcess.kill()); ffmpegProcess.on('error', (err) => { ffmpegProcess.kill(); res.end(); @@ -118,6 +122,8 @@ export function streamVideoOnly(streamInfo, res) { res.setHeader('Content-Disposition', `attachment; filename="${streamInfo.filename.split('.')[0]}_mute.${format}"`); ffmpegProcess.stdio[3].pipe(res); ffmpegProcess.on('end', () => ffmpegProcess.kill()); + res.on('finish', () => ffmpegProcess.kill()); + res.on('close', () => ffmpegProcess.kill()); ffmpegProcess.on('error', (err) => { ffmpegProcess.kill(); res.end(); From abab8b7c6bc8817431725dd6ff63c7af484193aa Mon Sep 17 00:00:00 2001 From: wukko Date: Wed, 18 Jan 2023 16:30:55 +0600 Subject: [PATCH 14/14] fix switches scrollbar visibility in firefox --- src/front/cobalt.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/front/cobalt.css b/src/front/cobalt.css index 30d2ff5..fabb6ca 100644 --- a/src/front/cobalt.css +++ b/src/front/cobalt.css @@ -483,6 +483,7 @@ input[type="checkbox"] { flex-direction: row; flex-wrap: nowrap; overflow-x: scroll; + scrollbar-width: none; } .autowidth { width: auto;