1
0
Fork 0
mirror of https://github.com/myned/modufur.git synced 2024-12-25 22:57:27 +00:00
modufur/tools/scraper.py

62 lines
1.6 KiB
Python
Raw Normal View History

2022-02-21 07:10:57 +00:00
import aiohttp
import tldextract
import lightbulb
import pysaucenao
import config as c
plugin = lightbulb.Plugin('scraper')
sauce = pysaucenao.SauceNao(api_key=c.config['saucenao'], priority=(29, 40, 41)) # e621 > Fur Affinity > Twitter
async def reverse(urls):
matches = []
for url in urls:
saucenao = await _saucenao(url)
kheina = None
if saucenao:
matches.append(saucenao)
else:
pass
if not saucenao and not kheina:
matches.append(None)
return matches
async def _saucenao(url):
try:
results = await sauce.from_url(url)
except pysaucenao.FileSizeLimitException:
raise pysaucenao.FileSizeLimitException(url)
except pysaucenao.ImageSizeException:
raise pysaucenao.ImageSizeException(url)
except pysaucenao.InvalidImageException:
raise pysaucenao.InvalidImageException(url)
if results:
return {
'source': results[0].url,
'artist': results[0].author_name or 'unknown',
'thumbnail': results[0].thumbnail,
'similarity': int(results[0].similarity),
'index': tldextract.extract(results[0].index).domain}
return
async def _kheina(url):
pass
async def _fetch(url):
async with aiohttp.ClientSession() as session:
async with session.get(url, headers={'User-Agent': 'Myned/Modufur (https://github.com/Myned/Modufur)'}) as response:
return await response.json() if response.status == 200 else None
def load(bot):
bot.add_plugin(plugin)
def unload(bot):
bot.remove_plugin(plugin)