getp2p-discord-bot/getp2pbot.py
2021-07-20 16:22:13 +04:00

75 lines
2.1 KiB
Python

import os
import re
import requests
import discord
from discord.ext import commands
from lxml import html
# Add the bot:
# https://discord.com/api/oauth2/authorize?client_id=866933457967513630&permissions=2147585024&scope=bot
# Setting Up
token = '*** YOUR TOKEN ***'
bot = commands.Bot(command_prefix='/')
@bot.command()
async def rutor(ctx, *args):
regex = re.compile(r'\'([\wА-Яа-я\s]+)\'\s*?(\d+)*$')
parsed_args = regex.match(' '.join(args))
query = parsed_args.group(1)
try:
rownum = int(parsed_args.group(2))
except TypeError:
rownum = 0
page = requests.get(f'http://rutor.info/search/{query}')
page_tree = html.fromstring(page.content)
table = page_tree.xpath('//div[@id="index"]')[0]
rows = table.xpath('.//tr[@class="gai" or @class="tum"]')
if rownum != 0:
# The 2nd cell (index=1) is the main text
# with a link to download and a title,
# the 1st anchor (index=0) is a download link
cells = rows[rownum-1].xpath('.//td')
dllink = cells[1].xpath('.//a//@href')[0]
linkparts = dllink.split('/')
torrentid = int(linkparts[len(linkparts)-1])
filename = f'{torrentid}.torrent'
torrent = requests.get(dllink).content
dlfile = open(filename, 'wb')
dlfile.write(torrent)
dlfile.close()
hascomments = len(cells) > 4
size = cells[3 if hascomments else 2].text
title = cells[1].xpath('.//a')[2].text.strip().replace('\'', '')
await ctx.send(
f'`{torrentid}: {title} ({size})`',
file=discord.File(filename)
)
os.remove(filename)
else:
choose_text = ''
i = 1
for row in rows:
if (i > 10):
break
# The 3rd anchor (index=2) in the 2nd cell (index=1) is a title,
# the 4th cell (index=3) contains the size of a film
cells = row.xpath('.//td')
maincell = cells[1]
hascomments = len(cells) > 4
size = cells[3 if hascomments else 2].text
title = maincell.xpath('.//a')[2].text.strip().replace('\'', '')
choose_text += f'${i} {title} \'{size}\'\n'
i += 1
await ctx.send(f'Choose torrent:```bash\n{choose_text}```')
# Starting
bot.run(token)