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 };