Skip to content

Instantly share code, notes, and snippets.

@robertbrook
Created January 6, 2014 12:26
Show Gist options
  • Save robertbrook/8282167 to your computer and use it in GitHub Desktop.
Save robertbrook/8282167 to your computer and use it in GitHub Desktop.
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}}
&middot; {{.}}
{{/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