Warning, file /frameworks/kfilemetadata/tests/dump.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2014 Vishesh Handa <me@vhanda.in> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include <QCoreApplication> 0008 #include <QCommandLineParser> 0009 #include <QDebug> 0010 #include <QFileInfo> 0011 #include <QMimeDatabase> 0012 #include <QTextStream> 0013 0014 #include "extractor.h" 0015 #include "extractorcollection.h" 0016 #include "propertyinfo.h" 0017 #include "simpleextractionresult.h" 0018 #include "typeinfo.h" 0019 0020 #include <iostream> 0021 0022 int main(int argc, char** argv) 0023 { 0024 QCoreApplication app(argc, argv); 0025 0026 QCommandLineParser parser; 0027 parser.addOption({{"f", "fulltext"}, "Extract full text"}); 0028 parser.addPositionalArgument(QStringLiteral("filename"), QStringLiteral("File to process")); 0029 parser.process(app); 0030 0031 if (parser.positionalArguments().size() != 1) { 0032 qDebug() << "Exactly one argument is accepted"; 0033 parser.showHelp(1); 0034 } 0035 bool extractFulltext = parser.isSet("fulltext"); 0036 0037 using KFileMetaData::ExtractionResult; 0038 const ExtractionResult::Flags extractionLevel = (extractFulltext 0039 ? ExtractionResult::ExtractMetaData | ExtractionResult::ExtractPlainText 0040 : ExtractionResult::ExtractMetaData); 0041 0042 auto fi = QFileInfo(parser.positionalArguments().at(0)); 0043 QString url = fi.absoluteFilePath(); 0044 0045 if (!fi.exists()) { 0046 qDebug() << "File" << url << "not found"; 0047 return 1; 0048 } 0049 0050 if (!fi.isFile() || !fi.isReadable()) { 0051 qDebug() << "File" << url << "is not a readable file"; 0052 return 1; 0053 } 0054 0055 QMimeDatabase mimeDb; 0056 QString mimetype = mimeDb.mimeTypeForFile(url).name(); 0057 0058 KFileMetaData::ExtractorCollection extractors; 0059 QList<KFileMetaData::Extractor*> exList = extractors.fetchExtractors(mimetype); 0060 0061 QTextStream out(stdout); 0062 out << url << " " << mimetype << "\n"; 0063 0064 for (KFileMetaData::Extractor* ex : std::as_const(exList)) { 0065 const QString extractorName = ex->extractorProperties().value(QStringLiteral("Name")).toString(); 0066 out << "\t"; 0067 if (!extractorName.isEmpty()) { 0068 out << extractorName; 0069 } else { 0070 out << "Extractor"; 0071 } 0072 out << " For " << ex->mimetypes().join(QLatin1String("\n\t\t\t")) << "\n"; 0073 0074 KFileMetaData::SimpleExtractionResult result(url, mimetype, extractionLevel); 0075 ex->extract(&result); 0076 0077 out << "\t\tTypes:"; 0078 for (const auto t : result.types()) { 0079 out << " " << KFileMetaData::TypeInfo(t).name(); 0080 } 0081 out << "\n"; 0082 0083 const KFileMetaData::PropertyMultiMap multiMap= result.properties(); 0084 KFileMetaData::PropertyMultiMap::const_iterator it = multiMap.constBegin(); 0085 for (; it != multiMap.constEnd(); it++) { 0086 out << "\t\t" << KFileMetaData::PropertyInfo(it.key()).displayName() << ": " 0087 << it.value().toString() << " (" << it.value().typeName() << ")\n"; 0088 } 0089 if (extractFulltext) { 0090 out << "\t\tText: " << result.text() << "\n"; 0091 } 0092 out << "\t-------------\n"; 0093 } 0094 0095 return 0; 0096 }