Douyin — это музыкальная и творческая социальная программа для коротких видео, разработанная Toutiao. Программное обеспечение было запущено 20 сентября 2016 года. Это платформа сообщества коротких видео для всех возрастов.
Как активный пользователь Douyin, мне нравится смотреть видео каждый день и смеяться 😄. Но все знают, что видео, загруженные с Douyin, имеют водяные знаки. Программисту с обсессивно-компульсивным расстройством это категорически запрещено. В Интернете существует множество инструментов для удаления водяных знаков. Как они работают? Любопытство заставило меня начать исследование.
Начнем со ссылки общего доступа Douyin. Формат ссылки общего доступа, скопированной из Douyin, следующий:
2.82 wsr:/ Happy birthday to Кобе.%баскетбол %Менталитет Мамбы % День рождения Коби Брайанта https://v.douyin.com/d8LpxMQ/ Скопируйте ссылку, выполните поиск по Daqi Douyin и посмотрите видео напрямую!
Есть адрес ссылки https://v.douyin.com/d8LpxMQ/,Давайте поместим это в браузер,Нашел эту ссылку перенаправленную,Перенаправленный адрес выглядит следующим образом:
Кажется, это бесполезно,Давайте возьмем пакет и посмотрим, есть ли интерфейс для запроса видео.,Посмотрите внимательно,кусать。Найденный item_ids
интерфейс, а следующее значение — это последняя часть URL-адреса перенаправления (6999605370222054663). Я считаю, что это должен быть идентификатор видео. Адрес интерфейса следующий:
https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=6999605370222054663
Далее давайте посмотрим на данные, возвращаемые этим запросом интерфейса.,Ух ты,когда я нажимаю наPreview
когда,Я внезапно стал просветленным,Копирайтинг с видео, автор, музыка, миниатюра, Адрес и т. д.
После того, как я вынул адрес видео, я скопировал его в браузер и открыл. URL-адрес видео следующий:
Но открыв его, я обнаружил, что водяной знак в левом верхнем углу видео все еще на месте. Посмотрите этот URL playwm
,Обнаружить wm
Это немного похоже на название моего проекта,нетwatermarkАббревиатура?я удаляю wm
,Затем скопировать зайдите в браузер и откройте его,Появилась волшебная сцена,Водяной знак видео исчез,Так взволнован. Адрес видео без водяного знака следующий:
https://aweme.snssdk.com/aweme/v1/play/?video_id=v0d00fg10000c4hpfk3c77uar6l7cs90&ratio=720p&line=0
Оказывается, удалить водяные знаки с видео Douyin очень просто.,Все еще думаете об алгоритмах видео или о чем-то еще?,Это просто простой анализ. Ха-ха,Это просто заставляет меня чувствовать себя немного 🤭. Теперь, когда вы поняли принцип, стало ли писать код проще и приятнее?
if len(re.findall('[a-z]+://[\S]+', content, re.I | re.M)) > 0:
return re.findall('[a-z]+://[\S]+', content, re.I | re.M)[0]
id
。проходитьrequest
библиотека для запросов.header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/92.0.4515.107 Safari/537.36'}
# URL: перенаправленный URL
response = requests.get(url, headers=header)
return response.url
id
,как параметры интерфейса item_ids
ценить。# realUrl: URL-адрес, полученный путем перенаправления.
startUrl = realUrl[0:realUrl.index('?')]
id = startUrl[startUrl.rindex('/') + 1:len(startUrl)]
item_ids
。 douyinUrl = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo'
douyinParams = {
'item_ids': id
}
douyinResponse = requests.get(url=douyinUrl, params=douyinParams, headers=headers)
body = douyinResponse.text
playwm
быть заменен на play
。data = json.loads(body)
# видео копирайтинг
videoTitle = data['item_list'][0]['desc']
# URL-адрес водяного знака видео
videoUrl = data['item_list'][0]['video']['play_addr']['url_list'][0]
# Видео без URL-адреса водяного знака
realVideoUrl = f'{videoUrl}'.replace('playwm', 'play')
webbrowser
Откройте в браузере библиотеку, воспроизведите видео и наслаждайтесь удовольствием без водяных знаков.webbrowser.open(realVideoUrl)
Все коды следующие:
import json
import re
import webbrowser
import requests
def get_url(content):
if len(re.findall('[a-z]+://[\S]+', content, re.I | re.M)) > 0:
return re.findall('[a-z]+://[\S]+', content, re.I | re.M)[0]
return None
def get_redirect_url(url, header):
# URL: перенаправленный URL
response = requests.get(url, headers=header)
return response.url
if __name__ == '__main__':
douyinUrl = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/92.0.4515.107 Safari/537.36'}
inputContent = input('Пожалуйста, введите ссылку на видео: ')
if inputContent.strip() is not None:
if get_url(inputContent) is not None:
realUrl = get_redirect_url(get_url(inputContent), headers)
# realUrl: URL-адрес, полученный путем перенаправления.
startUrl = realUrl[0:realUrl.index('?')]
id = startUrl[startUrl.rindex('/') + 1:len(startUrl)]
douyinParams = {
'item_ids': id
}
if realUrl.__contains__('www.douyin.com/video'):
douyinResponse = requests.get(url=douyinUrl, params=douyinParams, headers=headers)
body = douyinResponse.text
print(douyinResponse.url)
data = json.loads(body)
print(data['item_list'][0]['desc'])
# видео копирайтинг
videoTitle = data['item_list'][0]['desc']
# URL-адрес водяного знака видео
videoUrl = data['item_list'][0]['video']['play_addr']['url_list'][0]
# Видео без URL-адреса водяного знака
realVideoUrl = f'{videoUrl}'.replace('playwm', 'play')
print(realVideoUrl)
webbrowser.open(realVideoUrl)
Основываясь на вышеизложенном принципе удаления водяных знаков в видео, мы продолжаем подробно изучать удаление водяных знаков в видео на личной домашней странице пользователя. я пойду тихокопироватьг-н Лей(Лэй Цзюнь)Поделиться ссылкой на домашнюю страницу。Профиль г-на Лэя в Douyin на домашней странице:“Любовь - это все причины и ответы。”,Так же, как я люблю технологии🤭. Ссылки на контент, размещенные на главной странице, следующие:
Запишите свою прекрасную жизнь на Douyin! https://v.douyin.com/d8NLmmR/
Затем мы перенаправляем URL-адрес общего доступа в браузере. URL-адрес перенаправления выглядит следующим образом:
На первый взгляд вы можете не увидеть никакой информации, поэтому поместите ее в почтальон и посмотрите параметры запроса.
Посмотрите на это так,Многие параметры выставлены. Далее продолжаем захват пакетов,Внимательно ищите интерфейс списка видео.,Ищите это。кусать,Мое внимание привлек интерфейс,Preview
Имеется список данных видеоинформации. URL-адрес интерфейса списка видео выглядит следующим образом:
Параметры запроса следующие:
Внимательно читайте значение каждого параметра анализировать,sec_uid
и перенаправить URL sec_id
То же значение,count
Это должно быть количество запросов за раз.,Это также должен быть пейджинговый запрос.。max_cursor
Это просто курсор,Используется для запроса следующей страницы。Этот интерфейс значений будет возвращаться каждый раз。aid
Не уверен._signature
应该是加密的一个签名。dytk
Не уверен.
Что делать, если я не знаю этих параметров? Что произойдет, если я удалю их из GET-запроса? Удалите последние три параметра и повторите запрос. Происходит волшебная сцена, а интерфейс все еще открыт. Я скопировал несколько ссылок и заменил их sec_uid
,Все еще нет проблем. этот? Пакетное получение прошло успешно,Ха-ха-ха. Интерфейс после удаления выглядит следующим образом:
Далее приступайте к написанию кода.
Извлечение ссылок, перенаправление запросов и sec_uid
Код перехвата значения такой же, как указано выше.
douyinUrl = 'https://www.iesdouyin.com/web/api/v2/aweme/post/'
douyinParams = {
'sec_uid': id,
'count': 24,
'max_cursor': 0,
}
response = requests.get(url=douyinUrl, params=douyinParams, headers=headers)
body = response.text
data = json.loads(body)
for content in data['aweme_list']:
if len(content['video']['play_addr']['url_list']) > 0:
print(content['desc'] )
print(content['video']['play_addr']['url_list'][0])
max_cursor
Что-то изменилось. Все копирайтинговые и видео адреса для запроса и получения списков видео такие же, как указано выше.douyinParams = {
'sec_uid': id,
'count': 24,
'max_cursor': data['max_cursor'],
}
has_more
,Он используется для определения того, есть ли еще видео,has_more
=true, это означает, что видео получено.if data['has_more']:
print('Нет видео')
exit()
douyin.md
файл, а затем передать markdown
синтаксис, написанный как ссылка на douyin.md
в файле,Когда я вижу такую копию,,Нажмите на копию, чтобы воспроизвести видео。markdown
Пример синтаксиса ссылки выглядит следующим образом:[видео копирайтинг](Видео адрес)
Напишите код следующим образом:
for content in data['aweme_list']:
with open('douyin.md', 'a', encoding='utf-8') as f:
if len(content['video']['play_addr']['url_list']) > 0:
f.write(
'[' + content['desc'] + ']' + '(' + content['video']['play_addr']['url_list'][0] + ')' + ' <br />')
Как насчет этого, неплохо! Если вам понравилось видео девушки, вы можете спокойно сохранить его и посмотреть позже🤭, хахаха.
Я думаю, что многие вещи такие. Прежде чем я их изучаю, они всегда кажутся непостижимыми. Когда я изучаю принципы технологии, я нахожу их такими простыми. Это показывает, что большинство вещей можно примерно понять, если вы готовы провести исследование.
Позвольте мне рассказать вам небольшой секрет. Возможно, это уже не секрет. . . Куайшоу короткое видеоидтиОбработка водяных знаковПодобным образом,Просто добавьте его при получении партиями cookie
,Я реализовал код,Заинтересованные друзья могут попробовать это самостоятельно.
Этот блог предназначен только для изучения Python. В случае каких-либо нарушений, пожалуйста, свяжитесь со мной, чтобы немедленно удалить его. Не используйте его в коммерческих целях. В случае использования последствия не будут иметь никакого отношения к блоггеру.