From cbb7510d990e8bf6b251e879586caf711bea9377 Mon Sep 17 00:00:00 2001 From: gfdgd_xi <3025613752@qq.com> Date: Mon, 6 May 2024 22:49:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BB=8Eapt=E6=BA=90?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=8C=85=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernelinformation.cpp | 33 +++++++++++++++++++++++++++++++++ kernelinformation.h | 4 ++++ 2 files changed, 37 insertions(+) diff --git a/kernelinformation.cpp b/kernelinformation.cpp index 38a3fbf..78b5f45 100644 --- a/kernelinformation.cpp +++ b/kernelinformation.cpp @@ -1,12 +1,45 @@ #include "kernelinformation.h" +#include <QProcess> + KernelInformation::KernelInformation() { } +QStringList KernelInformation::GetAptPackageList(QString name) +{ + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + env.insert("LANG", "en"); + QString data = GetCommandResult("apt", QStringList() << "list" << name, env); + QStringList lineData = data.split("\n"); + QStringList result = {}; + for(QString i: lineData) { + if(i.contains("Listing...")) { + continue; + } + result.append(i.split("/").at(0)); + } + return result; +} + +QByteArray KernelInformation::GetCommandResult(QString command, QStringList argv, QProcessEnvironment env) +{ + QProcess process; + process.setProcessEnvironment(env); + process.start(command, argv); + process.waitForStarted(); + process.waitForFinished(); + QByteArray result = process.readAllStandardOutput(); + process.close(); + return result; +} + void KernelInformation::LoadInfo() { + // 从 apt 获取信息 + qDebug() << this->GetAptPackageList("linux-*"); + // 从 Github 拉取信息 QUrl url(this->url); QUrlQuery query; query.addQueryItem("format", "j1"); diff --git a/kernelinformation.h b/kernelinformation.h index a864e38..3a4630d 100644 --- a/kernelinformation.h +++ b/kernelinformation.h @@ -42,9 +42,13 @@ signals: void loadFinished(QNetworkReply *reply); + private: QString url = "http://info.kernel.gxde.gfdgdxi.top/information.json"; QJsonArray listData; + + QStringList GetAptPackageList(QString name); + QByteArray GetCommandResult(QString command, QStringList argv, QProcessEnvironment env = QProcessEnvironment::systemEnvironment()); }; #endif // KERNELINFORMATION_H