]> git.sur5r.net Git - minitube/blobdiff - src/subscriptionimportview.cpp
New upstream version 3.9.1
[minitube] / src / subscriptionimportview.cpp
index a1a414d133991c6955426cca289902c5ab2b9c95..8283b4f8228a0fdbf64f590fa62e8896daa35042 100644 (file)
@@ -46,26 +46,40 @@ SubscriptionImportView::SubscriptionImportView(QWidget *parent) : View(parent) {
     tip->setFont(FontUtils::medium());
     layout->addWidget(tip);
 
-    auto button = new QPushButton("Open subscriptions.json");
+    auto button = new QPushButton("Open subscriptions.csv");
     button->setDefault(true);
     connect(this, &View::didAppear, button, [button] { button->setFocus(); });
     button->setFocus();
     button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
     connect(button, &QPushButton::clicked, this, [this] {
         auto dir = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
-        QString fileName = QFileDialog::getOpenFileName(this, tr("Open subscriptions.json"), dir,
-                                                        tr("JSON Files (*.json)"));
+        QString fileName = QFileDialog::getOpenFileName(this, tr("Open subscriptions.csv"), dir,
+                                                        tr("YouTube data (*.csv *.json)"));
         if (!fileName.isEmpty()) {
             auto w = MainWindow::instance();
             QString msg;
             QFile file(fileName);
             if (file.open(QFile::ReadOnly)) {
                 int count = 0;
-                const auto array = QJsonDocument::fromJson(file.readAll()).array();
-                for (const auto &i : array) {
-                    auto id = i["snippet"]["resourceId"]["channelId"].toString();
-                    qDebug() << "Subscribing to" << id;
-                    if (YTChannel::subscribe(id)) count++;
+                if (QFileInfo(fileName).suffix().toLower() == "csv") {
+                    int lineNumber = 1;
+                    while (!file.atEnd()) {
+                        QByteArray line = file.readLine();
+                        if (lineNumber > 1) {
+                            auto fields = line.split(',');
+                            auto id = fields.first();
+                            qDebug() << "Subscribing to" << id;
+                            if (YTChannel::subscribe(id)) count++;
+                        }
+                        lineNumber++;
+                    }
+                } else {
+                    const auto array = QJsonDocument::fromJson(file.readAll()).array();
+                    for (const auto &i : array) {
+                        auto id = i["snippet"]["resourceId"]["channelId"].toString();
+                        qDebug() << "Subscribing to" << id;
+                        if (YTChannel::subscribe(id)) count++;
+                    }
                 }
                 msg = tr("Subscribed to %n channel(s)", "", count);
                 w->showHome();