MCPcopy Create free account
hub / github.com/TeleBoxOrg/TeleBox_Plugins / convertTgsToWebm

Function convertTgsToWebm

yvlu/yvlu.ts:97–148  ·  view source on GitHub ↗
(tgsBuffer: Buffer)

Source from the content-addressed store, hash-verified

95 big: isBig,
96 });
97 const dcId = photo.dcId ?? fullEntity?.photo?.dc_id;
98 const result = await withTimeout(
99 client.invoke(
100 new Api.upload.GetFile({
101 location,
102 offset: bigInteger.zero,
103 limit: 512 * 1024,
104 precise: true,
105 }),
106 dcId,
107 ),
108 QUOTE_RPC_TIMEOUT_MS,
109 `downloadEntityAvatar.${isBig ? "big" : "small"}`,
110 ) as { bytes?: unknown };
111 const buffer = result?.bytes;
112 return Buffer.isBuffer(buffer) && buffer.length > 0 ? buffer : undefined;
113 } catch (err: any) {
114 console.warn(`yvlu avatar ${isBig ? "big" : "small"} download failed`, err?.message || err);
115 return undefined;
116 }
117 };
118
119 const [small, big] = await Promise.all([tryDownload(false), tryDownload(true)]);
120 const normalized = small ? await normalizeAvatarBuffer(small) : big ? await normalizeAvatarBuffer(big) : undefined;
121 if (key) avatarCache.set(key, normalized);
122 return normalized;
123}
124
125async function normalizeAvatarBuffer(buffer: Buffer): Promise<Buffer> {
126 try {
127 const sharp = (await import("sharp")).default;
128 return await sharp(buffer)
129 .resize(256, 256, { fit: "cover", position: "centre" })
130 .flatten({ background: { r: 0, g: 0, b: 0 } })
131 .png()
132 .toBuffer();
133 } catch (err: any) {
134 console.warn("yvlu avatar normalize failed", err?.message || err);
135 return buffer.length > 0 ? buffer : undefined;
136 }
137}
138
139async function rawDownloadFile(client: any, location: any, dcId: number | undefined): Promise<Buffer | undefined> {
140 if (!client || !location) return undefined;
141 try {
142 const result = await withTimeout(
143 client.invoke(
144 new Api.upload.GetFile({
145 location,
146 offset: bigInteger.zero,
147 limit: 512 * 1024,
148 precise: true,
149 }),
150 dcId,
151 ),

Callers 1

YvluPluginClass · 0.85

Calls 1

execFileAsyncFunction · 0.85

Tested by

no test coverage detected