@xuda.io/account_module 1.2.308 → 1.2.310
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.mjs +110 -110
- package/package.json +1 -1
package/index.mjs
CHANGED
|
@@ -1160,7 +1160,7 @@ export const get_contacts = async function (req) {
|
|
|
1160
1160
|
if (bookmark !== 'nil') {
|
|
1161
1161
|
opt.bookmark = bookmark;
|
|
1162
1162
|
}
|
|
1163
|
-
|
|
1163
|
+
|
|
1164
1164
|
const contacts_ret = await db_module.find_couch_query('xuda_contacts', opt);
|
|
1165
1165
|
let requests_from_ret = { docs: [] };
|
|
1166
1166
|
let requests_to_ret = { docs: [] };
|
|
@@ -1589,124 +1589,124 @@ export const get_user_name = async function (uid) {
|
|
|
1589
1589
|
}
|
|
1590
1590
|
};
|
|
1591
1591
|
|
|
1592
|
-
const removeBg = async function (req, job_id, headers) {
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
const ASSET_PATH = '/var/xuda/assets/imgly-bg'; // <-- your folder
|
|
1600
|
-
|
|
1601
|
-
const config = {
|
|
1602
|
-
publicPath: `file://${ASSET_PATH}/`, // ← this fixes everything
|
|
1603
|
-
debug: false,
|
|
1604
|
-
model: 'medium', // or "small" if you want faster/smaller
|
|
1605
|
-
};
|
|
1606
|
-
debugger;
|
|
1607
|
-
const drive_module = await import(`${module_path}/drive_module/index.mjs`);
|
|
1608
|
-
const { url } = req;
|
|
1609
|
-
try {
|
|
1610
|
-
let imageBuffer;
|
|
1611
|
-
// if (inputPath) {
|
|
1612
|
-
// imageBuffer = fs.readFileSync(inputPath);
|
|
1613
|
-
// }
|
|
1614
|
-
|
|
1615
|
-
if (url) {
|
|
1616
|
-
const res = await fetch(url);
|
|
1617
|
-
if (!res.ok) {
|
|
1618
|
-
throw new Error(`Failed to fetch image URL: ${res.status} ${res.statusText}`);
|
|
1619
|
-
}
|
|
1620
|
-
const arrayBuffer = await res.arrayBuffer();
|
|
1621
|
-
imageBuffer = Buffer.from(arrayBuffer);
|
|
1622
|
-
}
|
|
1623
|
-
const blob = await removeBackground(imageBuffer, config);
|
|
1624
|
-
|
|
1625
|
-
// Convert to buffer and save
|
|
1626
|
-
const outputBuffer = Buffer.from(await blob.arrayBuffer());
|
|
1627
|
-
|
|
1628
|
-
const originalname = 'avatar_' + path.basename(url);
|
|
1629
|
-
const tempPath = path.join(os.tmpdir(), originalname + Date.now());
|
|
1630
|
-
fs.writeFileSync(tempPath, outputBuffer);
|
|
1631
|
-
|
|
1632
|
-
const ext = drive_module.getExtensionFromUrl(url);
|
|
1633
|
-
|
|
1634
|
-
const file_obj = {
|
|
1635
|
-
originalname,
|
|
1636
|
-
path: tempPath,
|
|
1637
|
-
mimetype: `image/${ext}`,
|
|
1638
|
-
};
|
|
1639
|
-
|
|
1640
|
-
const drive_ret = await drive_module.upload_drive_file_user({ uid, path: '/Profile Images' }, job_id, headers, file_obj);
|
|
1641
|
-
console.log(`Background removed! `, drive_ret);
|
|
1642
|
-
} catch (error) {
|
|
1643
|
-
console.error('Error:', error);
|
|
1644
|
-
}
|
|
1645
|
-
};
|
|
1646
|
-
|
|
1647
|
-
const removeBg2 = async function (req, job_id, headers) {
|
|
1648
|
-
// 1. Load your drive module
|
|
1649
|
-
const drive_module = await import(`${module_path}/drive_module/index.mjs`);
|
|
1650
|
-
|
|
1651
|
-
const { url, uid } = req;
|
|
1592
|
+
// const removeBg = async function (req, job_id, headers) {
|
|
1593
|
+
// // const ASSET_PATH = path.join(process.cwd(), 'assets/imgly-bg');
|
|
1594
|
+
// // const config = {
|
|
1595
|
+
// // publicPath: `file://${ASSET_PATH}/`, // Points to your local folder
|
|
1596
|
+
// // debug: true, // Optional: Logs fetch attempts for debugging
|
|
1597
|
+
// // };
|
|
1652
1598
|
|
|
1653
|
-
|
|
1654
|
-
if (!url) {
|
|
1655
|
-
throw new Error('No URL provided in request');
|
|
1656
|
-
}
|
|
1599
|
+
// const ASSET_PATH = '/var/xuda/assets/imgly-bg'; // <-- your folder
|
|
1657
1600
|
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1601
|
+
// const config = {
|
|
1602
|
+
// publicPath: `file://${ASSET_PATH}/`, // ← this fixes everything
|
|
1603
|
+
// debug: false,
|
|
1604
|
+
// model: 'medium', // or "small" if you want faster/smaller
|
|
1605
|
+
// };
|
|
1606
|
+
// debugger;
|
|
1607
|
+
// const drive_module = await import(`${module_path}/drive_module/index.mjs`);
|
|
1608
|
+
// const { url } = req;
|
|
1609
|
+
// try {
|
|
1610
|
+
// let imageBuffer;
|
|
1611
|
+
// // if (inputPath) {
|
|
1612
|
+
// // imageBuffer = fs.readFileSync(inputPath);
|
|
1613
|
+
// // }
|
|
1614
|
+
|
|
1615
|
+
// if (url) {
|
|
1616
|
+
// const res = await fetch(url);
|
|
1617
|
+
// if (!res.ok) {
|
|
1618
|
+
// throw new Error(`Failed to fetch image URL: ${res.status} ${res.statusText}`);
|
|
1619
|
+
// }
|
|
1620
|
+
// const arrayBuffer = await res.arrayBuffer();
|
|
1621
|
+
// imageBuffer = Buffer.from(arrayBuffer);
|
|
1622
|
+
// }
|
|
1623
|
+
// const blob = await removeBackground(imageBuffer, config);
|
|
1665
1624
|
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
const tempDir = os.tmpdir();
|
|
1669
|
-
const uniqueId = Date.now() + '_' + Math.random().toString(36).substring(7);
|
|
1625
|
+
// // Convert to buffer and save
|
|
1626
|
+
// const outputBuffer = Buffer.from(await blob.arrayBuffer());
|
|
1670
1627
|
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1628
|
+
// const originalname = 'avatar_' + path.basename(url);
|
|
1629
|
+
// const tempPath = path.join(os.tmpdir(), originalname + Date.now());
|
|
1630
|
+
// fs.writeFileSync(tempPath, outputBuffer);
|
|
1674
1631
|
|
|
1675
|
-
|
|
1676
|
-
fs.writeFileSync(tempInputPath, imageBuffer);
|
|
1632
|
+
// const ext = drive_module.getExtensionFromUrl(url);
|
|
1677
1633
|
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1634
|
+
// const file_obj = {
|
|
1635
|
+
// originalname,
|
|
1636
|
+
// path: tempPath,
|
|
1637
|
+
// mimetype: `image/${ext}`,
|
|
1638
|
+
// };
|
|
1683
1639
|
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1640
|
+
// const drive_ret = await drive_module.upload_drive_file_user({ uid, path: '/Profile Images' }, job_id, headers, file_obj);
|
|
1641
|
+
// console.log(`Background removed! `, drive_ret);
|
|
1642
|
+
// } catch (error) {
|
|
1643
|
+
// console.error('Error:', error);
|
|
1644
|
+
// }
|
|
1645
|
+
// };
|
|
1687
1646
|
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
mimetype: 'image/png', // rembg output is always PNG
|
|
1692
|
-
};
|
|
1647
|
+
// const removeBg2 = async function (req, job_id, headers) {
|
|
1648
|
+
// // 1. Load your drive module
|
|
1649
|
+
// const drive_module = await import(`${module_path}/drive_module/index.mjs`);
|
|
1693
1650
|
|
|
1694
|
-
|
|
1695
|
-
const drive_ret = await drive_module.upload_drive_file_user({ uid, path: '/Profile Images' }, job_id, headers, file_obj);
|
|
1651
|
+
// const { url, uid } = req;
|
|
1696
1652
|
|
|
1697
|
-
|
|
1653
|
+
// try {
|
|
1654
|
+
// if (!url) {
|
|
1655
|
+
// throw new Error('No URL provided in request');
|
|
1656
|
+
// }
|
|
1698
1657
|
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1658
|
+
// // 3. Download the image to a Buffer
|
|
1659
|
+
// const res = await fetch(url);
|
|
1660
|
+
// if (!res.ok) {
|
|
1661
|
+
// throw new Error(`Failed to fetch image URL: ${res.status} ${res.statusText}`);
|
|
1662
|
+
// }
|
|
1663
|
+
// const arrayBuffer = await res.arrayBuffer();
|
|
1664
|
+
// const imageBuffer = Buffer.from(arrayBuffer);
|
|
1665
|
+
|
|
1666
|
+
// // 4. Create Temporary File Paths
|
|
1667
|
+
// // rembg works with files, so we must save the buffer to disk first.
|
|
1668
|
+
// const tempDir = os.tmpdir();
|
|
1669
|
+
// const uniqueId = Date.now() + '_' + Math.random().toString(36).substring(7);
|
|
1670
|
+
|
|
1671
|
+
// const inputExt = path.extname(url) || '.jpg';
|
|
1672
|
+
// const tempInputPath = path.join(tempDir, `input_${uniqueId}${inputExt}`);
|
|
1673
|
+
// const tempOutputPath = path.join(tempDir, `output_${uniqueId}.png`); // Output is always PNG (transparent)
|
|
1674
|
+
|
|
1675
|
+
// // 5. Write the downloaded image to disk
|
|
1676
|
+
// fs.writeFileSync(tempInputPath, imageBuffer);
|
|
1677
|
+
|
|
1678
|
+
// // 6. EXECUTE REMBG via CLI
|
|
1679
|
+
// // "rembg i [input] [output]"
|
|
1680
|
+
// console.log(`Processing with rembg: ${tempInputPath} -> ${tempOutputPath}`);
|
|
1681
|
+
// debugger;
|
|
1682
|
+
// await execAsync(`rembg i "${tempInputPath}" "${tempOutputPath}"`);
|
|
1683
|
+
|
|
1684
|
+
// // 7. Prepare File Object for Drive Upload
|
|
1685
|
+
// // Note: The output file now exists at tempOutputPath
|
|
1686
|
+
// const originalname = 'avatar_' + path.basename(url, inputExt) + '.png';
|
|
1687
|
+
|
|
1688
|
+
// const file_obj = {
|
|
1689
|
+
// originalname: originalname,
|
|
1690
|
+
// path: tempOutputPath,
|
|
1691
|
+
// mimetype: 'image/png', // rembg output is always PNG
|
|
1692
|
+
// };
|
|
1693
|
+
|
|
1694
|
+
// // 8. Upload to Drive
|
|
1695
|
+
// const drive_ret = await drive_module.upload_drive_file_user({ uid, path: '/Profile Images' }, job_id, headers, file_obj);
|
|
1696
|
+
|
|
1697
|
+
// console.log(`Background removed!`, drive_ret);
|
|
1698
|
+
|
|
1699
|
+
// // 9. Clean up Input File (Output file might be needed by upload, so clean input only)
|
|
1700
|
+
// try {
|
|
1701
|
+
// fs.unlinkSync(tempInputPath);
|
|
1702
|
+
// // Optional: fs.unlinkSync(tempOutputPath); // Only if upload_drive_file_user handles the file reading fully
|
|
1703
|
+
// } catch (cleanupErr) {
|
|
1704
|
+
// console.warn('Warning: Failed to cleanup temp input file', cleanupErr);
|
|
1705
|
+
// }
|
|
1706
1706
|
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
};
|
|
1707
|
+
// return drive_ret;
|
|
1708
|
+
// } catch (error) {
|
|
1709
|
+
// console.error('Error processing background removal:', error);
|
|
1710
|
+
// throw error;
|
|
1711
|
+
// }
|
|
1712
|
+
// };
|