Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Node.js module for basic Twitter update_with_media support. You will need to install 'request' packages from npm like so: npm install request
fs = require('fs')
path = require('path')
request = require('request')
class twitter_update_with_media
constructor: (@auth_settings) ->
@api_url = 'https://api.twitter.com/1.1/statuses/update_with_media.json'
post: (status, file_path, callback) ->
r = request.post(@api_url, oauth:@auth_settings, callback)
form = r.form()
form.append('status', status)
form.append('media[]', fs.createReadStream(path.normalize(file_path)))
module.exports = twitter_update_with_media
// Generated by CoffeeScript 1.6.3
(function() {
var fs, path, request, twitter_update_with_media;
fs = require('fs');
path = require('path');
request = require('request');
twitter_update_with_media = (function() {
function twitter_update_with_media(auth_settings) {
this.auth_settings = auth_settings;
this.api_url = 'https://api.twitter.com/1.1/statuses/update_with_media.json';
}
twitter_update_with_media.prototype.post = function(status, file_path, callback) {
var form, r;
r = request.post(this.api_url, {
oauth: this.auth_settings
}, callback);
form = r.form();
form.append('status', status);
return form.append('media[]', fs.createReadStream(path.normalize(file_path)));
};
return twitter_update_with_media;
})();
module.exports = twitter_update_with_media;
}).call(this);
twitter_update_with_media = require 'twitter_update_with_media'
tuwm = new twitter_update_with_media({
consumer_key: '...'
consumer_secret: '...'
token: '...'
token_secret: '...'
})
tuwm.post('This is a test', '/path_to_image.png', (err, response) ->
console.log(err) if err
console.log(response)
)
var twitter_update_with_media = require('twitter_update_with_media');
var tuwm = new twitter_update_with_media({
consumer_key: '...',
consumer_secret: '...',
token: '...',
token_secret: '...'
});
tuwm.post('This is a test', '/path_to_image.png', function(err, response) {
if (err) {
console.log(err);
}
console.log(response);
});
@chinna-muhil

It worked for me. BIG thanks much to you!!! :-)

@neeravmakwana

Hi, I installed request module as suggested by you. Then I created the following 2 .js files in the folder C:\node_modules\request:

usage.js
twitter_update_with_media.js
I updated the consumer key, secret etc. in usage.js and then ran usage.js from command prompt. I am getting the following error:

C:>node node_modules\request\usage.js

module.js:340
throw err;
^
Error: Cannot find module 'twitter_update_with_media'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object. (C:\node_modules\request\usage.js:1:95)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)

Please note that I have created some basic bots which search for tweets and then retweet/reply and have these working satisfactorily (using twit module). However, I want to post media (use update with media) and couldn't figure out how to do it. So I installed request module, but can't seem to figure out how it works too.

Help will be appreciated.

Thanks.

@michaelryancaputo

Thank you for sharing this.

@hawkfalcon

This is now deprecated for media/upload -> statuses/update (two separate POSTs)
Could you update this module for that?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment