netflix-clicker/mail_server.py
2023-08-27 02:36:05 +08:00

36 lines
1.1 KiB
Python

from aiosmtpd.controller import Controller
import quopri
from loguru import logger
import re
from clicker import Clicker
import asyncio
URL_PATTERN = re.compile(b'"(https://www.netflix.com/account/update-primary-location.*?)"', re.DOTALL)
class NetflixHandler:
async def handle_DATA(self, session, envelope, *args):
logger.info('Message from %s' % envelope.mail_from)
data = quopri.decodestring(
envelope.content.decode('utf8', errors='replace')
)
if urls := URL_PATTERN.findall(data):
with Clicker() as browser:
url = urls[0]
logger.info(f'Found Update link: {url}')
try:
browser.click(url.decode())
except Exception as e:
logger.error(e)
return '250 Message accepted for delivery'
server = Controller(handler=NetflixHandler, hostname='0.0.0.0', port=1025)
server.start()
logger.info('Netflix-clicker start.')
while True:
try:
asyncio.run(asyncio.sleep(3))
except KeyboardInterrupt:
server.stop()