Загрузка TikTok mp4 на стороне клиента в Django App

Я работаю над приложением и хочу загрузить видео TikTok, заданное URL-адресом на машине клиента. Я безрезультатно пробовал следующее. Я хотел бы сделать это как можно более легким способом и с помощью популярных и поддерживаемых библиотек, если это возможно. Проблемы, которые я получил в результате этих попыток, приведены ниже.

  • Использование https://github.com/davidteather/TikTok-Api

    • Хотя это работает локально, это не работает, когда я развертываю приложение, так как у меня возникают проблемы с потоками. Я скопировал код из этой библиотеки и возился с потоками, но он все равно не работает полностью. Я бы хотел избежать этого варианта, так как он не очень удобен в обслуживании.
    • .
  • Использование requests/wget

    • При попытке использовать wget я получаю следующую проблему: Error downloading video: 'ascii' codec can't decode byte 0xe2 in position 248: ordinal not in range(128) [11/Dec/2022 05:10:13] "GET /downloader/https://www.tiktok.com/@patrickzeinali/video/7143758925349784874?is_copy_url=1&is_from_webapp=v1&item_id=7143758925349784874&lang=en HTTP/1.1" 200 24

Вот как выглядят текущие файлы: downloader/urls.py

from django.urls import re_path, path
from . import views

urlpatterns = [
    path('<path:video_url>', views.download_video, name='download_video'),
]`

downloader/views.py

from django.http import HttpResponse
import ENV_VARS
import requests
import wget

def download_video(request, video_url):
    print(f'Received request for video at URL: {video_url}')
    # Use the `requests` library to fetch the TikTok video from the specified URL
    try:
        response = requests.get(video_url, headers=ENV_VARS.HEADERS)
    except Exception as e:
        print(f'Error fetching video from URL: {e}')
        return HttpResponse('Error fetching video from URL!')
    # Use the `wget` library to download the TikTok video to the client's device
    print(f'Received response from video URL: {response.text}')
    try:
        wget.download(response.content)
    except Exception as e:
        print(f'Error downloading video: {e}')
        return HttpResponse('Error downloading video!')
    # Return a success message to the client
    return HttpResponse('TikTok video downloaded successfully!')

Любая информация будет очень полезна. Спасибо!

Вернуться на верх