#include "qnapiconfig.h" #include "ffprobemovieinfoparser.h" #include "movieinfo.h" #include <cmath> #include <QTextStream> #include <QDebug> QString SubtitleConverter::detectFormat(const QString &subtitleFile) { const QStringList & lines = readFile(subtitleFile, 15); return detectFormat(lines); } QString SubtitleConverter::detectFormat(const QStringList & subtitleLines) { foreach(QString format, GlobalFormatsRegistry().enumerateFormats()) { if(GlobalFormatsRegistry().select(format)->detect(subtitleLines)) { return format; } } return ""; } bool SubtitleConverter::convertSubtitles(QString subtitleFile, QString targetFormatName, QString targetFileName, double movieFPS, double fpsRatio) {
// dopasowuje napisy do pliku z filmem bool QNapiAbstractEngine::match() { QFileInfo stf(subtitlesTmp); if(!stf.exists()) return false; QString targetExtension = stf.suffix(); if(!GlobalConfig().ppSubFormat().isEmpty() && GlobalConfig().ppSubExtension().isEmpty()) { targetExtension = GlobalFormatsRegistry().select(GlobalConfig().ppSubFormat())->defaultExtension(); } else if(!GlobalConfig().ppSubExtension().isEmpty()) { targetExtension = GlobalConfig().ppSubExtension(); } QFileInfo mf(movie); subtitles = mf.path() + "/" + mf.completeBaseName() + "." + targetExtension; QFileInfo sf(subtitles); if(!QFileInfo(sf.absolutePath()).isWritable()) return false; if(QFile::exists(subtitles)) { if(!noBackup) { QString newName = mf.path() + QDir::separator() + mf.completeBaseName() + "_kopia." + sf.suffix(); if(QFile::exists(newName)) QFile::remove(newName); QFile::rename(subtitles, newName); } else QFile::remove(subtitles); } bool r = false; #ifdef Q_OS_WIN // Pod windowsem, aby "wyczyscic" atrybuty pliku, tworzymy go na nowo QFile f(subtitles), f2(subtitlesTmp); if(!f.open(QIODevice::WriteOnly) || !f2.open(QIODevice::ReadOnly)) { f.close(); } else { r = f.write(f2.readAll()) > 0; f2.close(); f.close(); } #else // pod normalnymi OS-ami nie trzeba sie gimnastykowac z atrybutami r = QFile::copy(subtitlesTmp, subtitles); // Zmiana uprawnien do pliku if(GlobalConfig().changePermissions()) { bool validPermissions; int permInt = GlobalConfig().changePermissionsTo().toInt(&validPermissions, 8); if(validPermissions) { int perm = 0; perm |= (permInt & 0700) << 2; perm |= (permInt & 0070) << 1; perm |= (permInt & 0007); changeSubtitlesPermissions(QFile::Permissions(perm)); } } #endif return r; }