比較提交
3 次程式碼提交
9540f27c95
...
d23dadbe49
作者 | SHA1 | 日期 | |
---|---|---|---|
d23dadbe49 | |||
4604970f9d | |||
6cd7a92576 |
@ -45,6 +45,7 @@ int CommandAdd::handle(QStringList arguments)
|
||||
"exit asap, but it's possible that a few files will still be processed. "
|
||||
"Set -t 1 to avoid this behavior, but processing will be slower. "},
|
||||
{{"n", "no-content"}, "Only add paths to database. Do not index content"},
|
||||
{{"v", "verbose"}, "Print paths of files being processed"},
|
||||
{{"f", "fill-content"}, "Index content for files previously indexed with -n"},
|
||||
{"tags", "Comma-separated list of tags to assign"},
|
||||
{{"t", "threads"}, "Number of threads to use.", "threads"}});
|
||||
@ -56,6 +57,8 @@ int CommandAdd::handle(QStringList arguments)
|
||||
this->keepGoing = parser.isSet("continue");
|
||||
bool pathsOnly = parser.isSet("no-content");
|
||||
bool fillContent = parser.isSet("fill-content");
|
||||
bool verbose = parser.isSet("verbose");
|
||||
|
||||
if(parser.isSet("threads"))
|
||||
{
|
||||
QString threadsCount = parser.value("threads");
|
||||
@ -85,18 +88,44 @@ int CommandAdd::handle(QStringList arguments)
|
||||
fileSaverOptions.keepGoing = keepGoing;
|
||||
fileSaverOptions.fillExistingContentless = fillContent;
|
||||
fileSaverOptions.metadataOnly = pathsOnly;
|
||||
fileSaverOptions.verbose = false;
|
||||
fileSaverOptions.verbose = verbose;
|
||||
|
||||
indexer = new Indexer(*this->dbService);
|
||||
indexer->setFileSaverOptions(fileSaverOptions);
|
||||
|
||||
indexer->setTargetPaths(files.toVector());
|
||||
|
||||
if(verbose)
|
||||
{
|
||||
indexer->setProgressReportThreshold(1);
|
||||
}
|
||||
|
||||
connect(indexer, &Indexer::pathsCountChanged, this,
|
||||
[](int pathsCount) { Logger::info() << "Found paths: " << pathsCount << Qt::endl; });
|
||||
connect(indexer, &Indexer::indexProgress, this,
|
||||
[](int pathsCount, unsigned int /*added*/, unsigned int /*skipped*/, unsigned int /*failed*/,
|
||||
unsigned int /*totalCount*/) { Logger::info() << "Processed files: " << pathsCount << Qt::endl; });
|
||||
[verbose, this](int pathsCount, unsigned int /*added*/, unsigned int /*skipped*/, unsigned int /*failed*/,
|
||||
unsigned int /*totalCount*/)
|
||||
{
|
||||
Logger::info() << "Processed files: " << pathsCount << Qt::endl;
|
||||
if(verbose)
|
||||
{
|
||||
IndexResult indexResult = indexer->getResult();
|
||||
int newlyAdded = indexResult.results.count() - currentResult.results.count();
|
||||
int newOffset = 0;
|
||||
if(newlyAdded > 0)
|
||||
{
|
||||
newOffset = indexResult.results.count() - newlyAdded;
|
||||
for(int i = newOffset; i < indexResult.results.count(); i++)
|
||||
{
|
||||
auto result = indexResult.results.at(i);
|
||||
Logger::info() << SaveFileResultToString(result.second) << result.first << Qt::endl;
|
||||
}
|
||||
}
|
||||
this->currentResult = indexResult;
|
||||
}
|
||||
}
|
||||
|
||||
);
|
||||
connect(indexer, &Indexer::finished, this, &CommandAdd::indexerFinished);
|
||||
|
||||
this->autoFinish = false;
|
||||
|
@ -13,6 +13,8 @@ class CommandAdd : public Command
|
||||
bool keepGoing = true;
|
||||
|
||||
protected:
|
||||
IndexResult currentResult;
|
||||
|
||||
public:
|
||||
using Command::Command;
|
||||
|
||||
|
@ -111,6 +111,20 @@ void Indexer::dirScanProgress(int current, int total)
|
||||
|
||||
void Indexer::processFileScanResult(FileScanResult result)
|
||||
{
|
||||
/* TODO: OK_WASEMPTY might need a special list */
|
||||
if(result.second == OK || result.second == OK_WASEMPTY)
|
||||
{
|
||||
++this->currentIndexResult.addedPaths;
|
||||
}
|
||||
else if(result.second == SKIPPED)
|
||||
{
|
||||
++this->currentIndexResult.skippedPaths;
|
||||
}
|
||||
else
|
||||
{
|
||||
++this->currentIndexResult.erroredPaths;
|
||||
}
|
||||
|
||||
if(isErrorSaveFileResult(result.second))
|
||||
{
|
||||
this->currentIndexResult.results.append(result);
|
||||
@ -129,20 +143,6 @@ void Indexer::processFileScanResult(FileScanResult result)
|
||||
}
|
||||
}
|
||||
|
||||
/* TODO: OK_WASEMPTY might need a special list */
|
||||
if(result.second == OK || result.second == OK_WASEMPTY)
|
||||
{
|
||||
++this->currentIndexResult.addedPaths;
|
||||
}
|
||||
else if(result.second == SKIPPED)
|
||||
{
|
||||
++this->currentIndexResult.skippedPaths;
|
||||
}
|
||||
else
|
||||
{
|
||||
++this->currentIndexResult.erroredPaths;
|
||||
}
|
||||
|
||||
QTime currentTime = QTime::currentTime();
|
||||
if(currentScanProcessedCount++ == progressReportThreshold || this->lastProgressReportTime.secsTo(currentTime) >= 10)
|
||||
{
|
||||
@ -171,3 +171,8 @@ void Indexer::setFileSaverOptions(FileSaverOptions options)
|
||||
{
|
||||
this->fileSaverOptions = options;
|
||||
}
|
||||
|
||||
void Indexer::setProgressReportThreshold(int threshold)
|
||||
{
|
||||
this->progressReportThreshold = threshold;
|
||||
}
|
||||
|
@ -82,6 +82,8 @@ class Indexer : public QObject
|
||||
|
||||
void setFileSaverOptions(FileSaverOptions options);
|
||||
|
||||
void setProgressReportThreshold(int threshold);
|
||||
|
||||
void requestCancellation();
|
||||
|
||||
Indexer(SqliteDbService &db);
|
||||
|
載入中…
新增問題並參考
Block a user