Skip to content

Instantly share code, notes, and snippets.

@albertstartup
Created January 2, 2016 05:57
Show Gist options
  • Save albertstartup/558b3afc142938b30c40 to your computer and use it in GitHub Desktop.
Save albertstartup/558b3afc142938b30c40 to your computer and use it in GitHub Desktop.
append to a tumblr post from the command line
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