dd
This commit is contained in:
parent
8ef6a653d8
commit
cdfb501952
@ -1,6 +1,6 @@
|
|||||||
import { type Request, type Response } from "express";
|
import { type Request, type Response } from "express";
|
||||||
import UserModel, { values } from '../models/userModel';
|
import UserModel, { values } from '../models/userModel';
|
||||||
import MediaModel, { Table } from '../models/mediaModel';
|
import MediaModel, { Table, Media } from '../models/mediaModel';
|
||||||
|
|
||||||
interface omdbRes{
|
interface omdbRes{
|
||||||
Title: string,
|
Title: string,
|
||||||
@ -17,31 +17,24 @@ function fromStringToTable(value: string): (Table | undefined) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function downloadImage(mData: omdbRes, cleanCode: number) {
|
async function downloadImage(mData: Media, type: Table) {
|
||||||
|
|
||||||
// Specify the path where you want to save the image
|
// Specify the path where you want to save the image
|
||||||
const outputPath = '/poster/' + mData.Type + '/' + cleanCode + '.jpg';
|
const outputPath = '/poster/' + type + '/' + mData.code + '.jpg';
|
||||||
|
|
||||||
// Use Bun's built-in fetch to download the image
|
// Use Bun's built-in fetch to download the image
|
||||||
const response = await fetch(mData.Poster);
|
const response = await fetch(mData.webImg);
|
||||||
|
|
||||||
// Check if the request was successful
|
// Check if the request was successful
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
|
console.log("fetch image error");
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert the response to a blob
|
// Convert the response to a blob
|
||||||
const imageBlob = await response.blob();
|
const imageBlob = await response.blob();
|
||||||
|
|
||||||
// Use Bun's write to save the image to a file
|
// Use Bun's write to save the image to a file
|
||||||
await Bun.write('./public/' + outputPath, await imageBlob.arrayBuffer());
|
await Bun.write('./public/' + outputPath, await imageBlob.arrayBuffer());
|
||||||
|
MediaModel.updateWebImg(type, mData.code, outputPath);
|
||||||
if (mData.Type.localeCompare("movie") == 0) {
|
|
||||||
MediaModel.updateWebImg(Table.movies, cleanCode, outputPath);
|
|
||||||
}
|
|
||||||
else if (mData.Type.localeCompare("series") == 0) {
|
|
||||||
MediaModel.updateWebImg(Table.series, cleanCode, outputPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,37 +61,38 @@ async function createMed(req: Request, res: Response) {
|
|||||||
return res.status(404).json({ message: 'wrong code' });
|
return res.status(404).json({ message: 'wrong code' });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const media: Media = {
|
||||||
|
id:0,
|
||||||
|
code: cleanCode,
|
||||||
|
title: mData.Title,
|
||||||
|
released: mData.Released,
|
||||||
|
webImg: mData.Poster,
|
||||||
|
};
|
||||||
|
|
||||||
const seriesFound = MediaModel.findOne(Table.series, cleanCode);
|
const seriesFound = MediaModel.findOne(Table.series, cleanCode);
|
||||||
if (seriesFound.length != 0) {
|
if (seriesFound.length != 0) {
|
||||||
res.status(409).json({ message: 'Media already exists' });
|
res.status(409).json({ message: 'Media already exists' });
|
||||||
await downloadImage(mData, cleanCode);
|
await downloadImage(media, Table.series);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const moviesFound = MediaModel.findOne(Table.movies, cleanCode);
|
const moviesFound = MediaModel.findOne(Table.movies, cleanCode);
|
||||||
if (moviesFound.length != 0) {
|
if (moviesFound.length != 0) {
|
||||||
res.status(409).json({ message: 'Media already exists' });
|
res.status(409).json({ message: 'Media already exists' });
|
||||||
await downloadImage(mData, cleanCode);
|
await downloadImage(media, Table.movies);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mData.Type.localeCompare("movie") == 0) {
|
if (mData.Type.localeCompare("movie") == 0) {
|
||||||
const savedMedia = MediaModel.save(Table.movies, cleanCode, mData.Title, mData.Released, mData.Poster);
|
const savedMedia = MediaModel.save(Table.movies, cleanCode, mData.Title, mData.Released, mData.Poster);
|
||||||
|
await downloadImage(media, Table.movies);
|
||||||
}
|
}
|
||||||
else if (mData.Type.localeCompare("series") == 0) {
|
else if (mData.Type.localeCompare("series") == 0) {
|
||||||
const savedMedia = MediaModel.save(Table.series, cleanCode, mData.Title, mData.Released, mData.Poster);
|
const savedMedia = MediaModel.save(Table.series, cleanCode, mData.Title, mData.Released, mData.Poster);
|
||||||
|
await downloadImage(media, Table.series);
|
||||||
}
|
}
|
||||||
|
|
||||||
const media = {
|
|
||||||
code: mediaCode,
|
|
||||||
title: mData.Title,
|
|
||||||
released: mData.Released,
|
|
||||||
webImg: mData.Poster,
|
|
||||||
};
|
|
||||||
|
|
||||||
res.status(201).json(media);
|
res.status(201).json(media);
|
||||||
await downloadImage(mData, cleanCode);
|
|
||||||
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return res.status(500).json({ message: 'Error when creating media' });
|
return res.status(500).json({ message: 'Error when creating media' });
|
||||||
}
|
}
|
||||||
@ -160,7 +154,8 @@ async function createGame(req: Request, res: Response) {
|
|||||||
)
|
)
|
||||||
const coverData = await response.json()
|
const coverData = await response.json()
|
||||||
|
|
||||||
const game = {
|
const game: Media = {
|
||||||
|
id: 0,
|
||||||
code: gameCode,
|
code: gameCode,
|
||||||
title: gameData[0].name,
|
title: gameData[0].name,
|
||||||
released: dateStr,
|
released: dateStr,
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import pool from 'miscellaneous/db'
|
import pool from 'miscellaneous/db'
|
||||||
|
|
||||||
|
|
||||||
class Media {
|
export class Media {
|
||||||
id?: number;
|
id!: number;
|
||||||
code?: number;
|
code!: number;
|
||||||
title?: string;
|
title!: string;
|
||||||
released?: string;
|
released!: string;
|
||||||
webImg?: string;
|
webImg!: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum Table {
|
export enum Table {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user