Получение ошибки при попытке удалить комментарии к видео YouTube с использованием Python - PullRequest
0 голосов
/ 14 июля 2020

Получение следующей ошибки при попытке удалить комментарии YouTube с помощью Python. Я могу получать и устанавливать статус модерации комментариев, но не могу удалять комментарии. Не могу понять.

def deleteComments(service):
    request = service.comments().delete(id="Ugzl8ec3rKxt6ClZlSR4AaABAg, 2CUswqQvx9q8MllybCuBF4AaABAg")
    request.execute()

Сообщение об ошибке:

googleapiclient.errors.HttpError: <HttpError 400 when requesting https://www.googleapis.com/youtube/v3/comments?id=Ugzl8ec3rKxt6ClZlSR4AaABAg%2CUswqQvx9q8MllybCuBF4AaABAg returned "The API server failed to successfully process the request. While this can be a transient error, it usually indicates that the request's input is invalid.">

Обновление: следующий пример кода одобрил комментарий, но выдал сообщение об ошибке при попытке удалить другой комментарий. Как было предложено @stvar, я добавил исключение для обработки ошибки и повторил команду после небольшой задержки, но безрезультатно. Не уверен, что еще делать.

Пример кода:

request = service.comments().setModerationStatus(
    id="UgyVOfo6iFZPZ-lye9V4AaABAg",
    moderationStatus=status
)
request.execute()    
print("Approved comment "+"UgyVOfo6iFZPZ-lye9V4AaABAg")

i = 4
while True:
    try:
        request = service.comments().delete(
            id="UgyVOfo6iFZPZ-lye9V4AaABAg"
        )
        request.execute()
        print("Deleted comment "+"UgyVOfo6iFZPZ-lye9V4AaABAg")
        break
    except:
        if (i>8):
            break
        time.sleep(i) 
        i=i+2
        print("retry after 2 seconds")

Вывод:

Approved comment Ugys7LJAAAqXjruiM0h4AaABAg
retry after 2 seconds
retry after 2 seconds
retry after 2 seconds

Ответы [ 2 ]

0 голосов
/ 15 июля 2020

Я попытался использовать curl, но безуспешно из-за проблем с получением токена доступа. В итоге я просто установил статус модерации комментария на отклоненный. К сожалению, удаление комментариев с использованием Python у меня не работает. Может, что-то не так с YouTube. Спасибо.

0 голосов
/ 14 июля 2020

Может быть, ваш идентификатор комментария

Ugzl8ec3rKxt6ClZlSR4AaABAg, 2CUswqQvx9q8MllybCuBF4AaABAg

недействителен по какой-то причине? Идентификаторы, которые я недавно видел, имели следующий формат:

^U[a-zA-Z0-9_-]{25}(?:\.[a-zA-Z0-9_-]{22})?$

Если вы попытаетесь удалить несколько комментариев за один снимок, обратите внимание, что, согласно документам , параметр id не поддерживает список идентификаторов, разделенных запятыми, как это делают некоторые другие конечные точки API. :

id (строка) Параметр id указывает идентификатор комментария для удаляемого ресурса.

В таком случае вам придется выполнять отдельные вызовы Comments.delete конечной точки для каждого из ваших комментариев, которые необходимо удалить.

Также обратите внимание, что идентификатор, который вы передаете API (тот, который я цитировал выше), не совпадает с идентификатором, встроенным в сообщение об ошибке, которое вы показали:

Ugzl8ec3rKxt6ClZlSR4AaABAg,UswqQvx9q8MllybCuBF4AaABAg

Это может означать, что виноват в вашей ошибке не API!

Обратите внимание, что вы можете удалить только те комментарии, которые написали сами; то есть вы не можете удалить чужие комментарии.

Действительно, такое поведение API официально не задокументировано . Но сотрудники Google отметили, что будет работать по назначению на De c 6, 2016 00:24 UT C. Более недавнее упоминание от 15 июня 2019 г., 22:33 UT C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...