17 #define LOC QString("RSSSite: ")
22 : m_updateFreq(
gCoreContext->GetDurSetting<
std::chrono::hours>(
"rss.updateFreq", 6h))
49 for (
const auto *site : qAsConst(
m_sites))
51 LOG(VB_GENERAL, LOG_INFO,
LOC +
52 QString(
"Updating RSS Feed %1") .arg(site->GetTitle()));
87 for (
auto *video : qAsConst(rss))
114 m_title(
std::move(title)), m_sortTitle(
std::move(sortTitle)),
115 m_image(
std::move(image)), m_type(
type),
116 m_description(
std::move(description)), m_url(
std::move(url)),
117 m_author(
std::move(author)),
118 m_download(download), m_updated(
std::move(updated))
127 QMutexLocker locker(&
m_lock);
133 QMutexLocker locker(&
m_lock);
139 QMutexLocker locker(&
m_lock);
146 connect(
m_manager, &QNetworkAccessManager::finished,
this,
154 const QUrl& oldRedirectUrl)
157 if(!possibleRedirectUrl.isEmpty() && possibleRedirectUrl != oldRedirectUrl)
164 QVariant possibleRedirectUrl =
165 reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
167 QUrl urlRedirectedTo;
168 urlRedirectedTo =
redirectUrl(possibleRedirectUrl.toUrl(),
171 if(!urlRedirectedTo.isEmpty())
173 m_manager->get(QNetworkRequest(urlRedirectedTo));
181 reply->deleteLater();
186 QMutexLocker locker(&
m_lock);
192 QMutexLocker locker(&
m_lock);
195 auto secs = std::chrono::seconds(
m_updated.secsTo(curTime));
196 return duration_cast<std::chrono::minutes>(secs);
201 QMutexLocker locker(&
m_lock);
213 if (!domDoc.setContent(
m_data,
true))
215 LOG(VB_GENERAL, LOG_ERR,
LOC +
216 "Failed to set content from downloaded XML");
222 QString rootName = domDoc.documentElement().nodeName();
223 if (rootName ==
"rss" || rootName ==
"rdf:RDF")
229 for (
const auto *item : qAsConst(items))
232 item->GetTitle(), item->GetSortTitle(),
233 item->GetSubtitle(), item->GetSortSubtitle(),
234 item->GetDescription(), item->GetURL(),
235 item->GetThumbnail(), item->GetMediaURL(),
236 item->GetAuthor(), item->GetDate(),
237 item->GetTime(), item->GetRating(),
238 item->GetFilesize(), item->GetPlayer(),
239 item->GetPlayerArguments(),
240 item->GetDownloader(),
241 item->GetDownloaderArguments(),
245 item->GetDownloadable(),
246 item->GetCountries(),
248 item->GetEpisode(),
false));
252 LOG(VB_GENERAL, LOG_ERR,
LOC +
"Data is not valid RSS-feed");