@@ -0,0 +1,1115 @@
+import re%0A%0Afrom plumeria.command import commands, CommandError%0Afrom plumeria.util import http%0Afrom plumeria.util.message import parse_list%0Afrom plumeria.util.ratelimit import rate_limit%0A%0ANEW_LINES_PATTERN = re.compile(%22%5B%5C%5Cr%5C%5Cn%5D%22)%0A%0A%0A@commands.register(%22recipes%22, %22recipe%22, category=%22Search%22)%0A@rate_limit()%0Aasync def recipes(message):%0A    %22%22%22%0A    Search recipepuppy.com for recipes using a list of ingredients.%0A%0A    Example::%0A%0A        /recipes onions, garlic%0A%0A    %22%22%22%0A    q = message.content.strip()%0A    if not q:%0A        raise CommandError(%22Search term required!%22)%0A    ingredients = parse_list(q)%0A    r = await http.get(%22http://www.recipepuppy.com/api/%22, params=%5B%0A        ('i', %22,%22.join(map(lambda s: s.replace(%22,%22, %22 %22), ingredients))),%0A    %5D)%0A    data = r.json()%0A    if len(data%5B'results'%5D):%0A        return %22%5Cn%22.join(map(lambda e: NEW_LINES_PATTERN.sub(%22%22, %22%5Cu2022 **%7Btitle%7D** - %7Bingredients%7D %3C%7Burl%7D%3E%22.format(%0A            title=e%5B'title'%5D.strip(),%0A            ingredients=e%5B'ingredients'%5D.strip(),%0A            url=e%5B'href'%5D.strip())), data%5B'results'%5D%5B:8%5D))%0A    else:%0A        raise CommandError(%22no results found%22)%0A

Add recipepuppy.com module.