Challenge Overview
Describe what you want to accomplish.
A previous challenge has implemented a set of REST APIs for handling video assets, including storing them and managing them (create, retrieve, update, delete). This challenge will add some new scrapers to support CNN and US Today videos.
Existing API
The existing Node application and deployment details are in Gitlab, and the URL to the repository can be found in the forum.
CNN:
CNN will be configured against an RSS feed like this:
http://rss.cnn.com/rss/cnn_freevideo.rss
The link will have to be loaded and parsed to grab the thumbnail, duration, and video URL.
The thumbnail can be found in the meta / thumbnail tag like this:
<meta content="http://i2.cdn.turner.com/cnnnext/dam/assets/160611041837-the-voice-christina-grimmie-death-vo-00001617-large-tease.jpg" name="thumbnail">
The video URL can be:
1. Preferably a link to an mp4 file, but it doesn't look like that's an option
2. If an mp4 file can't be parsed, the link to the playback f4m manifest is enough
ABC News:
ABC news will be configured against an RSS URL like this:
http://feeds.abcnews.com/abcnews/mostviewedvideos
The title, publication date, description, and thumbnail can come from the RSS feed. Please use the largest thumbnail available as the thumbnail link in our code.
The duration and video URL can be parsed from the meta tags on the page for each individual video:
<meta itemprop="duration" content="T3M14S" />
<meta itemprop="contentUrl" content="http://ondemand.abcnews.com/playback/abcnews/2016/06/160610_gma_brianross_0708_700.mp4" />
Integration
These additional scrapers must integrate back into the app the same way the other scrapers work. They should be configured using the admin pages to add and edit scrapers, and they should work using the src/feedscript.js --scraperName=... flow that the other scrapers use. Basically, all the admin should have to do is add the scraper in the admin panel and run it. The admin shouldn't have to know what exactly the scraper is doing or have to configure each one with all sorts of custom information.
Heroku deploy
Make sure the Heroku deployment information is up-to-date and that you keep the package.json up to date as well. Don't expect the deployment to be anything other than "npm install" / "npm start" locally and "git push heroku master" for Heroku deployment.
Existing API
The existing Node application and deployment details are in Gitlab, and the URL to the repository can be found in the forum.
CNN:
CNN will be configured against an RSS feed like this:
http://rss.cnn.com/rss/cnn_freevideo.rss
The link will have to be loaded and parsed to grab the thumbnail, duration, and video URL.
The thumbnail can be found in the meta / thumbnail tag like this:
<meta content="http://i2.cdn.turner.com/cnnnext/dam/assets/160611041837-the-voice-christina-grimmie-death-vo-00001617-large-tease.jpg" name="thumbnail">
The video URL can be:
1. Preferably a link to an mp4 file, but it doesn't look like that's an option
2. If an mp4 file can't be parsed, the link to the playback f4m manifest is enough
ABC News:
ABC news will be configured against an RSS URL like this:
http://feeds.abcnews.com/abcnews/mostviewedvideos
The title, publication date, description, and thumbnail can come from the RSS feed. Please use the largest thumbnail available as the thumbnail link in our code.
The duration and video URL can be parsed from the meta tags on the page for each individual video:
<meta itemprop="duration" content="T3M14S" />
<meta itemprop="contentUrl" content="http://ondemand.abcnews.com/playback/abcnews/2016/06/160610_gma_brianross_0708_700.mp4" />
Integration
These additional scrapers must integrate back into the app the same way the other scrapers work. They should be configured using the admin pages to add and edit scrapers, and they should work using the src/feedscript.js --scraperName=... flow that the other scrapers use. Basically, all the admin should have to do is add the scraper in the admin panel and run it. The admin shouldn't have to know what exactly the scraper is doing or have to configure each one with all sorts of custom information.
Heroku deploy
Make sure the Heroku deployment information is up-to-date and that you keep the package.json up to date as well. Don't expect the deployment to be anything other than "npm install" / "npm start" locally and "git push heroku master" for Heroku deployment.
Submission format
Your submission should be provided as a Git patch file against commit hash 344a60a8a9e9428b2a0ff5300a0853d4f7eb43a3. MAKE SURE TO TEST YOUR PATCH FILE!