Browse Source

Newsroom will be more of a "browser" when calling Newsmax

develop
Rob Colbert 4 months ago
parent
commit
d1b4fdd2c6
  1. 27
      app/services/feed.js
  2. 19
      app/views/newsroom/kiosk/home.pug
  3. 32
      app/views/newsroom/layouts/kiosk.pug
  4. 14
      app/workers/newsroom.js

27
app/services/feed.js

@ -195,15 +195,26 @@ class FeedService extends SiteService {
}
async load (url) {
const options = { };
const fetchOptions = {
headers: {
'user-agent': this.userAgent.toString(),
'Accept-Language': 'en-US',
},
const headers = {
'User-Agent': `DtpNewsroom/${this.dtp.pkg.version} (https://sites.digitaltelepresence.com/)`,
'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
'Accept-Encoding': "gzip, deflate, br",
'Accept-Language': "en-US,en;q=0.9",
};
const response = await FeedExtractor.extract(url, options, fetchOptions);
return response;
if (url.includes('newsmax.com')) {
headers.Referrer = "https://www.newsmax.com/rss/";
headers['User-Agent'] = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";
}
this.log.debug('fetching RSS feed content', { headers });
const response = await fetch(url, { method: 'GET', headers });
if (!response.ok) {
throw new SiteError(response.status, response.statusText);
}
const xml = await response.text();
return FeedExtractor.extractFromXml(xml);
}
async createEntry (feed, entryDefinition) {

19
app/views/newsroom/kiosk/home.pug

@ -10,11 +10,26 @@ block kiosk-content
h1.uk-margin-remove #{site.name} Unified Feed
.uk-text-small A blend of articles from the Unified feed.
.uk-width-auto
- var NOW = new Date();
label.uk-form-label.sr-only Today's Date
.uk-text-bold= moment().format('MMMM D, YYYY')
.uk-text-right
#date-display.uk-text-bold= moment(NOW).format('MMMM D, YYYY')
#time-display.uk-text-small= moment(NOW).format('h:mm:ss a')
.feed-content.uk-margin-medium
+renderKioskFeedCarousel(entries.entries)
if Array.isArray(samples) && (samples.length > 0)
+renderFeedEntryGrid(samples)
+renderFeedEntryGrid(samples)
block viewjs
script.
(( ) => {
const dateDisplay = document.getElementById('date-display');
const timeDisplay = document.getElementById('time-display');
setInterval(( ) => {
const NOW = new Date();
dateDisplay.textContent = moment(NOW).format('MMMM D, YYYY');
timeDisplay.textContent = moment().format('h:mm:ss a');
}, 500);
})();

32
app/views/newsroom/layouts/kiosk.pug

@ -47,17 +47,21 @@ block content
div(class="uk-width-1-1 uk-width-1-5@s")
.kiosk-sidebar
if entries && Array.isArray(entries.entries) && (entries.entries.length > 0)
ul.uk-list.sidebar-feed-list
each entry of entries.entries
li
.feed-entry
a(href=`/newsroom/kiosk/${entry.feed._id}/article/${entry._id}`)
div(uk-grid).uk-grid-small
.uk-width-expand
.uk-text-bold.uk-text-truncate= entry.title
a(href=`/newsroom/kiosk/${entry.feed._id}`)
.uk-flex.uk-flex-middle
div(class="uk-visible@s").uk-width-auto
img(src= entry.feed.favicons[0]).feed-icon
.uk-width-expand
.uk-text-truncate= entry.feed.title
.uk-card.uk-card-secondary.uk-card-small
.uk-card-header.uk-text-center
h4.uk-card-title Latest Articles
.uk-card-body
ul.uk-list.sidebar-feed-list
each entry of entries.entries
li
.feed-entry
a(href=`/newsroom/kiosk/${entry.feed._id}/article/${entry._id}`)
div(uk-grid).uk-grid-small
.uk-width-expand
.uk-text-bold.uk-text-truncate= entry.title
a(href=`/newsroom/kiosk/${entry.feed._id}`)
.uk-flex.uk-flex-middle
div(class="uk-visible@s").uk-width-auto
img(src= entry.feed.favicons[0]).feed-icon
.uk-width-expand
.uk-text-truncate= entry.feed.title

14
app/workers/newsroom.js

@ -11,9 +11,6 @@ require('dotenv').config({ path: path.resolve(__dirname, '..', '..', '.env') });
const mongoose = require('mongoose');
const moment = require('moment');
const FeedExtractor = require('@extractus/feed-extractor');
const UserAgent = require('user-agents');
const {
SiteAsync,
SiteLog,
@ -36,7 +33,6 @@ class NewsroomWorker extends SiteWorker {
constructor (dtp) {
super(dtp, dtp.config.component);
this.userAgent = new UserAgent();
}
async start ( ) {
@ -69,15 +65,7 @@ class NewsroomWorker extends SiteWorker {
});
await feedService.updateFavicon(feed);
const options = { };
const fetchOptions = {
headers: {
'user-agent': this.userAgent.toString(),
'Accept-Language': 'en-US',
},
};
const response = await FeedExtractor.extract(feed.url, options, fetchOptions);
const response = await feedService.load(feed.url);
await SiteAsync.each(response.entries, async (entry) => {
await Feed.updateOne({ _id: feed._id }, { $set: { published: feed.published || NOW }});

Loading…
Cancel
Save