Created
January 6, 2014 12:26
-
-
Save robertbrook/8282167 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local template = | |
[[ | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset='utf-8'> | |
<title>feeds</title> | |
<meta content='width=device-width, initial-scale=1.0' name='viewport'> | |
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css"> | |
<script src="//code.jquery.com/jquery-1.10.2.min.js"></script> | |
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script> | |
<script src="//cdnjs.cloudflare.com/ajax/libs/URI.js/1.11.2/URI.min.js"></script> | |
</head> | |
<body> | |
<div class="container"> | |
<div class="page-header"> | |
<h1>feeds.<small>webscript.io</small></h1> | |
</div> | |
<div class="row"> | |
<div class="col-md-4"> | |
<h4>ycnews</h4> | |
{{#ycnews}} | |
<p><a title="{{{link}}}" href="{{{link}}}">{{title}}</a> | |
<script> | |
var uri = new URI("{{{link}}}"); | |
document.write(uri.hostname()); | |
</script> | |
{{{summary}}} | |
</p> | |
{{/ycnews}} | |
</div> | |
<div class="col-md-4"> | |
<h4>pinboard</h4> | |
{{#pinboard}} | |
<p><a title="{{{u}}}" href="{{{u}}}">{{d}}</a> | |
<script> | |
var uri = new URI("{{{u}}}"); | |
document.write(uri.hostname()); | |
</script> | |
</p> | |
{{/pinboard}} | |
</div> | |
<div class="col-md-4"> | |
<h4>dave winer</h4> | |
{{#scripting}} | |
<p><a title="{{{link}}}" href="{{{link}}}">{{summary}}</a> | |
<script> | |
var uri = new URI("{{{link}}}"); | |
document.write(uri.hostname()); | |
</script> | |
</p> | |
{{/scripting}} | |
</div> | |
</div> | |
<div class="row"> | |
<div class="col-md-4"> | |
<h4>john gruber</h4> | |
{{#df}} | |
<p><a title="{{{link}}}" href="{{{link}}}">{{title}}</a> | |
<script> | |
var uri = new URI("{{{link}}}"); | |
if (uri.hostname() != "daringfireball.net") | |
{ | |
document.write(uri.hostname()); | |
} | |
</script> | |
</p> | |
{{/df}} | |
</div> | |
<div class="col-md-4"> | |
<h4>marco arment</h4> | |
{{#marco}} | |
<p><a title="{{{link}}}" href="{{{link}}}">{{title}}</a> | |
<script> | |
var uri = new URI("{{{link}}}"); | |
if (uri.hostname() != "www.marco.org") { | |
document.write(uri.hostname()); | |
} | |
</script> | |
</p> | |
{{/marco}} | |
</div> | |
<div class="col-md-4"> | |
<h4>stackexchange</h4> | |
{{#stack}} | |
<p><a title="{{{link}}}" href="{{{link}}}">{{title}}</a></p> | |
{{/stack}} | |
</div> | |
</div> | |
<div class="row"> | |
<div class="col-md-4"> | |
<h4>iplayer films</h4> | |
{{#films}} | |
<h5><a title="{{{link}}}" href="{{{link}}}">{{title}}</a></h5> | |
{{{content}}} | |
{{/films}} | |
</div> | |
<div class="col-md-4"> | |
<h4>arts and letters</h4> | |
{{#al}} | |
<div class="panel panel-default"> | |
<div class="panel-heading"> | |
<h5 class="panel-title">{{title}}</h5> | |
</div> | |
<div class="panel-body"> | |
{{{summary}}} | |
</div> | |
</div> | |
{{/al}} | |
<h4>metafilter</h4> | |
{{#mefi}} | |
<p><a title="{{{link}}}" href="{{{link}}}">{{title}}</a> | |
{{#categories}} | |
· {{.}} | |
{{/categories}} | |
</p> | |
{{/mefi}} | |
</div> | |
<div class="col-md-4"> | |
<h4>parly calendar</h4> | |
{{#parly}} | |
<p><a title="{{{link}}}" href="{{{link}}}">{{{summary}}}</a> | |
</p> | |
{{/parly}} | |
</div> | |
</div> | |
<address class="text-muted"> | |
<strong>Robert Brook</strong> LONDON<br> | |
[email protected] | |
</address> | |
</div> | |
</div> | |
</body> | |
</html> | |
]] | |
local _ = require('robertbrook/webscript-lua-modules/underscore') | |
local inspect = require('robertbrook/webscript-lua-modules/inspect') | |
local feedparser = require 'feedparser' | |
local lustache = require 'lustache' | |
http.request.TIMEOUT = 5 | |
local scripting = http.request {url = 'http://links.scripting.com/rss.xml'} | |
local df = http.request{url='http://daringfireball.net/index.xml'} | |
local pinboard = http.request{url='http://feeds.pinboard.in/json/popular/'} | |
local ycnews = http.request{url='https://news.ycombinator.com/rss'} | |
local marco = http.request{url='http://www.marco.org/rss'} | |
local stack = http.request{url='http://stackexchange.com/feeds/questions'} | |
local films = http.request{url='http://feeds.bbc.co.uk/iplayer/categories/films/tv/list'} | |
local mefi = http.request{url='http://feeds.feedburner.com/Metafilter'} | |
local parly = http.request{url='http://services.parliament.uk/calendar/all.rss'} | |
local al = http.request{url='http://www.aldaily.com/feed'} | |
-- http://getbootstrap.com/css/#grid-options | |
local scripting_parsed = feedparser.parse(scripting.content) | |
local df_parsed = feedparser.parse(df.content) | |
local pinboard_parsed = json.parse(pinboard.content) | |
local ycnews_parsed = feedparser.parse(ycnews.content) | |
local marco_parsed = feedparser.parse(marco.content) | |
local stack_parsed = feedparser.parse(stack.content) | |
local films_parsed = feedparser.parse(films.content) | |
local mefi_parsed = feedparser.parse(mefi.content) | |
local parly_parsed = feedparser.parse(parly.content) | |
local al_parsed = feedparser.parse(al.content) | |
--log(inspect(ycnews_parsed)) | |
local view_model = { | |
df = _.slice(df_parsed.entries, 1, 20), | |
scripting = scripting_parsed.entries, | |
pinboard = _.slice(pinboard_parsed, 1, 20), | |
ycnews = _.slice(ycnews_parsed.entries, 1, 20), | |
marco = _.slice(marco_parsed.entries, 1, 20), | |
stack = _.slice(stack_parsed.entries, 1, 20), | |
films = _.slice(films_parsed.entries, 1, 20), | |
mefi = _.slice(mefi_parsed.entries, 1, 20), | |
parly = _.slice(parly_parsed.entries, 1, 20), | |
al = _.slice(al_parsed.entries, 1, 20) | |
} | |
return lustache:render(template, view_model), | |
{['Content-Type']='text/html; charset=utf-8'} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment