fix unique ID for the same audio/video
This commit is contained in:
@@ -2,6 +2,7 @@ import {
|
||||
AfterCreate,
|
||||
AfterUpdate,
|
||||
AfterDestroy,
|
||||
BeforeSave,
|
||||
BeforeCreate,
|
||||
BelongsTo,
|
||||
Table,
|
||||
@@ -37,7 +38,7 @@ const logger = log.scope("db/models/audio");
|
||||
timestamps: true,
|
||||
})
|
||||
export class Audio extends Model<Audio> {
|
||||
@IsUUID(4)
|
||||
@IsUUID("all")
|
||||
@Default(DataType.UUIDV4)
|
||||
@Column({ primaryKey: true, type: DataType.UUID })
|
||||
id: string;
|
||||
@@ -175,11 +176,6 @@ export class Audio extends Model<Audio> {
|
||||
} catch (err) {
|
||||
logger.error("failed to generate metadata", err.message);
|
||||
}
|
||||
|
||||
// Generate unique ID base on user ID and audio MD5
|
||||
const userId = settings.getSync("user.id");
|
||||
audio.id = uuidv5(`${userId}/${audio.md5}`, uuidv5.URL);
|
||||
logger.info("generated ID:", audio.id);
|
||||
}
|
||||
|
||||
@AfterCreate
|
||||
@@ -241,6 +237,11 @@ export class Audio extends Model<Audio> {
|
||||
|
||||
const md5 = await hashFile(filePath, { algo: "md5" });
|
||||
|
||||
// Generate ID
|
||||
const userId = settings.getSync("user.id");
|
||||
const id = uuidv5(`${userId}/${md5}`, uuidv5.URL);
|
||||
logger.debug("Generated ID:", id);
|
||||
|
||||
const destDir = path.join(settings.userDataPath(), "audios");
|
||||
const destFile = path.join(destDir, `${md5}${extname}`);
|
||||
|
||||
@@ -265,6 +266,7 @@ export class Audio extends Model<Audio> {
|
||||
coverUrl,
|
||||
} = params || {};
|
||||
const record = this.build({
|
||||
id,
|
||||
source,
|
||||
md5,
|
||||
name,
|
||||
|
||||
@@ -31,7 +31,7 @@ import webApi from "@main/web-api";
|
||||
},
|
||||
}))
|
||||
export class PronunciationAssessment extends Model<PronunciationAssessment> {
|
||||
@IsUUID(4)
|
||||
@IsUUID('all')
|
||||
@Default(DataType.UUIDV4)
|
||||
@Column({ primaryKey: true, type: DataType.UUID })
|
||||
id: string;
|
||||
|
||||
@@ -35,7 +35,7 @@ import camelcaseKeys from "camelcase-keys";
|
||||
timestamps: true,
|
||||
})
|
||||
export class Recording extends Model<Recording> {
|
||||
@IsUUID(4)
|
||||
@IsUUID('all')
|
||||
@Default(DataType.UUIDV4)
|
||||
@Column({ primaryKey: true, type: DataType.UUID })
|
||||
id: string;
|
||||
|
||||
@@ -25,7 +25,7 @@ const logger = log.scope("db/models/transcription");
|
||||
timestamps: true,
|
||||
})
|
||||
export class Transcription extends Model<Transcription> {
|
||||
@IsUUID(4)
|
||||
@IsUUID('all')
|
||||
@Default(DataType.UUIDV4)
|
||||
@Column({ primaryKey: true, type: DataType.UUID })
|
||||
id: string;
|
||||
|
||||
@@ -37,7 +37,7 @@ const logger = log.scope("db/models/video");
|
||||
timestamps: true,
|
||||
})
|
||||
export class Video extends Model<Video> {
|
||||
@IsUUID(4)
|
||||
@IsUUID('all')
|
||||
@Default(DataType.UUIDV4)
|
||||
@Column({ primaryKey: true, type: DataType.UUID })
|
||||
id: string;
|
||||
@@ -196,11 +196,6 @@ export class Video extends Model<Video> {
|
||||
} catch (err) {
|
||||
logger.error("failed to generate metadata", err.message);
|
||||
}
|
||||
|
||||
// Generate unique ID base on user ID and audio MD5
|
||||
const userId = settings.getSync("user.id");
|
||||
video.id = uuidv5(`${userId}/${video.md5}`, uuidv5.URL);
|
||||
logger.info("generated ID:", video.id);
|
||||
}
|
||||
|
||||
@AfterCreate
|
||||
@@ -263,6 +258,11 @@ export class Video extends Model<Video> {
|
||||
|
||||
const md5 = await hashFile(filePath, { algo: "md5" });
|
||||
|
||||
// Generate ID
|
||||
const userId = settings.getSync("user.id");
|
||||
const id = uuidv5(`${userId}/${md5}`, uuidv5.URL);
|
||||
logger.debug("Generated ID:", id);
|
||||
|
||||
const destDir = path.join(settings.userDataPath(), "videos");
|
||||
const destFile = path.join(destDir, `${md5}${extname}`);
|
||||
|
||||
@@ -287,6 +287,7 @@ export class Video extends Model<Video> {
|
||||
coverUrl,
|
||||
} = params || {};
|
||||
const record = this.build({
|
||||
id,
|
||||
source,
|
||||
md5,
|
||||
name,
|
||||
|
||||
@@ -2,7 +2,7 @@ import log from "electron-log/main";
|
||||
import $ from "cheerio";
|
||||
import { BrowserView, ipcMain } from "electron";
|
||||
|
||||
const logger = log.scope("AUDIBLE_PROVIDER");
|
||||
const logger = log.scope("providers/audible-provider");
|
||||
|
||||
export class AudibleProvider {
|
||||
baseURL: string;
|
||||
@@ -12,6 +12,7 @@ export class AudibleProvider {
|
||||
}
|
||||
|
||||
scrape = async (path: string) => {
|
||||
logger.debug(`Scraping ${this.baseURL + path}`);
|
||||
return new Promise<string>((resolve, reject) => {
|
||||
const view = new BrowserView();
|
||||
view.webContents.loadURL(this.baseURL + path);
|
||||
|
||||
Reference in New Issue
Block a user