Files
video_downloader_service/src/core/link_parser.py
T

54 lines
1.7 KiB
Python

import asyncio
import json
from loguru import logger
from playwright.async_api import async_playwright
from playwright.async_api import Playwright
from aio_pika import Message, connect, DeliveryMode
async def run(playwright: Playwright):
browser = await playwright.chromium.launch(headless=False)
context = await browser.new_context()
page = await context.new_page()
await page.goto(url="https://m.my.mail.ru/v/topclips/video/alltop/68100.html")
# await page.goto(url="https://www.youtube.com/shorts/vJU0Sr3WvmU")
video = await page.get_attribute("xpath=//video", "src")
connection = await connect("amqp://guest:guest@localhost/")
title = await page.title()
async with connection:
for i in range(10):
url = page.url
body = {
"link": url,
"format": "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best",
"merge_output_format": "mp4",
"outtmpl": f"downloads/%(extractor_key)s/%(id)s_%(width)sp.%(ext)s",
}
# Creating a channel
channel = await connection.channel()
# Sending the message
message = Message(
json.dumps(body, indent=4).encode('utf-8'), delivery_mode=DeliveryMode.PERSISTENT,
)
await channel.default_exchange.publish(
message,
routing_key='hello',
)
logger.info(f" [x] Sent '{body}'")
await page.keyboard.press("ArrowDown")
while title == await page.title():
await page.title()
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())