Created
March 8, 2014 20:39
-
-
Save lucabelluccini/9438522 to your computer and use it in GitHub Desktop.
A node.js script to perform bulk posting to Blogger. See comments to get your Auth key :D
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
// var gapi = require('googleapis'); // Cannot use it | |
var https = require('https'); | |
// Template for Post content | |
swig = require('swig'), | |
extras = require('swig-extras'); | |
extras.useFilter(swig, 'truncate'); | |
var template = swig.compileFile('ABSOLUTE-PATH-TO-TEMPLATE/template.html'); | |
// Read file containing information | |
var posts = require('./posts.json'); | |
// Access google api documentation at this page: https://developers.google.com/blogger/docs/3.0/reference/posts/insert#try-it | |
// Login using OAuth and try an insert | |
// Copy the Authorization value in the Headers into our HEADER variable | |
var BLOG_ID = 'YOUR-BLOG-ID'; | |
var METHOD = 'POST'; | |
var HEADERS = { 'Content-Type': 'application/json', 'Authorization': 'YOUR-BEARER-KEY', 'X-JavaScript-User-Agent': 'Google APIs Explorer' }; | |
var HOST = 'www.googleapis.com'; | |
// YOUR_API_KEY must not be changed! | |
var ENDPOINT = '/blogger/v3/blogs/' + BLOG_ID + '/posts?fetchBody=false&fetchImages=false&isDraft=false&key={YOUR_API_KEY}' | |
var googleApiRequestForBloggerOptions = { | |
host: HOST, | |
path: ENDPOINT, | |
method: METHOD, | |
headers: HEADERS | |
}; | |
function googleApiRequestForBloggerRequest(googleApiPayload, success) { | |
var googleApiRequestForBlogger = https.request(googleApiRequestForBloggerOptions, function(res) { | |
res.setEncoding('utf-8'); | |
var responseString = ''; | |
res.on('data', function(data) { | |
responseString += data; | |
}); | |
res.on('end', function() { | |
var responseObject = JSON.parse(responseString); | |
success(responseObject); | |
}); | |
}); | |
googleApiRequestForBlogger.write(googleApiPayload); | |
googleApiRequestForBlogger.end(); | |
} | |
/* | |
POST https://www.googleapis.com/blogger/v3/blogs/------------------/posts?fetchBody=false&fetchImages=false&isDraft=false&key={YOUR_API_KEY} | |
Content-Type: application/json | |
Authorization: Bearer ***************************************************** | |
X-JavaScript-User-Agent: Google APIs Explorer | |
{ | |
"labels": [ | |
"asd" | |
], | |
"title": "asd", | |
"content": "asd" | |
} | |
*/ | |
// For each post | |
function postToBlogger() | |
{ | |
var post = posts.shift(); | |
// Render post content | |
var insertPost = { labels: post.tags, title: post.title, content: template(post) }; | |
var payload = JSON.stringify(insertPost); | |
// Post it | |
googleApiRequestForBloggerRequest(payload, function(success) { if(success.kind) { console.log(success); } else { console.log('Will retry...'); console.log(success); posts.push(post); } } ); | |
} | |
setInterval(postToBlogger, 2000); |
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
[ | |
{ | |
"links" : ["http://www.serfdom.io/"], | |
"title" : "Service discovery and orchestration for Go", | |
"tags" : [ "golang", "software architecture" ] | |
}, | |
{ | |
"links" : ["http://longomatch.org/"], | |
"title" : "Free application to record, tag and analyse videos in real-time (targeted for sport/games)", | |
"tags" : [ "software", "video", "analysis" ] | |
}, | |
{ | |
"links" : ["http://beta.slashdot.org/story/199013"], | |
"title" : "Valve Prepping Source 2 Engine For VR", | |
"tags" : [ "vr", "valve", "game engine" ] | |
}, | |
{ | |
"links" : ["http://www.polygon.com/2014/3/5/5458072/portal-board-game-interview-valve-cryptozoic-entertainment"], | |
"title" : "Portal Board Game by Cryptozoic", | |
"tags" : [ "board game", "valve", "portal" ] | |
}, | |
{ | |
"links" : ["http://www.engadget.com/2014/03/04/apple-carplay-ferrari-ff-hands-on/?ncid=rss_truncated", "http://www.theregister.co.uk/2014/03/02/mercedes_plots_fandroid_future/", "http://www.engadget.com/2014/03/02/google-projected-mode-mercedes-benz-leak/?ncid=rss_truncated"], | |
"title" : "Google and Automotive IVI, Apple and CarPlay on Ferrari FF. Who will win?", | |
"tags" : [ "google", "apple", "automotive", "ivi", "carplay", "ferrari" ] | |
}, | |
{ | |
"links" : ["http://www.engadget.com/2014/03/04/skype-for-outlook-com-is-now-available-worldwide/?ncid=rss_truncated"], | |
"title" : "Skype on the browser. Finally.", | |
"tags" : [ "skype", "webapp" ] | |
}, | |
{ | |
"links" : ["http://www.mashery.com/product/io-docs", "http://swagger.wordnik.com/", "http://apiblueprint.org/", "http://raml.org/index.html"], | |
"title" : "Different ways to document/generate or model your REST API", | |
"tags" : [ "rest api", "documentation" ] | |
}, | |
{ | |
"links" : ["http://linuxgizmos.com/qt-embedded-gui-adds-yocto-recipes-hops-up-emulator/", "https://www.yoctoproject.org/"], | |
"title" : "Qt Embedded gains new platforms. Yocto link to provide some context.", | |
"tags" : [ "qt", "embedded", "yocto" ] | |
} | |
] |
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
<p> | |
{% if desc %}{{ desc }}<br/>{% endif %} | |
<ul> | |
{% for link in links %} | |
<li><a href="{{ link }}">{{ link|truncate(60) }}</a></li> | |
{% endfor %} | |
</ul> | |
</p> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment