first deploy
This commit is contained in:
35
mail_server.py
Normal file
35
mail_server.py
Normal file
@@ -0,0 +1,35 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user