added support for monolith
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
import { execSync } from "child_process";
|
||||
import createFile from "../storage/createFile";
|
||||
import axios from "axios";
|
||||
import { Agent } from "http";
|
||||
import { prisma } from "../db";
|
||||
import { Link } from "@prisma/client";
|
||||
import { Page } from "playwright";
|
||||
|
||||
const handleMonolith = async (link: Link, content: string) => {
|
||||
if (!link.url) return;
|
||||
|
||||
let command = process.env.SINGLEFILE_ARCHIVE_COMMAND;
|
||||
let httpApi = process.env.SINGLEFILE_ARCHIVE_HTTP_API;
|
||||
try {
|
||||
let html = execSync(
|
||||
`monolith - -I -b ${link.url} ${
|
||||
process.env.MONOLITH_OPTIONS || "-j -F -s"
|
||||
} -o -`,
|
||||
{
|
||||
timeout: 120000,
|
||||
maxBuffer: 1024 * 1024 * Number(process.env.MONOLITH_MAX_BUFFER || 5),
|
||||
input: content,
|
||||
}
|
||||
);
|
||||
|
||||
if (!html?.length) {
|
||||
console.error("Error running SINGLEFILE_ARCHIVE_COMMAND: Empty buffer");
|
||||
return;
|
||||
}
|
||||
|
||||
await createFile({
|
||||
data: html,
|
||||
filePath: `archives/${link.collectionId}/${link.id}.html`,
|
||||
}).then(async () => {
|
||||
await prisma.link.update({
|
||||
where: { id: link.id },
|
||||
data: {
|
||||
singlefile: `archives/${link.collectionId}/${link.id}.html`,
|
||||
},
|
||||
});
|
||||
});
|
||||
} catch (err) {
|
||||
console.error("Error running SINGLEFILE_ARCHIVE_COMMAND:", err);
|
||||
}
|
||||
// if (httpApi) {
|
||||
// try {
|
||||
// let html = await axios.post(
|
||||
// httpApi,
|
||||
// { url: link.url },
|
||||
// {
|
||||
// headers: {
|
||||
// "Content-Type": "application/x-www-form-urlencoded",
|
||||
// },
|
||||
// httpAgent: new Agent({ keepAlive: false }),
|
||||
// }
|
||||
// );
|
||||
|
||||
// if (!html.data.length) {
|
||||
// console.error("Error running SINGLEFILE_ARCHIVE_COMMAND: Empty buffer");
|
||||
// return;
|
||||
// }
|
||||
|
||||
// const collectionId = (
|
||||
// await prisma.link.findUnique({
|
||||
// where: { id: link.id },
|
||||
// select: { collectionId: true },
|
||||
// })
|
||||
// )?.collectionId;
|
||||
|
||||
// if (!collectionId) {
|
||||
// console.error(
|
||||
// "Error running SINGLEFILE_ARCHIVE_COMMAND: Collection ID not found"
|
||||
// );
|
||||
// return;
|
||||
// }
|
||||
|
||||
// await createFile({
|
||||
// data: html.data,
|
||||
// filePath: `archives/${collectionId}/${link.id}.html`,
|
||||
// }).then(async () => {
|
||||
// await prisma.link.update({
|
||||
// where: { id: link.id },
|
||||
// data: {
|
||||
// singlefile: `archives/${collectionId}/${link.id}.html`,
|
||||
// },
|
||||
// });
|
||||
// });
|
||||
// } catch (err) {
|
||||
// console.error(
|
||||
// "Error fetching Singlefile using SINGLEFILE_ARCHIVE_HTTP_API:",
|
||||
// err
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
};
|
||||
|
||||
export default handleMonolith;
|
||||
Reference in New Issue
Block a user