use cli b2 instead of s3 library
This commit is contained in:
parent
f238c13739
commit
3ffbcbab8e
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -7,5 +7,6 @@
|
|||||||
"https://json.schemastore.org/kustomization.json": "file:///home/cj/Documents/futureporn-monorepo/clusters/production/infrastructure.yaml"
|
"https://json.schemastore.org/kustomization.json": "file:///home/cj/Documents/futureporn-monorepo/clusters/production/infrastructure.yaml"
|
||||||
},
|
},
|
||||||
"editor.tabSize": 2,
|
"editor.tabSize": 2,
|
||||||
"editor.formatOnSave": true
|
"editor.formatOnSave": true,
|
||||||
|
"git.ignoreLimitWarning": true
|
||||||
}
|
}
|
@ -19,7 +19,8 @@ echo(" * Remote pin the IPFS CID")
|
|||||||
echo(" [Press Enter When Complete...]")
|
echo(" [Press Enter When Complete...]")
|
||||||
_ = stdin()
|
_ = stdin()
|
||||||
|
|
||||||
echo(" * Create magnet link. ex: `torf ~/Downloads/projektmelody-chaturbate-2025-08-25.mp4 --notorrent --notracker --webseed https://futureporn-b2.b-cdn.net/projektmelody-chaturbate-2025-08-25.mp4'")
|
echo(" * Create magnet link. ex: `mktorrent --web-seed https://futureporn-b2.b-cdn.net/projektmelody-fansly-2025-08-27.mp4 ~/Documents/voddo/projektmelody-fansly-2025-08-27.mp4`")
|
||||||
|
echo(" * Create magnet link. ex: `torf ~/Downloads/projektmelody-chaturbate-2025-08-27.mp4 --notorrent --notracker`")
|
||||||
echo(" [Press Enter When Complete...]")
|
echo(" [Press Enter When Complete...]")
|
||||||
_ = stdin()
|
_ = stdin()
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "futureporn",
|
"name": "futureporn",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "2.4.14",
|
"version": "2.5.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "concurrently npm:dev:serve npm:dev:build npm:dev:worker npm:dev:compose npm:dev:sftp",
|
"dev": "concurrently npm:dev:serve npm:dev:build npm:dev:worker npm:dev:compose npm:dev:sftp",
|
||||||
@ -101,4 +101,4 @@
|
|||||||
"prisma": {
|
"prisma": {
|
||||||
"seed": "tsx prisma/seed.ts"
|
"seed": "tsx prisma/seed.ts"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ import {
|
|||||||
import { readFile } from 'fs/promises';
|
import { readFile } from 'fs/promises';
|
||||||
import { env } from '../config/env' // adjust this path based on your project structure
|
import { env } from '../config/env' // adjust this path based on your project structure
|
||||||
import logger from "./logger";
|
import logger from "./logger";
|
||||||
|
import { getNanoSpawn } from "./nanoSpawn";
|
||||||
|
|
||||||
let client: S3Client | null = null
|
let client: S3Client | null = null
|
||||||
|
|
||||||
@ -24,33 +25,38 @@ export async function uploadFile(
|
|||||||
if (!mimetype) throw new Error('uploadFile requires mimetype as fifth param');
|
if (!mimetype) throw new Error('uploadFile requires mimetype as fifth param');
|
||||||
logger.debug(`[uploadFile] filePath=${filePath} with key=${key} bucket=${bucket}`);
|
logger.debug(`[uploadFile] filePath=${filePath} with key=${key} bucket=${bucket}`);
|
||||||
|
|
||||||
try {
|
const spawn = await getNanoSpawn();
|
||||||
// Read file content from disk
|
await spawn('b2', ['file', 'upload', bucket, filePath, key])
|
||||||
const fileBuffer = await readFile(filePath);
|
|
||||||
|
|
||||||
// Upload to S3
|
return key
|
||||||
await s3Client.send(
|
|
||||||
new PutObjectCommand({
|
|
||||||
Bucket: bucket,
|
|
||||||
Key: key,
|
|
||||||
Body: fileBuffer,
|
|
||||||
ContentType: mimetype, // or determine dynamically if needed
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
|
|
||||||
return key;
|
// try {
|
||||||
|
// // Read file content from disk
|
||||||
|
// const fileBuffer = await readFile(filePath);
|
||||||
|
|
||||||
} catch (caught) {
|
// // Upload to S3
|
||||||
if (caught instanceof S3ServiceException) {
|
// await s3Client.send(
|
||||||
logger.error(
|
// new PutObjectCommand({
|
||||||
`Error from S3 while uploading to ${bucket}. ${caught.name}: ${caught.message}`,
|
// Bucket: bucket,
|
||||||
);
|
// Key: key,
|
||||||
} else {
|
// Body: fileBuffer,
|
||||||
logger.error(`Unexpected error during upload:`, caught);
|
// ContentType: mimetype, // or determine dynamically if needed
|
||||||
}
|
// }),
|
||||||
|
// );
|
||||||
|
|
||||||
throw new Error(`Failed to upload ${filePath} to s3://${bucket}/${key}`);
|
// return key;
|
||||||
}
|
|
||||||
|
// } catch (caught) {
|
||||||
|
// if (caught instanceof S3ServiceException) {
|
||||||
|
// logger.error(
|
||||||
|
// `Error from S3 while uploading to ${bucket}. ${caught.name}: ${caught.message}`,
|
||||||
|
// );
|
||||||
|
// } else {
|
||||||
|
// logger.error(`Unexpected error during upload:`, caught);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// throw new Error(`Failed to upload ${filePath} to s3://${bucket}/${key}`);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,7 +40,8 @@ async function getJson(username) {
|
|||||||
const formatted = formatTwitterDate(sinceDate);
|
const formatted = formatTwitterDate(sinceDate);
|
||||||
|
|
||||||
const { defaultDatasetId } = await client.actor('kaitoeasyapi/twitter-x-data-tweet-scraper-pay-per-result-cheapest').call({
|
const { defaultDatasetId } = await client.actor('kaitoeasyapi/twitter-x-data-tweet-scraper-pay-per-result-cheapest').call({
|
||||||
searchTerms: [`from:${username} since:${formatted}`]
|
searchTerms: [`from:${username} since:${formatted}`],
|
||||||
|
maxItems: 15,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Fetches results from the actor's dataset.
|
// Fetches results from the actor's dataset.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user