Загрузка...

Telegram Бот для загрузки видео из Тик Тока

Тема в разделе Python создана пользователем PISKA 7 апр 2025. 99 просмотров

Загрузка...
  1. PISKA
    PISKA Автор темы 7 апр 2025 https://lolz.live/threads/8514735/ доработки и разработка Python 412 15 май 2019
    TikTok Video Downloader Bot

    Это Telegram-бот, который позволяет скачивать видео из TikTok, отправляя ссылку на пост. Бот обрабатывает ссылки вида
    ⁡https://vt.tiktok.com/...
    ⁡ или
    ⁡https://www.tiktok.com/...
    ⁡ и возвращает видео прямо в чат. Функциональность скачивания фотографий из TikTok не поддерживается.

    Возможности

    • Скачивание видео из TikTok по прямой ссылке.
    • Возможность добавления своих функций в код.

    Ограничения

    • Бот не поддерживает скачивание фотографий из TikTok.

    Требования

    • Python 3.8+
    • Библиотеки: aiogram, requests, beautifulsoup4
    • Установите зависимости с помощью:
      ⁡pip install aiogram requests beautifulsoup4
    Конфигурация

    • Создайте бота через @BotFather в Telegram и получите токен.
    • Вставьте токен в файл
      ⁡config.py
      ⁡ , заменив пустую строку в переменной TOKEN:
      ⁡TOKEN = "ВАШ_ТОКЕН"

    Использование

    1. Найдите видео в TikTok и скопируйте ссылку.
    2. Отправьте ссылку боту в Telegram.
    3. Бот ответит сообщением "Downloading..." и отправит видео если у него получится его скачать.
    4. Если ссылка некорректна или видео не найдено, бот сообщит об ошибке.

    ⁡main.py

    Python
    import asyncio from aiogram import Bot, Dispatcher from aiogram.enums import ParseMode from config import TOKEN from handlers import register_handlers async def main(): bot = Bot(token=TOKEN, parse_mode=ParseMode.HTML) dp = Dispatcher() register_handlers(dp) await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())

    ⁡utils.py

    Python
    from bs4 import BeautifulSoup import requests import logging def extract_media_urls(tiktok_url: str, headers: dict) -> tuple[str | None, list[str]]: try: response = requests.post( "https://ssstik.io/abc?url=dl", headers=headers, data={"id": tiktok_url, "locale": "en", "tt": "123"}, timeout=10 ) if response.status_code != 200: logging.warning(f"Bad response from ssstik.io: {response.status_code}") return None, [] soup = BeautifulSoup(response.text, "html.parser") video_link = soup.find("a", class_="pure-button") if video_link and "href" in video_link.attrs: href = video_link["href"] video_url = "https://ssstik.io" + href if href.startswith("/") else href return video_url, [] photo_div = soup.find("div", class_="image-cards") if photo_div: photo_urls = [img["src"] for img in photo_div.find_all("img") if "src" in img.attrs] return None, photo_urls return None, [] except Exception as e: logging.exception("Error extracting media URLs") return None, []
    ⁡handlers.py

    Python
    from aiogram import Dispatcher, F from aiogram.types import Message from config import TIKTOK_LINK_PATTERN, HEADERS from utils import extract_media_urls from downloader import download_and_send_media def register_handlers(dp: Dispatcher): @dp.message(F.text.regexp(TIKTOK_LINK_PATTERN)) async def tiktok_handler(message: Message): tiktok_url = message.text.strip() await message.reply("Downloading...") video_url, photo_urls = extract_media_urls(tiktok_url, HEADERS) if not video_url and not photo_urls: await message.reply("Cannot find media") return await download_and_send_media(video_url, photo_urls, message, HEADERS) @dp.message() async def fallback_handler(message: Message): await message.reply("Send a TikTok link")
    ⁡downloader.py

    Python
    import requests from aiogram.types import BufferedInputFile, InputMediaPhoto import logging async def download_and_send_media(video_url: str | None, photo_urls: list[str], message, headers: dict): try: if video_url: response = requests.get(video_url, headers=headers, timeout=15) if response.status_code == 200: video_data = response.content await message.reply_video( video=BufferedInputFile(video_data, filename="tiktok.mp4"), caption="Разработано devai.digital" ) else: await message.reply(f"Cannot download video (code: {response.status_code})") elif photo_urls: media_group = [] for url in photo_urls: response = requests.get(url, headers=headers, timeout=10) if response.status_code == 200: photo_data = response.content media_group.append( InputMediaPhoto(media=BufferedInputFile(photo_data, filename="tiktok.jpg")) ) if media_group: await message.reply_media_group(media_group) await message.reply("Разработано devai.digital") else: await message.reply(" Не удалось скачать фотографии") else: await message.reply(" Медиа не найдено") except Exception as e: logging.exception("Error downloading media") await message.reply(f" Ошибка: {str(e)}")
    ⁡config.py

    Python
    import logging import re logging.basicConfig(level=logging.INFO) TOKEN = "" HEADERS = { "User-Agent": ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/91.0.4472.124 Safari/537.36" ) } TIKTOK_LINK_PATTERN = re.compile(r"https?://(vt\.tiktok\.com|www\.tiktok\.com)/\S+")
     
    7 апр 2025 Изменено
Top
JavaScript error: