This commit is contained in:
reality 2013-05-17 16:33:04 +00:00
commit ffec54ffe2
8 changed files with 140 additions and 68 deletions

View File

@ -5,8 +5,8 @@
var _ = require('underscore')._; var _ = require('underscore')._;
var api = function(dbot) { var api = function(dbot) {
this.pages = { this.onLoad = function() {
'/api': function(req, res) { dbot.modules.web.app.get('/api', function(req, res) {
var externalApi = {}; var externalApi = {};
_.each(dbot.api, function(moduleApi, moduleName) { _.each(dbot.api, function(moduleApi, moduleName) {
externalApi[moduleName] = {}; externalApi[moduleName] = {};
@ -17,11 +17,9 @@ var api = function(dbot) {
}); });
}); });
res.render('api', { 'name': dbot.config.name, 'api': externalApi }); res.render('api/api', { 'name': dbot.config.name, 'api': externalApi });
} });
};
this.onLoad = function() {
dbot.modules.web.app.get('/api/:module/:method', function(req, res) { dbot.modules.web.app.get('/api/:module/:method', function(req, res) {
var module = req.params.module, var module = req.params.module,
method = req.params.method, method = req.params.method,

View File

@ -4,7 +4,8 @@
*/ */
var _ = require('underscore')._, var _ = require('underscore')._,
request = require('request'); request = require('request'),
crypto = require('crypto');
var imgur = function(dbot) { var imgur = function(dbot) {
this.internalAPI = { this.internalAPI = {
@ -49,7 +50,8 @@ var imgur = function(dbot) {
// 492 is body.length of a removed image // 492 is body.length of a removed image
if(!error && response.statusCode == 200 && body.length != 492) { if(!error && response.statusCode == 200 && body.length != 492) {
dbot.db.imgur.totalImages += 1; dbot.db.imgur.totalImages += 1;
callback(testUrl, testSlug); var hash = crypto.createHash('md5').update(body).digest("hex");
callback(testUrl, testSlug,hash);
} else { } else {
this.api.getRandomImage(callback); this.api.getRandomImage(callback);
} }

12
modules/udp/README.md Normal file
View File

@ -0,0 +1,12 @@
# UDP
Prints UDP packets; designed for a [MediaWiki installation](https://www.mediawiki.org/wiki/Manual:$wgRC2UDPAddress).
# Configuration
## server
The server name, as configured in the main ``config.json``, that depressionbot will announce packets on.
## channel
The channel name, that depressionbot will announce packets on.
## port
The port depressionbot will listen for UDP packets on.
## address
The address depressionbot will allow UDP packets from. UDP packets sent from a different address will be ignored.

6
modules/udp/config.json Normal file
View File

@ -0,0 +1,6 @@
{
"port":14628,
"address": "127.0.0.1",
"server": "freenode",
"channel": "#oaosidl"
}

22
modules/udp/udp.js Normal file
View File

@ -0,0 +1,22 @@
/**
* Module Name: UDP
* Description: Relays UDP packets, intended for
* a feed of RecentChanges on a MediaWiki install.
*/
var dgram = require('dgram');
var udp = function(dbot) {
var server = dgram.createSocket("udp4");
server.on("message", function(msg, msginfo) {
var message = msg.toString();
console.log(message);
if (msginfo.address == dbot.config.udp.address) {
dbot.say(dbot.config.udp.server, dbot.config.udp.channel, message);
}
});
server.bind(dbot.config.udp.port);
};
exports.fetch = function(dbot) {
return new udp(dbot);
};

View File

@ -106,3 +106,15 @@ html,body {
overflow:auto; overflow:auto;
padding:0; padding:0;
} }
#count2 {
bottom:25px;
position:absolute;
border-radius:5px;
display:none;
margin;5px;
padding:5px;
right:25px;
background-color:#3b5998;
color:white;
font-family:'Freight Sans Bold','Lucida Grande',verdana,arial,sans-serif;
}

76
public/imgurr.js Normal file
View File

@ -0,0 +1,76 @@
function giveMessage(msg) {
$('<li>'+msg+'</li>').prependTo('#history').hide().slideDown();
}
var lock = false;
var highscore = 10 + 1;
var score = highscore;
var count = 0;
var count2 = 0;
$('#count').text(score);
function getNewImage() {
count += 1;
lock = true;
$('#loading').fadeIn();
$('#loading').text('Loading image ' + count + '...');
document.title = 'random imgur (' + count + ')';
$('#loading').fadeIn();
$('#image').load(function(){});
$.get("/api/imgur/getRandomImage", function(d) {
$('#image').attr('src', d.data[0]);
lock = false;
score -= 1;
$('#count').text(score);
$('#details').text("Fetching info...");
giveMessage('<a href="' + d.data[0] + '">' + d.data[0] + '</a>');
$.get("/api/imgur/getImageInfoString", { 'slug': d.data[1] }, function(info) {
if(info.data[0].indexOf('undefined') == -1) {
$("#details").text(count + ': ' + info.data[0]);
$('#details').show();
} else {
$("#details").hide();
}
$('#loading').fadeOut();
}, "json");
console.log(d.data[2]);
if(d.data[2] == "e49e686582ce3f60cb51d00c10924861") { // 3Tt6N fb guy
count2 += 1;
if (count2 == 1){
$('#count2').text("+ " + count2 + " Facebook Monopoly Man");
} else {
$('#count2').text("+ " + count2 + " Facebook Monopoly Men");
}
$('#count2').fadeIn();
}
}, "json");
}
$(getNewImage());
$(document).on('keydown', function(e){
switch(e.which){
case 82: // r
score = highscore;
$('#count').text(highscore);
giveMessage("Score reset.");
case 13: // enter
case 32: // space
if (lock) {
$('#loading').text(function(index, text){
return text.replace(/.(?=[^.]*$)/, "!");
});
} else {
getNewImage();
}
break;
case 67:
$('#count').fadeToggle();
$('#count2').fadeToggle();
break;
case 83: // s
$('body').toggleClass('crop');
giveMessage("Toggled scrollbars.")
};
});

View File

@ -3,73 +3,17 @@ html(lang='en')
head head
meta(charset='utf-8') meta(charset='utf-8')
script(type="text/javascript", src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js") script(type="text/javascript", src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js")
script(type="text/javascript", src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js")
script(type="text/javascript", src="/imgurr.js")
link(rel="stylesheet", href="/imgurr.css") link(rel="stylesheet", href="/imgurr.css")
title random imgur title random imgur
script
var count = 0;
function giveMessage(msg) {
$('<li>'+msg+'</li>').prependTo('#history').hide().slideDown();
}
var lock = false
var highscore = #{highscore} + 1;
var score = highscore;
$('#count').text(score);
function getNewImage() {
count += 1;
lock = true;
$('#loading').fadeIn();
$('#loading').text('Loading image ' + count + '...');
document.title = 'random imgur (' + count + ')';
$('#loading').fadeIn();
$('#image').load(function(){});
$.get("/api/imgur/getRandomImage", function(d) {
$('#image').attr('src', d.data[0]);
lock = false;
score -= 1;
$('#count').text(score);
$('#details').text("Fetching info...");
giveMessage('<a href="' + d.data[0] + '">' + d.data[0] + '</a>');
$.get("/api/imgur/getImageInfoString", { 'slug': d.data[1] }, function(info) {
if(info.data[0].indexOf('undefined') == -1) {
$("#details").text(count + ': ' + info.data[0]);
$('#details').show();
} else {
$("#details").hide();
}
$('#loading').fadeOut();
}, "json");
}, "json");
}
$(getNewImage());
$(document).on('keydown', function(e){
switch(e.which){
case 82: // r
score = highscore;
$('#count').text(highscore);
giveMessage("Score reset.");
case 13: // enter
case 32: // space
if (lock) {
$('#loading').text(function(index, text){
return text.replace(/\.(?=[^.]*$)/, "!");
});
} else {
getNewImage();
}
break;
case 67:
$('#count').fadeToggle();
break;
case 83: // s
$('body').toggleClass('crop');
giveMessage("Toggled scrollbars.")
};
});
body body
div#loading Loading image 1... div#loading Loading image 1...
div#details Press [SPACE] to load a new image div#details Press [SPACE] to load a new image
div#count div#count
#{highscore} #{highscore}
div#count2
ø
ul#history ul#history
li Press [SPACE] for next li Press [SPACE] for next
div#container div#container