File indexing completed on 2024-05-19 05:57:23
0001 // SPDX-FileCopyrightText: 2022 Plata Hill <plata.hill@kdemail.net> 0002 // SPDX-License-Identifier: LGPL-2.1-or-later 0003 0004 #pragma once 0005 0006 #include "networkfetcher.h" 0007 0008 #include "programdata.h" 0009 0010 #include <QMap> 0011 0012 class QDate; 0013 0014 class TvSpielfilmFetcher : public NetworkFetcher 0015 { 0016 Q_OBJECT 0017 public: 0018 explicit TvSpielfilmFetcher(QNetworkAccessManager *nam = nullptr); 0019 virtual ~TvSpielfilmFetcher() = default; 0020 0021 void fetchGroups(std::function<void(const QVector<GroupData> &)> callback = nullptr, std::function<void(const Error &)> errorCallback = nullptr) override; 0022 void fetchGroup(const QString &url, 0023 const GroupId &groupId, 0024 std::function<void(const QList<ChannelData> &)> callback = nullptr, 0025 std::function<void(const Error &)> errorCallback = nullptr) override; 0026 void fetchProgram(const ChannelId &channelId, 0027 std::function<void(const QVector<ProgramData> &)> callback = nullptr, 0028 std::function<void(const Error &)> errorCallback = nullptr) override; 0029 void fetchProgramDescription(const ChannelId &channelId, 0030 const ProgramId &programId, 0031 const QString &url, 0032 std::function<void(const QString &)> callback = nullptr, 0033 std::function<void(const Error &)> errorCallback = nullptr) override; 0034 0035 private: 0036 void fetchChannel(const ChannelId &channelId, const QString &name, QMap<ChannelId, ChannelData> &channels); 0037 void fetchProgram(const ChannelId &channelId, 0038 const QDate &date, 0039 unsigned int page, 0040 QVector<ProgramData> &programs, 0041 std::function<void(const QVector<ProgramData> &)> callback = nullptr, 0042 std::function<void(const Error &)> errorCallback = nullptr); 0043 QVector<ProgramData> processChannel(const QString &infoTable, const QString &url, const ChannelId &channelId); 0044 ProgramData processProgram(const QRegularExpressionMatch &programMatch, const QString &url, const ChannelId &channelId, bool isLast); 0045 QString processDescription(const QString &descriptionPage, const QString &url); 0046 bool programExists(const ChannelId &channelId, const QDate &date); 0047 };