MythTV master
rssparse.h
Go to the documentation of this file.
1#ifndef RSSPARSE_H
2#define RSSPARSE_H
3
4#include <vector>
5
6#include <QString>
7#include <QStringList>
8#include <QList>
9#include <QObject>
10#include <QDomDocument>
11#include <QDateTime>
12#include <QPair>
13#include <QMap>
14#include <QVariant>
15#include <sys/types.h>
16
19
20enum ArticleType : std::uint8_t {
25};
26
30{
31 QString URL;
32 QString Type;
33 qint64 Length;
34 QString Lang;
35};
36
38{
39 QString URL;
40 int Width;
41 int Height;
42 QString Time;
43};
44
46{
47 QString Role;
48 QString Who;
49};
50
52{
53 QString Type;
54 QString Comment;
55};
56
58{
59 QString Type;
60 QString Link;
61};
62
64{
65 QString Title;
66 QString Description;
67 QString StartTime;
68 QString EndTime;
69};
70
72{
73 QString URL;
74 qint64 Size {0};
75 QString Type;
76 QString Medium;
77 bool IsDefault {false};
78 QString Expression;
79 int Bitrate {0};
80 double Framerate {0.0};
81 double SamplingRate {0.0};
82 int Channels {0};
83 int Duration {0};
84 int Width {0};
85 int Height {0};
86 QString Lang;
87 int Group {0};
88 QString Rating;
89 QString RatingScheme;
90 QString Title;
91 QString Description;
92 QString Keywords;
93 QString CopyrightURL;
96 int RatingCount {0};
97 int RatingMin {0};
98 int RatingMax {0};
99 int Views {0};
100 int Favs {0};
101 QString Tags;
102 QList<MRSSThumbnail> Thumbnails;
103 QList<MRSSCredit> Credits;
104 QList<MRSSComment> Comments;
105 QList<MRSSPeerLink> PeerLinks;
106 QList<MRSSScene> Scenes;
107};
108
110{
111
112 public:
113
114 using resultList = QList<ResultItem *>;
115 using List = std::vector<ResultItem>;
116
117 ResultItem(QString title, QString sortTitle,
118 QString subtitle, QString sortSubtitle,
119 QString desc, QString URL,
120 QString thumbnail, QString mediaURL,
121 QString author, const QDateTime& date, const QString& time,
122 const QString& rating, off_t filesize,
123 const QString& player, const QStringList& playerargs,
124 const QString& download, const QStringList& downloadargs,
125 uint width, uint height, const QString& language,
126 bool downloadable, const QStringList& countries,
127 uint season, uint episode, bool customhtml);
128 ResultItem() = default;
129 ~ResultItem() = default;
130
131 void ensureSortFields(void);
132 void toMap(InfoMap &metadataMap);
133
134 const QString& GetTitle() const { return m_title; }
135 const QString& GetSortTitle() const { return m_sorttitle; }
136 const QString& GetSubtitle() const { return m_subtitle; }
137 const QString& GetSortSubtitle() const { return m_sortsubtitle; }
138 const QString& GetDescription() const { return m_desc; }
139 const QString& GetURL() const { return m_url; }
140 const QString& GetThumbnail() const { return m_thumbnail; }
141 const QString& GetMediaURL() const { return m_mediaURL; }
142 const QString& GetAuthor() const { return m_author; }
143 const QDateTime& GetDate() const { return m_date; }
144 const QString& GetTime() const { return m_time; }
145 const QString& GetRating() const { return m_rating; }
146 const off_t& GetFilesize() const { return m_filesize; }
147 const QString& GetPlayer() const { return m_player; }
148 const QStringList& GetPlayerArguments() const { return m_playerargs; }
149 const QString& GetDownloader() const { return m_download; }
150 const QStringList& GetDownloaderArguments() const { return m_downloadargs; }
151 const uint& GetWidth() const { return m_width; }
152 const uint& GetHeight() const { return m_height; }
153 const QString& GetLanguage() const { return m_language; }
154 const bool& GetDownloadable() const { return m_downloadable; }
155 const QStringList& GetCountries() const { return m_countries; }
156 const uint& GetSeason() const { return m_season; }
157 const uint& GetEpisode() const { return m_episode; }
158 const bool& GetCustomHTML() const { return m_customhtml; }
159
160 private:
161 QString m_title;
162 QString m_sorttitle;
163 QString m_subtitle;
165 QString m_desc;
166 QString m_url;
167 QString m_thumbnail;
168 QString m_mediaURL;
169 QString m_author;
170 QDateTime m_date;
171 QString m_time;
172 QString m_rating;
173 off_t m_filesize {0};
174 QString m_player;
175 QStringList m_playerargs;
176 QString m_download;
177 QStringList m_downloadargs;
178 uint m_width {0};
179 uint m_height {0};
180 QString m_language;
181 bool m_downloadable {false};
182 QStringList m_countries;
183 uint m_season {0};
184 uint m_episode {0};
185 bool m_customhtml {false};
186};
187
188class MBASE_PUBLIC Parse : public QObject
189{
190 Q_OBJECT
191 friend class MRSSParser;
192
193 public:
194 Parse() = default;
195 ~Parse() override = default;
196
197 static ResultItem::resultList parseRSS(const QDomDocument& domDoc);
198 static ResultItem* ParseItem(const QDomElement& item) ;
199
200 static QString GetLink(const QDomElement& parent);
201 static QString GetAuthor(const QDomElement& parent);
202 static QString GetCommentsRSS(const QDomElement& parent);
203 static QString GetCommentsLink(const QDomElement& parent);
204 static QDateTime GetDCDateTime(const QDomElement& parent);
205 static QDateTime FromRFC3339(const QString& t);
206 static QDateTime RFC822TimeToQDateTime (const QString& parent);
207 QStringList GetAllCategories (const QDomElement&) const;
208 static QList<MRSSEntry> GetMediaRSS (const QDomElement& item);
209 static QList<Enclosure> GetEnclosures(const QDomElement& entry);
210 static QString UnescapeHTML (const QString& escaped);
211
212 private:
213 static QMap<QString, int> m_timezoneOffsets;
214
215 protected:
216 static const QString kDC;
217 static const QString kWFW;
218 static const QString kAtom;
219 static const QString kRDF;
220 static const QString kSlash;
221 static const QString kEnc;
222 static const QString kITunes;
223 static const QString kGeoRSSSimple;
224 static const QString kGeoRSSW3;
225 static const QString kMediaRSS;
226 static const QString kMythRSS;
227};
228
230
231#endif // RSSPARSE_H
static const QString kAtom
Definition: rssparse.h:218
static const QString kITunes
Definition: rssparse.h:222
static const QString kGeoRSSW3
Definition: rssparse.h:224
static const QString kDC
Definition: rssparse.h:216
QStringList GetAllCategories(const QDomElement &) const
static const QString kGeoRSSSimple
Definition: rssparse.h:223
static const QString kWFW
Definition: rssparse.h:217
static const QString kSlash
Definition: rssparse.h:220
static const QString kMediaRSS
Definition: rssparse.h:225
static QMap< QString, int > m_timezoneOffsets
Definition: rssparse.h:213
static const QString kRDF
Definition: rssparse.h:219
Parse()=default
static const QString kMythRSS
Definition: rssparse.h:226
~Parse() override=default
static const QString kEnc
Definition: rssparse.h:221
ResultItem()=default
const QString & GetDownloader() const
Definition: rssparse.h:149
const QString & GetPlayer() const
Definition: rssparse.h:147
QString m_language
Definition: rssparse.h:180
QString m_title
Definition: rssparse.h:161
const bool & GetCustomHTML() const
Definition: rssparse.h:158
QStringList m_playerargs
Definition: rssparse.h:175
QStringList m_downloadargs
Definition: rssparse.h:177
QString m_thumbnail
Definition: rssparse.h:167
const uint & GetWidth() const
Definition: rssparse.h:151
QString m_sortsubtitle
Definition: rssparse.h:164
const QString & GetURL() const
Definition: rssparse.h:139
const QString & GetThumbnail() const
Definition: rssparse.h:140
const QString & GetDescription() const
Definition: rssparse.h:138
const QString & GetAuthor() const
Definition: rssparse.h:142
std::vector< ResultItem > List
Definition: rssparse.h:115
const QString & GetMediaURL() const
Definition: rssparse.h:141
const QString & GetLanguage() const
Definition: rssparse.h:153
const uint & GetHeight() const
Definition: rssparse.h:152
QString m_mediaURL
Definition: rssparse.h:168
~ResultItem()=default
const QDateTime & GetDate() const
Definition: rssparse.h:143
const QStringList & GetPlayerArguments() const
Definition: rssparse.h:148
const QString & GetSortSubtitle() const
Definition: rssparse.h:137
const QString & GetTime() const
Definition: rssparse.h:144
const QString & GetRating() const
Definition: rssparse.h:145
const QStringList & GetCountries() const
Definition: rssparse.h:155
const uint & GetEpisode() const
Definition: rssparse.h:157
QString m_desc
Definition: rssparse.h:165
QString m_rating
Definition: rssparse.h:172
const QString & GetSortTitle() const
Definition: rssparse.h:135
QString m_time
Definition: rssparse.h:171
QStringList m_countries
Definition: rssparse.h:182
QString m_url
Definition: rssparse.h:166
const QString & GetTitle() const
Definition: rssparse.h:134
const QStringList & GetDownloaderArguments() const
Definition: rssparse.h:150
QDateTime m_date
Definition: rssparse.h:170
const off_t & GetFilesize() const
Definition: rssparse.h:146
const bool & GetDownloadable() const
Definition: rssparse.h:154
QString m_subtitle
Definition: rssparse.h:163
QString m_player
Definition: rssparse.h:174
QString m_author
Definition: rssparse.h:169
const QString & GetSubtitle() const
Definition: rssparse.h:136
const uint & GetSeason() const
Definition: rssparse.h:156
QString m_sorttitle
Definition: rssparse.h:162
QList< ResultItem * > resultList
Definition: rssparse.h:114
QString m_download
Definition: rssparse.h:176
unsigned int uint
Definition: freesurround.h:24
QDateTime RFC822TimeToQDateTime(const QString &t)
#define MBASE_PUBLIC
Definition: mythbaseexp.h:15
Q_DECLARE_METATYPE(std::chrono::seconds)
#define off_t
QHash< QString, QString > InfoMap
Definition: mythtypes.h:15
def rating(profile, smoonURL, gate)
Definition: scan.py:36
ArticleType
Definition: rssparse.h:20
@ AUDIO_FILE
Definition: rssparse.h:23
@ VIDEO_FILE
Definition: rssparse.h:21
@ AUDIO_PODCAST
Definition: rssparse.h:24
@ VIDEO_PODCAST
Definition: rssparse.h:22
Describes an enclosure associated with an item.
Definition: rssparse.h:30
QString Type
Definition: rssparse.h:32
QString Lang
Definition: rssparse.h:34
QString URL
Definition: rssparse.h:31
qint64 Length
Definition: rssparse.h:33
QString Type
Definition: rssparse.h:53
QString Comment
Definition: rssparse.h:54
QString Who
Definition: rssparse.h:48
QString Role
Definition: rssparse.h:47
int Channels
Definition: rssparse.h:82
int RatingAverage
Definition: rssparse.h:95
double Framerate
Definition: rssparse.h:80
QString Medium
Definition: rssparse.h:76
QString Description
Definition: rssparse.h:91
QString Title
Definition: rssparse.h:90
int Bitrate
Definition: rssparse.h:79
int RatingCount
Definition: rssparse.h:96
QString CopyrightText
Definition: rssparse.h:94
QList< MRSSThumbnail > Thumbnails
Definition: rssparse.h:102
QString Expression
Definition: rssparse.h:78
QList< MRSSPeerLink > PeerLinks
Definition: rssparse.h:105
QString RatingScheme
Definition: rssparse.h:89
QList< MRSSComment > Comments
Definition: rssparse.h:104
int Group
Definition: rssparse.h:87
QString Tags
Definition: rssparse.h:101
int Favs
Definition: rssparse.h:100
QList< MRSSScene > Scenes
Definition: rssparse.h:106
int Width
Definition: rssparse.h:84
QList< MRSSCredit > Credits
Definition: rssparse.h:103
int Height
Definition: rssparse.h:85
QString CopyrightURL
Definition: rssparse.h:93
bool IsDefault
Definition: rssparse.h:77
int RatingMin
Definition: rssparse.h:97
QString URL
Definition: rssparse.h:73
int Views
Definition: rssparse.h:99
double SamplingRate
Definition: rssparse.h:81
int RatingMax
Definition: rssparse.h:98
QString Type
Definition: rssparse.h:75
int Duration
Definition: rssparse.h:83
qint64 Size
Definition: rssparse.h:74
QString Rating
Definition: rssparse.h:88
QString Keywords
Definition: rssparse.h:92
QString Lang
Definition: rssparse.h:86
QString Title
Definition: rssparse.h:65
QString StartTime
Definition: rssparse.h:67
QString Description
Definition: rssparse.h:66
QString EndTime
Definition: rssparse.h:68
QString Time
Definition: rssparse.h:42
QString URL
Definition: rssparse.h:39