fix(server): youtube müzik videolarının stream etme sorununu çöz

Küçük resim ve video akışı için dosya yolları çözülürken
`resolveStoragePath` fonksiyonu kullanılmaya başlandı. Bu sayede
dosyalar standart indirme dizininde veya rclone ile yönetilen
bir konumda olsa bile doğru şekilde erişilebilir.
This commit is contained in:
2026-02-03 16:39:49 +03:00
parent 2c06867c75
commit 1774f681be

View File

@@ -10369,9 +10369,14 @@ function collectMusicEntries() {
const infoHash = info.infoHash || folder;
const title =
info.name || metadata?.title || path.basename(targetPath) || folder;
const thumbnail =
metadata?.thumbnail ||
(metadata ? `/yt-data/${folder}/thumbnail.jpg` : null);
// Thumbnail kontrolü - metadata varsa fiziksel dosya varlığını kontrol et
let thumbnail = metadata?.thumbnail;
if (!thumbnail && metadata) {
const thumbPath = path.join(YT_DATA_ROOT, folder, "thumbnail.jpg");
if (fs.existsSync(thumbPath)) {
thumbnail = `/yt-data/${folder}/thumbnail.jpg`;
}
}
entries.push({
id: `${folder}:${targetPath}`,
@@ -10658,7 +10663,12 @@ app.get("/stream/:hash", requireAuth, (req, res) => {
const index = job.selectedIndex || 0;
const fileEntry = job.files[index] || job.files[0];
if (!fileEntry) return res.status(404).end();
const absPath = path.join(job.savePath, fileEntry.name);
const folderId = job.folderId || path.basename(job.savePath || "");
const relPath = folderId ? path.join(folderId, fileEntry.name) : fileEntry.name;
const absPath =
resolveStoragePath(relPath) ||
(job.savePath ? path.join(job.savePath, fileEntry.name) : null);
if (!absPath) return res.status(404).end();
return streamLocalFile(absPath, range, res);
}
@@ -10668,12 +10678,10 @@ app.get("/stream/:hash", requireAuth, (req, res) => {
if (fileKeys.length) {
const idx = Number(req.query.index) || 0;
const targetKey = fileKeys[idx] || fileKeys[0];
const absPath = path.join(
DOWNLOAD_DIR,
req.params.hash,
targetKey.replace(/\\/g, "/")
);
if (fs.existsSync(absPath)) {
// Rclone ile taşınmış dosyalar için resolveStoragePath kullan
const relPath = path.join(req.params.hash, targetKey.replace(/\\/g, "/"));
const absPath = resolveStoragePath(relPath);
if (absPath) {
return streamLocalFile(absPath, range, res);
}
}