45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
import requests
|
|
import random
|
|
import re
|
|
|
|
host = "https://collectionapi.metmuseum.org/public/collection/v1/"
|
|
|
|
# get the list of artwork
|
|
r = requests.get(host + 'objects')
|
|
objects = r.json()['objectIDs']
|
|
|
|
def getArt(term):
|
|
searchObjects = objects
|
|
if term:
|
|
query = {'q': term, 'hasImages': 'true'}
|
|
r = requests.get(host + 'search', params=query)
|
|
searchObjects = r.json()['objectIDs']
|
|
|
|
if not searchObjects or len(searchObjects) == 0:
|
|
return None
|
|
|
|
tries = 10
|
|
while tries > 0:
|
|
r = requests.get(host + 'objects/' + str(random.choice(searchObjects)))
|
|
j = r.json()
|
|
if j['primaryImage']:
|
|
return j
|
|
tries -= 1
|
|
return None
|
|
|
|
class Module:
|
|
def __init__(self):
|
|
self.commands = ['art']
|
|
self.manual = {
|
|
"desc": ("Post random art from metmuseum's api"),
|
|
"bot_commands": {"art": {"usage": lambda x: f"{x}art"}}
|
|
}
|
|
|
|
def main(i, irc):
|
|
msg = getArt("")
|
|
if msg is None:
|
|
msg = "No result"
|
|
else:
|
|
msg = '"' + msg['title'] + '" ' + msg['objectDate'] + ' ' + msg['primaryImage']
|
|
irc.privmsg(i.channel, msg)
|