Created
January 2, 2016 05:57
-
-
Save albertstartup/558b3afc142938b30c40 to your computer and use it in GitHub Desktop.
append to a tumblr post from the command line
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 Q = require('q'); | |
var tumblr = require('tumblr.js'); | |
var fs = require('fs'); | |
var _ = require('underscore'); | |
// Customize these. Ill give instructions soon. Or ping me for help. | |
var tumblrClient = tumblr.createClient({ | |
consumer_key: '', | |
consumer_secret: '', | |
token: '', | |
token_secret: '' | |
}); | |
var blogName = ''; | |
function createTodaysHourlyPost(update) { | |
var deferred = Q.defer(); | |
var localeTimeString = (new Date(Date.now())).toLocaleTimeString(); | |
var body = ('<p>' + localeTimeString + ' - ' + update + '</p>').toLowerCase(); | |
tumblrClient.text(blogName, { title: 'Hourly', body: body }, function (error, response) { | |
if (error) deferred.reject(new Error(error)); | |
else deferred.resolve(response.id); | |
}); | |
return deferred.promise; | |
} | |
function appendToTodaysHourlyPost(post, update) { | |
var deferred = Q.defer() | |
var localeTimeString = (new Date(Date.now())).toLocaleTimeString(); | |
var newBody = (post.body + '<p>' + localeTimeString + ' - ' + update + '</p>').toLowerCase(); | |
tumblrClient.edit(blogName, { id: post.id, body: newBody }, function(error, response) { | |
if (error) deferred.reject(new Error(error)); | |
else deferred.resolve(response) | |
}); | |
return deferred.promise; | |
} | |
function selectTodaysHourlyPostFromPosts(posts) { | |
var todayLocaleDateString = (new Date(Date.now())).toLocaleDateString(); | |
var hourlyPost = _.find(posts, function(post) { | |
var postDate = new Date(post.date); | |
if (post.title == "Hourly" && postDate.toLocaleDateString() == todayLocaleDateString) { | |
return true; | |
} | |
}); | |
if (hourlyPost) return hourlyPost; | |
else throw new Error("Todays hourly post does not exist."); | |
} | |
function getPosts() { | |
var deferred = Q.defer() | |
tumblrClient.posts(blogName, { type: 'text' }, function (error, response) { | |
if (error) deferred.reject(new Error(error)); | |
else deferred.resolve(response.posts); | |
}); | |
return deferred.promise | |
} | |
function getTodaysHourlyPost() { | |
return getPosts() | |
.then(function(posts) { | |
return selectTodaysHourlyPostFromPosts(posts); | |
}) | |
.then(function(post) { | |
return { id: post.id, body: post.body }; | |
}, function(error) { | |
throw new Error(error); | |
}); | |
} | |
function update(update) { | |
return getTodaysHourlyPost().then(function(post) { | |
return appendToTodaysHourlyPost(post, update) | |
}, function(error) { | |
return createTodaysHourlyPost(update); | |
}); | |
} | |
update(process.argv[2].toString()).then(function() { | |
console.log('Winning!') | |
}, function(error) { | |
console.log('Oops! This happened:\n', error) | |
}).done(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment