chore: more minimal result format with less bloat and icons

This commit is contained in:
WebStreamr 2025-06-18 09:47:44 +00:00
parent 6c7993cdba
commit deef8ab58b
No known key found for this signature in database
2 changed files with 64 additions and 89 deletions

View file

@ -12,7 +12,7 @@ import {
TooManyTimeoutsError,
TooManyRequestsError,
} from '../error';
import { flagFromCountryCode, languageFromCountryCode } from './language';
import { flagFromCountryCode } from './language';
import { envGetAppName } from './env';
import { Id } from './id';
import { ExtractorRegistry } from '../extractor';
@ -151,7 +151,11 @@ export class StreamResolver {
private buildName(ctx: Context, urlResult: UrlResult): string {
let name = envGetAppName();
name += urlResult.meta.height ? ` ${urlResult.meta.height}P` : ' N/A';
name += ` ${flagFromCountryCode(urlResult.meta.countryCode)}`;
if (urlResult.meta.height) {
name += ` ${urlResult.meta.height}p`;
}
if (urlResult.isExternal && showExternalUrls(ctx.config)) {
name += ` ⚠️ external`;
@ -210,15 +214,15 @@ export class StreamResolver {
const titleLines = [];
if (urlResult.meta.title) {
titleLines.push(`📂 ${urlResult.meta.title}`);
titleLines.push(urlResult.meta.title);
}
const titleDetailsLine = [];
if (urlResult.meta.bytes) {
titleLines.push(`💾 ${bytes.format(urlResult.meta.bytes, { unitSeparator: ' ' })}`);
titleDetailsLine.push(`💾 ${bytes.format(urlResult.meta.bytes, { unitSeparator: ' ' })}`);
}
titleLines.push(`🌐 ${languageFromCountryCode(urlResult.meta.countryCode)} ${flagFromCountryCode(urlResult.meta.countryCode)}`);
titleLines.push(`🔗 ${urlResult.label}`);
titleDetailsLine.push(`🔗 ${urlResult.label}`);
titleLines.push(titleDetailsLine.join(' '));
if (urlResult.error) {
titleLines.push(this.logErrorAndReturnNiceString(ctx, urlResult.sourceId, urlResult.error));

View file

@ -6,65 +6,57 @@ exports[`resolve adds error info 1`] = `
{
"behaviorHints": {},
"externalUrl": "https://example.com/",
"name": "WebStreamr N/A ⚠️ external",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪 ⚠️ external",
"title": "🔗 hoster.com
⚠️ Request was blocked.",
},
{
"behaviorHints": {},
"externalUrl": "https://example.com/",
"name": "WebStreamr N/A ⚠️ external",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪 ⚠️ external",
"title": "🔗 hoster.com
⚠️ Request was blocked.",
},
{
"behaviorHints": {},
"externalUrl": "https://example.com/",
"name": "WebStreamr N/A ⚠️ external",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪 ⚠️ external",
"title": "🔗 hoster.com
🚦 Request was rate-limited. Please try again later or consider self-hosting.",
},
{
"behaviorHints": {},
"externalUrl": "https://example.com/",
"name": "WebStreamr N/A ⚠️ external",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪 ⚠️ external",
"title": "🔗 hoster.com
🚦 Too many recent timeouts. Please try again later.",
},
{
"behaviorHints": {},
"externalUrl": "https://example2.com/",
"name": "WebStreamr N/A ⚠️ external",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪 ⚠️ external",
"title": "🔗 hoster.com
❌ Request failed. Request-id: id.",
},
{
"behaviorHints": {},
"externalUrl": "https://example2.com/",
"name": "WebStreamr N/A ⚠️ external",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪 ⚠️ external",
"title": "🔗 hoster.com
🐢 Request timed out.",
},
{
"behaviorHints": {},
"externalUrl": "https://example3.com/",
"name": "WebStreamr N/A ⚠️ external",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪 ⚠️ external",
"title": "🔗 hoster.com
⏳ Request queue is full. Please try again later or consider self-hosting.",
},
{
"behaviorHints": {},
"externalUrl": "https://example4.com/",
"name": "WebStreamr N/A ⚠️ external",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪 ⚠️ external",
"title": "🔗 hoster.com
❌ Request failed with status 500 (Internal Server Error). Request-id: id.",
},
],
@ -76,65 +68,57 @@ exports[`resolve adds error info 2`] = `
"streams": [
{
"behaviorHints": {},
"name": "WebStreamr N/A",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪",
"title": "🔗 hoster.com
⚠️ Request was blocked.",
"ytId": "E4WlUXrJgy4",
},
{
"behaviorHints": {},
"name": "WebStreamr N/A",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪",
"title": "🔗 hoster.com
⚠️ Request was blocked.",
"ytId": "E4WlUXrJgy4",
},
{
"behaviorHints": {},
"name": "WebStreamr N/A",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪",
"title": "🔗 hoster.com
🚦 Request was rate-limited. Please try again later or consider self-hosting.",
"ytId": "E4WlUXrJgy4",
},
{
"behaviorHints": {},
"name": "WebStreamr N/A",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪",
"title": "🔗 hoster.com
🚦 Too many recent timeouts. Please try again later.",
"ytId": "E4WlUXrJgy4",
},
{
"behaviorHints": {},
"name": "WebStreamr N/A",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪",
"title": "🔗 hoster.com
❌ Request failed. Request-id: id.",
"ytId": "E4WlUXrJgy4",
},
{
"behaviorHints": {},
"name": "WebStreamr N/A",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪",
"title": "🔗 hoster.com
🐢 Request timed out.",
"ytId": "E4WlUXrJgy4",
},
{
"behaviorHints": {},
"name": "WebStreamr N/A",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪",
"title": "🔗 hoster.com
⏳ Request queue is full. Please try again later or consider self-hosting.",
"ytId": "E4WlUXrJgy4",
},
{
"behaviorHints": {},
"name": "WebStreamr N/A",
"title": "🌐 German 🇩🇪
🔗 hoster.com
"name": "WebStreamr 🇩🇪",
"title": "🔗 hoster.com
❌ Request failed with status 500 (Internal Server Error). Request-id: id.",
"ytId": "E4WlUXrJgy4",
},
@ -183,11 +167,9 @@ exports[`resolve returns sorted results 1`] = `
"bingeGroup": "webstreamr-dropload_de",
"videoSize": 1395864371,
},
"name": "WebStreamr 1080P",
"title": "📂 des-teufels-bad-2024
💾 1.3 GB
🌐 German 🇩🇪
🔗 Dropload",
"name": "WebStreamr 🇩🇪 1080p",
"title": "des-teufels-bad-2024
💾 1.3 GB 🔗 Dropload",
"url": "https://srv34.dropload.io/hls2/01/00197/lyo2h1snpe5c_h/master.m3u8?t=MZSqs3F338ocbM2eTs8X23s585dWcYuilGrNNcidNas&s=1749846846&e=14400&f=987607&srv=srv27&i=0.0&sp=0&ii=50.99.15.93&p1=srv27&p2=srv27",
},
{
@ -195,11 +177,9 @@ exports[`resolve returns sorted results 1`] = `
"bingeGroup": "webstreamr-dropload_it",
"videoSize": 1181116006,
},
"name": "WebStreamr 720P",
"title": "📂 the-devils-bath-2024-sd-sub-ita
💾 1.1 GB
🌐 Italian 🇮🇹
🔗 Dropload",
"name": "WebStreamr 🇮🇹 720p",
"title": "the-devils-bath-2024-sd-sub-ita
💾 1.1 GB 🔗 Dropload",
"url": "https://srv34.dropload.io/hls2/01/00200/xsr90y2ltdyx_h/master.m3u8?t=rsJMeR8rtWZxFi_3DOdlt98U0rvAMincCe4-awDQzHE&s=1749846846&e=14400&f=1004116&srv=srv24&i=0.0&sp=0&ii=50.99.15.93&p1=srv24&p2=srv24",
},
{
@ -207,11 +187,9 @@ exports[`resolve returns sorted results 1`] = `
"bingeGroup": "webstreamr-supervideo_it",
"videoSize": 1181116006,
},
"name": "WebStreamr 720P",
"title": "📂 the-devils-bath-2024-sd-sub-ita
💾 1.1 GB
🌐 Italian 🇮🇹
🔗 SuperVideo",
"name": "WebStreamr 🇮🇹 720p",
"title": "the-devils-bath-2024-sd-sub-ita
💾 1.1 GB 🔗 SuperVideo",
"url": "https://hfs311.serversicuro.cc/hls/,dnzpcjj427g4a3gyvbth53rxqgffbu4vol4o7gg7pskpzb6josghbkwhnisq,.urlset/master.m3u8",
},
{
@ -219,11 +197,9 @@ exports[`resolve returns sorted results 1`] = `
"bingeGroup": "webstreamr-supervideo_de",
"videoSize": 1073741824,
},
"name": "WebStreamr 720P",
"title": "📂 des-teufels-bad-2024
💾 1 GB
🌐 German 🇩🇪
🔗 SuperVideo",
"name": "WebStreamr 🇩🇪 720p",
"title": "des-teufels-bad-2024
💾 1 GB 🔗 SuperVideo",
"url": "https://hfs309.serversicuro.cc/hls/,dnzpfi3d27g4a3gyvbmh5klwtl65qh654hyjtgupd6p577fze64mz3bsmdyq,.urlset/master.m3u8",
},
{
@ -237,11 +213,9 @@ exports[`resolve returns sorted results 1`] = `
},
"videoSize": 791702409,
},
"name": "WebStreamr N/A",
"title": "📂 des-teufels-bad-2024
💾 755.03 MB
🌐 German 🇩🇪
🔗 DoodStream",
"name": "WebStreamr 🇩🇪",
"title": "des-teufels-bad-2024
💾 755.03 MB 🔗 DoodStream",
"url": "https://aa360cc.cloudatacdn.com/u5kjv4jxytd3sdgge5uogji5dg4huat2pxrm2qibdbm5rlyusvlvslr3u3ta/bibyo6w0dm~mocked-random-string?token=7uebebipnnhusa4xnyea1er4&expiry=639837296000",
},
{
@ -254,9 +228,8 @@ exports[`resolve returns sorted results 1`] = `
},
},
},
"name": "WebStreamr N/A",
"title": "📂 the-devils-bath-2024-sd-sub-ita
🌐 Italian 🇮🇹
"name": "WebStreamr 🇮🇹",
"title": "the-devils-bath-2024-sd-sub-ita
🔗 DoodStream",
"url": "https://kk892as.cloudatacdn.com/u5kj7j7s27d3sdgge5woezkbi4pu672wktq3aqujw47rbx4declm2mk2k2gq/4msi5kvncy~mocked-random-string?token=aw2v2d8uhbrj2ky54d573ujk&expiry=639837296000",
},
@ -265,18 +238,16 @@ exports[`resolve returns sorted results 1`] = `
"bingeGroup": "webstreamr-external_de",
},
"externalUrl": "https://mixdrop.ag/e/3nzwveprim63or6",
"name": "WebStreamr N/A ⚠️ external",
"title": "🌐 German 🇩🇪
🔗 mixdrop.ag",
"name": "WebStreamr 🇩🇪 ⚠️ external",
"title": "🔗 mixdrop.ag",
},
{
"behaviorHints": {
"bingeGroup": "webstreamr-external_it",
},
"externalUrl": "https://mixdrop.ag/e/vk196d6xfzwwo1",
"name": "WebStreamr N/A ⚠️ external",
"title": "🌐 Italian 🇮🇹
🔗 mixdrop.ag",
"name": "WebStreamr 🇮🇹 ⚠️ external",
"title": "🔗 mixdrop.ag",
},
],
"ttl": 900000,