Merge pull request #16 from R0m1k3/dev

Dev
This commit is contained in:
LogiFlow authored and GitHub committed 2025-10-02 14:37:31 +02:00
commit a69c67fcfe
3 files changed
+19 -30

No files matched your search

+4
View File
@@ -26,6 +26,10 @@ externalPort = 3000
localPort = 43245 localPort = 43245
externalPort = 3001 externalPort = 3001
[[ports]]
localPort = 44783
externalPort = 3003
[env] [env]
PORT = "5000" PORT = "5000"
Binary file not shown.

After

Width:  |  Height:  |  Size: 626 KiB

+15 -30
View File
@@ -31,13 +31,22 @@ class CloudinaryService {
const isVideo = mimeType.startsWith('video/'); const isVideo = mimeType.startsWith('video/');
// Upload to Cloudinary (without eager transformations) // Define eager transformations for images (generated during upload)
const eagerTransformations = !isVideo ? [
{ width: 1200, height: 630, crop: 'pad', gravity: 'center', background: 'auto' }, // Facebook Feed
{ width: 1080, height: 1080, crop: 'pad', gravity: 'center', background: 'auto' }, // Instagram Feed
{ width: 1080, height: 1920, crop: 'pad', gravity: 'center', background: 'auto' } // Instagram Story
] : undefined;
// Upload to Cloudinary with eager transformations
const uploadResult = await new Promise<any>((resolve, reject) => { const uploadResult = await new Promise<any>((resolve, reject) => {
const uploadStream = cloudinary.uploader.upload_stream( const uploadStream = cloudinary.uploader.upload_stream(
{ {
folder: 'social-flow', folder: 'social-flow',
public_id: `${Date.now()}-${fileName.replace(/\.[^/.]+$/, '')}`, public_id: `${Date.now()}-${fileName.replace(/\.[^/.]+$/, '')}`,
resource_type: isVideo ? 'video' : 'image', resource_type: isVideo ? 'video' : 'image',
eager: eagerTransformations,
eager_async: false, // Generate transformations immediately
}, },
(error, result) => { (error, result) => {
if (error) reject(error); if (error) reject(error);
@@ -51,39 +60,15 @@ class CloudinaryService {
const publicId = uploadResult.public_id; const publicId = uploadResult.public_id;
const originalUrl = uploadResult.secure_url; const originalUrl = uploadResult.secure_url;
// Generate transformation URLs manually with lpad (limit pad) for images // Extract eager transformation URLs (generated by Cloudinary during upload)
let facebookFeedUrl = null; let facebookFeedUrl = null;
let instagramFeedUrl = null; let instagramFeedUrl = null;
let instagramStoryUrl = null; let instagramStoryUrl = null;
if (!isVideo) { if (!isVideo && uploadResult.eager && uploadResult.eager.length === 3) {
// Use lpad (limit pad) - only scales down if needed, adds padding to fit dimensions facebookFeedUrl = uploadResult.eager[0].secure_url; // Facebook Feed (1200x630)
facebookFeedUrl = cloudinary.url(publicId, { instagramFeedUrl = uploadResult.eager[1].secure_url; // Instagram Feed (1080x1080)
width: 1200, instagramStoryUrl = uploadResult.eager[2].secure_url; // Instagram Story (1080x1920)
height: 630,
crop: 'lpad',
background: 'black',
fetch_format: 'auto',
quality: 'auto'
});
instagramFeedUrl = cloudinary.url(publicId, {
width: 1080,
height: 1080,
crop: 'lpad',
background: 'black',
fetch_format: 'auto',
quality: 'auto'
});
instagramStoryUrl = cloudinary.url(publicId, {
width: 1080,
height: 1920,
crop: 'lpad',
background: 'black',
fetch_format: 'auto',
quality: 'auto'
});
} }
return { return {