int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); app.setApplicationName("Grabber"); app.setApplicationVersion(VERSION); app.setOrganizationName("Bionus"); app.setOrganizationDomain("bionus.fr.cr"); QCommandLineParser parser; parser.addHelpOption(); parser.addVersionOption(); QCommandLineOption tagsOption(QStringList() << "t" << "tags", "Tags to search for.", "tags"); QCommandLineOption sourceOption(QStringList() << "s" << "sources", "Source websites.", "sources"); QCommandLineOption pageOption(QStringList() << "p" << "page", "Starting page.", "page", "1"); QCommandLineOption limitOption(QStringList() << "m" << "max", "Maximum of returned images.", "count"); QCommandLineOption perpageOption(QStringList() << "i" << "perpage", "Number of images per page.", "count", "20"); QCommandLineOption pathOption(QStringList() << "l" << "location", "Location to save the results.", "path"); QCommandLineOption filenameOption(QStringList() << "f" << "filename", "Filename to save the results.", "filename"); QCommandLineOption userOption(QStringList() << "u" << "user", "Username to connect to the source.", "user"); QCommandLineOption passwordOption(QStringList() << "w" << "password", "Password to connect to the source.", "password"); QCommandLineOption blacklistOption(QStringList() << "b" << "blacklist", "Download blacklisted images."); QCommandLineOption postfilteringOption(QStringList() << "r" << "postfilter", "Filter results.", "filter"); QCommandLineOption noDuplicatesOption(QStringList() << "n" << "no-duplicates", "Remove duplicates from results."); QCommandLineOption verboseOption(QStringList() << "d" << "debug", "Show debug messages."); QCommandLineOption tagsMinOption(QStringList() << "tm" << "tags-min", "Minimum count for tags to be returned.", "count", "0"); QCommandLineOption tagsFormatOption(QStringList() << "tf" << "tags-format", "Format for returning tags.", "format", "%tag\t%count\t%type"); parser.addOption(tagsOption); parser.addOption(sourceOption); parser.addOption(pageOption); parser.addOption(limitOption); parser.addOption(perpageOption); parser.addOption(pathOption); parser.addOption(filenameOption); parser.addOption(userOption); parser.addOption(passwordOption); parser.addOption(blacklistOption); parser.addOption(postfilteringOption); parser.addOption(tagsMinOption); parser.addOption(tagsFormatOption); parser.addOption(noDuplicatesOption); parser.addOption(verboseOption); QCommandLineOption returnCountOption(QStringList() << "rc" << "return-count", "Return total image count."); QCommandLineOption returnTagsOption(QStringList() << "rt" << "return-tags", "Return tags for a search."); QCommandLineOption returnPureTagsOption(QStringList() << "rp" << "return-pure-tags", "Return tags."); QCommandLineOption returnImagesOption(QStringList() << "ri" << "return-images", "Return images url."); QCommandLineOption downloadOption(QStringList() << "download", "Download found images."); parser.addOption(returnCountOption); parser.addOption(returnTagsOption); parser.addOption(returnPureTagsOption); parser.addOption(returnImagesOption); parser.addOption(downloadOption); parser.process(app); if (!parser.isSet(verboseOption)) qInstallMessageHandler(noMessageOutput); Profile *profile = new Profile(savePath()); Downloader *dwnldr = new Downloader(profile, parser.value(tagsOption).split(" ", QString::SkipEmptyParts), parser.value(postfilteringOption).split(" ", QString::SkipEmptyParts), Site::getSites(profile, parser.value(sourceOption).split(" ", QString::SkipEmptyParts)), parser.value(pageOption).toInt(), parser.value(limitOption).toInt(), parser.value(perpageOption).toInt(), parser.value(pathOption), parser.value(filenameOption), parser.value(userOption), parser.value(passwordOption), parser.isSet(blacklistOption), profile->getBlacklist(), parser.isSet(noDuplicatesOption), parser.value(tagsMinOption).toInt(), parser.value(tagsFormatOption)); if (parser.isSet(returnCountOption)) dwnldr->getPageCount(); else if (parser.isSet(returnTagsOption)) dwnldr->getPageTags(); else if (parser.isSet(returnPureTagsOption)) dwnldr->getTags(); else if (parser.isSet(returnImagesOption)) dwnldr->getUrls(); else if (parser.isSet(downloadOption)) dwnldr->getImages(); else parser.showHelp(); dwnldr->setQuit(true); QObject::connect(dwnldr, SIGNAL(quit()), qApp, SLOT(quit())); return app.exec(); }
int main(int argc, char** argv) { #ifdef QT_NO_DEBUG Tools::disableCoreDumps(); #endif Application app(argc, argv); Application::setApplicationName("keepassx"); Application::setApplicationVersion(KEEPASSX_VERSION); // don't set organizationName as that changes the return value of // QDesktopServices::storageLocation(QDesktopServices::DataLocation) QApplication::setQuitOnLastWindowClosed(false); if (!Crypto::init()) { QString error = QCoreApplication::translate("Main", "Fatal error while testing the cryptographic functions."); error.append("\n"); error.append(Crypto::errorString()); MessageBox::critical(Q_NULLPTR, QCoreApplication::translate("Main", "KeePassX - Error"), error); return 1; } QCommandLineParser parser; parser.setApplicationDescription(QCoreApplication::translate("main", "KeePassX - cross-platform password manager")); parser.addPositionalArgument("filename", QCoreApplication::translate("main", "filename of the password database to open (*.kdbx)")); QCommandLineOption configOption("config", QCoreApplication::translate("main", "path to a custom config file"), "config"); QCommandLineOption passwordOption("password", QCoreApplication::translate("main", "password of the database (DANGEROUS!)"), "password"); QCommandLineOption keyfileOption("keyfile", QCoreApplication::translate("main", "key file of the database"), "keyfile"); parser.addHelpOption(); parser.addVersionOption(); parser.addOption(configOption); parser.addOption(passwordOption); parser.addOption(keyfileOption); parser.process(app); const QStringList args = parser.positionalArguments(); if (parser.isSet(configOption)) { Config::createConfigFromFile(parser.value(configOption)); } Translator::installTranslator(); #ifdef Q_OS_MAC // Don't show menu icons on OSX QApplication::setAttribute(Qt::AA_DontShowIconsInMenus); #endif MainWindow mainWindow; mainWindow.show(); QObject::connect(&app, SIGNAL(openFile(QString)), &mainWindow, SLOT(openDatabase(QString))); if (!args.isEmpty()) { QString filename = args[0]; if (!filename.isEmpty() && QFile::exists(filename)) { mainWindow.openDatabase(filename, parser.value(passwordOption), parser.value(keyfileOption)); } } if (config()->get("OpenPreviousDatabasesOnStartup").toBool()) { QStringList filenames = config()->get("LastOpenedDatabases").toStringList(); Q_FOREACH (const QString& filename, filenames) { if (!filename.isEmpty() && QFile::exists(filename)) { mainWindow.openDatabase(filename, QString(), QString()); } } }