Skip to content

Commit

Permalink
added support for delicious, rss/atom feeds
Browse files Browse the repository at this point in the history
  • Loading branch information
airportyh committed Jun 6, 2010
1 parent 0e52da5 commit e374782
Show file tree
Hide file tree
Showing 8 changed files with 92 additions and 9 deletions.
12 changes: 12 additions & 0 deletions delicious.html
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<title>Delicious</title>
<script src="jsonp.js"></script>
<script src="wordyclouds.js"></script>
<script src="delicious.js"></script>
</head>
<body>
<h1>Delicious</h1>
</body>
</html>
4 changes: 4 additions & 0 deletions delicious.js
@@ -0,0 +1,4 @@
function loadDeliciousTags(){
WordyClouds.loadFromDelicious('airportyh')
}
window.onload = loadDeliciousTags
12 changes: 12 additions & 0 deletions feeds.html
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<title>Feeds</title>
<script src="jsonp.js"></script>
<script src="wordyclouds.js"></script>
<script src="feeds.js"></script>
</head>
<body>
<h1>Feeds</h1>
</body>
</html>
6 changes: 6 additions & 0 deletions feeds.js
@@ -0,0 +1,6 @@
function loadFeed(){
var url = 'http://tobyho.com/user/airportyh/rss.xml'
var numEntries = 10
WordyClouds.loadFromFeed(url, numEntries)
}
window.onload = loadFeed
3 changes: 1 addition & 2 deletions index.html
Expand Up @@ -2,10 +2,9 @@
<html> <html>
<head> <head>
<title>WordyCloud</title> <title>WordyCloud</title>
<script src="ecma5array.js"></script>
<script src="wordyclouds.js"></script> <script src="wordyclouds.js"></script>
</head> </head>
<body onload="main()"> <body onload="WordyClouds.runBookmarklet()">
I've followed engadget's live blog, seen the keynote video, listened to Tom and Molly talk about it, even read others' opinions on engadget, gdgt and twitter, etc etc. I guess you could say I am pretty excited. I've followed engadget's live blog, seen the keynote video, listened to Tom and Molly talk about it, even read others' opinions on engadget, gdgt and twitter, etc etc. I guess you could say I am pretty excited.


The tech savy(engadget, gdgt, BOL, etc) are in general underwhelmed or disappointed. Below are some of the complaints I have heard: The tech savy(engadget, gdgt, BOL, etc) are in general underwhelmed or disappointed. Below are some of the complaints I have heard:
Expand Down
15 changes: 15 additions & 0 deletions jsonp.js
@@ -0,0 +1,15 @@
var JSONP = {}
JSONP.get = function(url, callback){
var scriptTag = document.createElement('script')
var callbackName = '_' + new Date().getTime()
window[callbackName] = function(){
callback.apply(null, arguments)
delete window[callbackName]
}
if (url.indexOf('?') != -1)
url += '&callback=' + callbackName
else
url += '?callback=' + callbackName
scriptTag.src = url
document.head.appendChild(scriptTag)
}
2 changes: 1 addition & 1 deletion marklet.js
@@ -1 +1 @@
main() WordyClouds.runBookmarklet()
47 changes: 41 additions & 6 deletions wordyclouds.js
Expand Up @@ -111,6 +111,17 @@ function boxesOverlap(ax, ay, aw, ah, bx, by, bw, bh){
return true return true
} }


function stripHTML(oldString) {
var data = []
var inTag = false;
for(var i = 0; i < oldString.length; i++) {
var chr = oldString.charAt(i)
if (chr == '<') inTag = true;
if (chr == '>') inTag = false;
if(!inTag) data.push(chr)
}
return data.join('');
}


/* ========== Layouts ============================ */ /* ========== Layouts ============================ */


Expand Down Expand Up @@ -155,6 +166,7 @@ Layouts.randomAvoid = function RandomAvoidLayout(freq, canvas, colors, fontName)
//words = words.slice(0, 200) //words = words.slice(0, 200)
words.forEach(function(word){ words.forEach(function(word){
var textHeight = freq[word] * sizeScale var textHeight = freq[word] * sizeScale
if (textHeight < 5) return
//console.log('word[' + word + '].height = ' + textHeight) //console.log('word[' + word + '].height = ' + textHeight)
context.font = textHeight + 'px ' + fontName context.font = textHeight + 'px ' + fontName
var textWidth = context.measureText(word).width var textWidth = context.measureText(word).width
Expand Down Expand Up @@ -208,18 +220,20 @@ Layouts.randomAvoid = function RandomAvoidLayout(freq, canvas, colors, fontName)
}else }else
context.fillText(word, x, y) context.fillText(word, x, y)


if (vertical) context.rotate(0)
//console.log('box[' + word + ']: ' + box) //console.log('box[' + word + ']: ' + box)
}) })
} }


/* =========== Main ============================== */ /* =========== main entry point ========================= */


function main(){ WordyClouds = {}
var layout = Layouts.randomAvoid WordyClouds.loadFromText = function(text){
var text = getText(document.body, ['script'])
var commonWords = CommonWords.english var commonWords = CommonWords.english
var freq = wordSummary(text, commonWords) var freq = wordSummary(text, commonWords)
this.loadFromWordFreq(freq)
}
WordyClouds.loadFromWordFreq = function(freq){
var layout = Layouts.randomAvoid
var palate = ColorPalates.autumn var palate = ColorPalates.autumn
var fontName = getComputedStyle(document.body)['font-family'] var fontName = getComputedStyle(document.body)['font-family']
var canvas = document.createElement('canvas') var canvas = document.createElement('canvas')
Expand All @@ -232,4 +246,25 @@ function main(){
document.body.style.overflow = 'hidden' document.body.style.overflow = 'hidden'
layout(freq, canvas, palate, fontName) layout(freq, canvas, palate, fontName)
} }

WordyClouds.loadFromDelicious = function(username){
JSONP.get('http://feeds.delicious.com/feeds/json/tags/' + username, function(data){
WordyClouds.loadFromWordFreq(data)
})
}
WordyClouds.loadFromFeed = function(url, numEntries){
numEntries = numEntries || 10
var rand = new Date().getTime()
JSONP.get('http://www.google.com/uds/Gfeeds?context=1&num=' + numEntries + '&hl=en&output=json&q=' + url + '&v=1.0&nocache=' + rand, function(v, data){
var entries = data.feed.entries
var text = ''
entries.forEach(function(entry){
text += entry.title + '\n'
text += stripHTML(entry.content) + '\n'
})
WordyClouds.loadFromText(text)
})
}
WordyClouds.runBookmarklet = function(){
var text = getText(document.body, ['script'])
this.loadFromText(text)
}

0 comments on commit e374782

Please sign in to comment.