Skip to content

Instantly share code, notes, and snippets.

@udonchan
Last active June 30, 2018 13:25
Show Gist options
  • Save udonchan/20ae874032b909b58c99ebc425214e2c to your computer and use it in GitHub Desktop.
Save udonchan/20ae874032b909b58c99ebc425214e2c to your computer and use it in GitHub Desktop.
emoji downloader
const Slack = require ( 'slack-node' );
const http = require ( 'https' );
const fs = require( 'fs' );
const apiToken = "YOUR_SLACK_TEAM_API_TOKEN";
// interval for file download (msec)
const wait = 250;
const get = url => new Promise ( ( resolve, reject ) => {
http.get( url, res => {
const { statusCode } = res;
let error;
if ( statusCode !== 200 ) {
error = new Error('Request Failed.\n' +
`Status Code: ${statusCode}`);
}
if ( error ) {
// consume response data to free up memory
res.resume();
reject( error.message );
return;
}
let data = [ ];
res.on( 'data', chunk => {
data.push( chunk );
} ).on( 'end', ( ) => {
const binary = Buffer.concat( data );
setTimeout( resolve, wait, binary );
} );
} ).on('error', error => {
reject( `Got error: ${error.message}` );
} );
} );
const slack = new Slack( apiToken );
slack.api( "emoji.list", async ( error, response ) => {
if ( error || ! response.emoji ) {
console.log( `Got error: ${error.message}` );
return;
}
for ( let name in response.emoji ){
const url = response.emoji[ name ];
if( url === undefined || url.match(/^alias:/) ){
continue;
}
const binary = await get( url );
const ext = url.match( /\.[^\.]+$/ );
fs.writeFileSync( `images/${name}${ext}`, binary );
console.log( `${name} download done.` );
}
} );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment