mod_idgames.py

Mon, 08 Dec 2014 16:12:51 -0500

author
Teemu Piippo <crimsondusk64@gmail.com>
date
Mon, 08 Dec 2014 16:12:51 -0500
changeset 110
b2770c43b752
parent 65
20bd76353eb5
child 114
0d1fd111cb22
permissions
-rw-r--r--

- now in color!

from modulecore import command_error
import hgapi
import urllib
import urllib2
import json

ModuleData = {
	'commands':
	[
		{
			'name': 'idgames',
			'description': 'Searches doomworld.com/idgames for wads',
			'args': '<wad...>',
			'level': 'normal',
		},
	]
}

g_idgamesSearchURL = 'http://www.doomworld.com/idgames/api/api.php?action=search&query=%s&type=title&sort=date&out=json'

def cmd_idgames (bot, args, replyto, **rest):
	try:
		url = g_idgamesSearchURL % urllib.quote (args['wad'])
		response = urllib2.urlopen (url).read()
		data = json.loads (response)

		if 'content' in data and 'file' in data['content']:
			if type (data['content']['file']) is list:
				files = data['content']['file']
			else:
				files = [data['content']['file']]

			i = 0

			for filedata in files:
				if i >= 5:
					break

				bot.privmsg (replyto, '- %s: \'%s\' by \'%s\', rating: %s: %s' % \
					(filedata['filename'], filedata['title'], filedata['author'], filedata['rating'], filedata['url']))

				i += 1
			#done
			bot.privmsg (replyto, "(%d / %d results posted)" % (i, len(files)))
		elif 'warning' in data and 'message' in data['warning']:
			command_error (data['warning']['message'])
		elif 'error' in data and 'message' in data['error']:
			command_error (data['error']['message'])
		else:
			command_error ("Incomplete JSON response from doomworld.com/idgames")
	except Exception as e:
		command_error ('search failed: %s' % str (e))
	#tried
#enddef

mercurial