Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f79cc244ef | ||
|
|
14137e1b1b | ||
|
|
43ee4597a9 | ||
|
|
f311c8e2f3 | ||
|
|
48933b4078 |
No files matched your search
@@ -1,5 +1,12 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [3.20.1](https://github.com/Masutayunikon/FanKarr/compare/v3.20.0...v3.20.1) (2026-06-08)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **organize:** import manuel ne traite que les fichiers 100% complets ([f311c8e](https://github.com/Masutayunikon/FanKarr/commit/f311c8e2f3b9f53b6d03a327cf1b5bfd69cc6424))
|
||||||
|
|
||||||
## [3.20.0](https://github.com/Masutayunikon/FanKarr/compare/v3.19.1...v3.20.0) (2026-05-29)
|
## [3.20.0](https://github.com/Masutayunikon/FanKarr/compare/v3.19.1...v3.20.0) (2026-05-29)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -520,13 +520,17 @@ export async function organizeTorrent(
|
|||||||
hash : string,
|
hash : string,
|
||||||
name : string,
|
name : string,
|
||||||
savePath : string,
|
savePath : string,
|
||||||
seriesData: any[]
|
seriesData: any[],
|
||||||
|
files? : { name?: string; progress: number; priority?: number }[],
|
||||||
): Promise<OrganizeResult> {
|
): Promise<OrganizeResult> {
|
||||||
logger.info('organize', `Import manuel lancé pour "${name}" (${hash})`)
|
logger.info('organize', `Import manuel lancé pour "${name}" (${hash})`)
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const worker = new Worker(resolveWorkerPath())
|
const worker = new Worker(resolveWorkerPath())
|
||||||
const fakeTorrent = { hash, name, save_path: savePath, state: 'seeding' }
|
// files : progression par fichier récupérée depuis le client torrent.
|
||||||
|
// Permet au worker de ne traiter que les fichiers à 100% et d'éviter
|
||||||
|
// les EBUSY sur Windows quand qBit est encore en train d'écrire les autres.
|
||||||
|
const fakeTorrent = { hash, name, save_path: savePath, state: 'seeding', files: files ?? [] }
|
||||||
const result: OrganizeResult = { total: 0, skipped: 0, done: 0, errors: [] }
|
const result: OrganizeResult = { total: 0, skipped: 0, done: 0, errors: [] }
|
||||||
|
|
||||||
worker.on('message', (msg: any) => {
|
worker.on('message', (msg: any) => {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { logger } from '../logger.js'
|
|||||||
import { organizeTorrent, migrateOrganizedEpisodeIds } from '../organize.js'
|
import { organizeTorrent, migrateOrganizedEpisodeIds } from '../organize.js'
|
||||||
import { loadEnrichedSeriesData } from '../lib/github-cache.js'
|
import { loadEnrichedSeriesData } from '../lib/github-cache.js'
|
||||||
import { recentOrganized, pushNotif } from '../lib/notifs.js'
|
import { recentOrganized, pushNotif } from '../lib/notifs.js'
|
||||||
|
import { dispatchGetFiles } from '../torrent-clients/index.js'
|
||||||
import { DATA_DIR } from '../config.js'
|
import { DATA_DIR } from '../config.js'
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
|
|
||||||
@@ -36,7 +37,13 @@ router.post('/organize', requireAuth, async (req, res) => {
|
|||||||
if (!hash || !name || !save_path) { res.status(400).json({ error: 'hash, name et save_path requis' }); return }
|
if (!hash || !name || !save_path) { res.status(400).json({ error: 'hash, name et save_path requis' }); return }
|
||||||
try {
|
try {
|
||||||
const seriesData = await loadEnrichedSeriesData()
|
const seriesData = await loadEnrichedSeriesData()
|
||||||
const result = await organizeTorrent(hash, name, save_path, seriesData)
|
|
||||||
|
// Récupère la progression par fichier depuis le client torrent.
|
||||||
|
// Permet au worker de sauter les fichiers encore en téléchargement (EBUSY sur Windows).
|
||||||
|
// En cas d'échec (client injoignable, hash non trouvé), on continue sans filtre.
|
||||||
|
const files = await dispatchGetFiles(hash).catch(() => [])
|
||||||
|
|
||||||
|
const result = await organizeTorrent(hash, name, save_path, seriesData, files)
|
||||||
if (result.done > 0 || result.errors.length > 0) {
|
if (result.done > 0 || result.errors.length > 0) {
|
||||||
pushNotif({ hash, name, done: result.done, skipped: result.skipped, errors: result.errors.length, errorFiles: result.errors, at: new Date().toISOString() })
|
pushNotif({ hash, name, done: result.done, skipped: result.skipped, errors: result.errors.length, errorFiles: result.errors, at: new Date().toISOString() })
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
3.20.0
|
3.20.1
|
||||||
Reference in new issue
Block a user