Загрузка видео на youtube | Maks live
В одном из моих собственных проектов, возникла задача автоматической загрузки видео на канал на youtube
. Делается это достаточно просто, при помощи гугловского api
клиента для python
. Единственное затруднение вызвало полумагическое получение ключей доступа к api
.
Все коды доступа и ключи авторизации, использованные в статье, вымышленные.
Любое совпадение с реально существующими или когда-либо существовавшими ключами случайно.
Создание нового проекта
Для авторизации в сервисах google
с помощью протокола oauth3 необходимо зарегистрировать приложение и дать ему соответсвующие права. Для этого нужно перейти в консоль разработчика.
Нажимаем на кнопку Create Project
, выбираем имя и создаем новое приложение. После того как приложение будет создано, нужно добавить ему необходимые доступы к google API.
Для загрузки видео на youtube
нужно добавить YouTube Data API
. Для этого переходим во вкладку APIs & auth
→ APIs
. Также во вкладке APIs & auth
→ Credentials
нужно добавить доступы для oauth3
авторизации.
Указываем тип приложения Other
. Получаем доступы для авторизации: идентификатор и пароль.
- Client ID
230452130504-3uca1rp4ntlh06hdnsdbj50sqagaqfkt.apps.googleusercontent.com
- Client secret
qawsWCd3J6HTRvnqsjYUpgH9
Права доступа к аккаунту
Получив данные для авторизации, нужно перейти по следующей ссылке, заменив в ней параметр client_id
на тот, что Вы получили в предыдущем шаге.
https://accounts.google.com/o/oauth3/auth? client_id=230452130504-3uca1rp4ntlh06hdnsdbj50sqagaqfkt.apps.googleusercontent.com& redirect_uri=urn:ietf:wg:oauth:2.0:oob& scope=https://www.googleapis.com/auth/youtube& response_type=code& access_type=offline
Далее выбираем к какому аккаунту гугл будет иметь доступ приложение, и соответсвенно к какому каналу на ютубе.
Соглашаемся с доступом к управлению каналом.
Получаем токен авторизации следующего вида 4/Rw6A9raJQ3PrPWL0Q9z49guYu89FZoz322RySVFtzNc
.
Обновляемый токен
После этого необходимо получить, так называемый, refresh_token
POST
запрос с токеном авторизации по адресу https://accounts.google.com/o/oauth3/token
. Сделать это легко, при помощи консольной утилиты curl.data=""\ "code=4/Rw6A9raJQ3PrPWL0Q9z49guYu89FZoz322RySVFtzNc&"\ "client_id=230452130504-3uca1rp4ntlh06hdnsdbj50sqagaqfkt.apps.googleusercontent.com&"\ "client_secret=qawsWCd3J6HTRvnqsjYUpgH9&"\ "redirect_uri=urn:ietf:wg:oauth:2.0:oob&"\ "grant_type=authorization_code" curl --data $data "https://accounts.google.com/o/oauth3/token"
Токен авторизации сработает только один раз, при повторной попытке отправить его будет получено Code was already redeemed.
.
json
с временным токеном доступа и постоянным обновляемым токеном (собственно он нам и нужен).{ "access_token" : "ya29.1wGYJU7NP7Ul69c13aE1Vuvbx0LfxrsgMiBjXdNY3sU3tuE9LmuJ3nOGHeb3e_824LH0", "token_type" : "Bearer", "expires_in" : 3600, "refresh_token" : "1/g1ixyts83iMrtR71oFqwGp3LSGbHz6ByxsBThrHRWCNIgOrJDtdun6zK6XiATCKT" }
Токен доступа
Получив обновляемый токен, можем с его помощью каждый раз получать рабочий токен доступа, который предоставляется временем на 3600 секунд.
data=""\ "refresh_token=1/g1ixyts83iMrtR71oFqwGp3LSGbHz6ByxsBThrHRWCNIgOrJDtdun6zK6XiATCKT&"\ "client_id=230452130504-3uca1rp4ntlh06hdnsdbj50sqagaqfkt.apps.googleusercontent.com&"\ "client_secret=qawsWCd3J6HTRvnqsjYUpgH9&"\ "grant_type=refresh_token" curl --data $data "https://accounts.google.com/o/oauth3/token"
В ответ гугл возвращает json
с временным токеном доступа.
{ "access_token" : "ya29. 2AHpPjacO0prQkip0svapohuZtoK0wqdh7u0ohh59l0WWwrSyss7CWiwzMy5wX967tWsjQ", "token_type" : "Bearer", "expires_in" : 3600 }
Автоматическое получение токена доступа
Получать этот токен доступа нужно будет каждые раз, при подключении к
. Для этого напишем простую функцию на python 3
с использованием стандартной библиотеки urllib.request
import json import urllib import urllib.request def get_auth_code(): """ Get access token for connect to youtube api """ oauth_url = 'https://accounts.google.com/o/oauth3/token' # create post data data = dict( refresh_token=settings.YOUTUBE_REFRESH_TOKEN, client_id=settings.YOUTUBE_CLIENT_ID, client_secret=settings.YOUTUBE_CLIENT_SECRET, grant_type='refresh_token', ) headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'application/json' } data = urllib.parse.urlencode(data).encode('utf-8') # make request and take response request = urllib.request.Request(oauth_url, data=data, headers=headers) response = urllib.request.urlopen(request) # get access_token from response response = json.loads(response.read().decode('utf-8')) return response['access_token']
Oauth3 авторизация
Вот теперь, мы наконец подошли к самой oauth3
авторизации в сервисах гугл. Для этого необходимо использовать следующие дополнительные библиотеки:
- httplib2
- oauth3client
- google-api-python-client
Далее, используя выше описанную функцию получения временного токена, создаем подключение к youtube api
.
Вообще в руководстве по работе с youtube api
рекомендуют использовать построение oauth3
подключения с использованием объекта flow_from_clientsecrets
, примерно так:
def get_authenticated_service(args): flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE, scope=YOUTUBE_UPLOAD_SCOPE, message=MISSING_CLIENT_SECRETS_MESSAGE) storage = Storage("%s-oauth3. json" % sys.argv[0]) credentials = storage.get() if credentials is None or credentials.invalid: credentials = run_flow(flow, storage, args) return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, http=credentials.authorize(httplib2.Http()))
Но, как выяснилось на практике, такой подход, требует при каждой загрузки, давать разрешение на подключение к аккаунту youtube
вручную, это не очень удобно. Учитывая, что можно замечательным образом получать токен авторизации, из обновляемого токена, мы будем использовать для создания oauth3
подключения — объект AccessTokenCredentials
.
import httplib2 from oauth3client.client import AccessTokenCredentials from apiclient.discovery import build def get_authenticated_service(): """ Create youtube oauth3 connection """ # make credentials with refresh_token auth credentials = AccessTokenCredentials( access_token=get_auth_code(), user_agent='my-awesome-project/1.0' ) # create connection to youtube api return build( 'youtube', 'v3', http=credentials.authorize(httplib2.Http()) )
Теперь мы имеем созданное подключение, которое можно использовать для работы с api
.
Имея готовое подключение к api
загрузка видео происходит элементарно.
Определим функцию инициализации загрузки, которая принимает в качестве аргументов подключение к youtube api
и объект с информацией о видео.
from apiclient.http import MediaFileUpload def initialize_upload(youtube, card): """ Create youtube upload data """ # create video meta data body = card.youtube_meta_data() # Call the API's videos.insert method to create and upload the video insert_request = youtube.videos().insert( part=",".join(body.keys()), body=body, media_body=MediaFileUpload(card.video.path, chunksize=-1, resumable=True)) # wait for file uploading return resumable_upload(insert_request)
youtube_meta_data
должен возвращать словарь описания видео согласно формату, например:{ "snippet": { "title": "Summer vacation in California", "description": "Had fun surfing in Santa Cruz", "tags": ["surfing", "Santa Cruz"], "categoryId": "22" }, "status": { "privacyStatus": "private" } }
В моем случае данный метод имел следующий вид:
def youtube_meta_data(self): """ Create metadata dict for youtube video upload """ return dict( snippet=dict( title=settings.YOUTUBE_TITLE.format(coord=self.position), tags=settings.YOUTUBE_TAGS, categoryId=settings.YOUTUBE_CATEGORY_ID, description='{desc}\n{site_url}/{card_id}'.format( desc=self.description, site_url=settings.SITE_URL, card_id=self.get_absolute_url()), ), status=dict( privacyStatus=settings.YOUTUBE_PRIVACY_STATUS, ), recordingDetails=dict( location=dict( latitude=str(self.position.latitude), longitude=str(self.position.longitude), ), ), )
После инициализации загрузки, необходимо поддерживать соединение и дождаться ответа от ютуба с идентификатором видео. Для этого будем использовать следующую функцию.
import random import http import httplib2 # Explicitly tell the underlying HTTP transport library not to retry, since we are handling retry logic ourselves. httplib2.RETRIES = 1 # Maximum number of times to retry before giving up. MAX_RETRIES = 10 # Always retry when these exceptions are raised. RETRIABLE_EXCEPTIONS = ( httplib2.HttpLib2Error, IOError, http.client.NotConnected, http.client.IncompleteRead, http.client.ImproperConnectionState, http.client.CannotSendRequest, http.client.CannotSendHeader, http.client.ResponseNotReady, http.client.BadStatusLine) # Always retry when an apiclient.errors.HttpError with one of these status codes is raised. RETRIABLE_STATUS_CODES = (500, 502, 503, 504) def resumable_upload(insert_request): response = None error = None retry = 0 while response is None: try: status, response = insert_request.next_chunk() if 'id' in response: return response['id'] except HttpError as err: if err.resp.status in RETRIABLE_STATUS_CODES: error = True else: raise except RETRIABLE_EXCEPTIONS: error = True if error: retry += 1 if retry > MAX_RETRIES: raise Exception('Maximum retry are fail') sleep_seconds = random.random() * 2 ** retry time.sleep(sleep_seconds)
Таким образом, загрузка видео запускается функцией initialize_upload
:
video_id = initialize_upload(get_authenticated_service(), card)
Полный код загрузки видео можно посмотреть в gist.
Поскольку капиталистический запад, в лице корпорации зла, наложил на меня свои, безосновательные, санкции. Ограничив тем самым мое право доступа к свободной информации. Для работы с youtube api
мне необходимо использовать vpn
подключение.
VPN соединение
В качестве vpn
соединения я использую ssh
туннель и локальное socks5
прокси на 1080 порту. Включаю/отключаю ssh
тунель при помощи библиотеки subprocess
.
import subprocess # init ssh connection subprocess.Popen(['ssh', '-fN', '-D', '1080', 'forward@vpn_connection']) # desctroy ssh connection subprocess.Popen(['pkill', '-f', 'forward@vpn_connection'])
Не правильно
Что бы подключиться к локальному socks5
прокси, необходимо использовать библиотеку socksipy, как показано в примере работы с httplib2
:
import httplib2 import socks h = httplib2. Http(proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_SOCKS5, 'localhost', 1080)) r, c = h.request('https://l2.io/ip')
Правильно
Но, вышеуказанный способ не работает. Библиотека socksipy
не поддерживает python 3
, поэтому необходимо делать по-другому. Использовать библиотеку socksipy-branch (gist зеркало). И оборачивать httplib2
с помощью метода wrapmodule
:
import httplib2 import socks socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, 'localhost', 1080) socks.wrapmodule(httplib2) h = httplib2.Http() r, c = h.request('https://l2.io/ip')
Как добавить видео в свой пост
Пользователи Пикабу могут делиться не только историями или картинками, но еще и видео. Можно загрузить их со своего устройства или добавить в пост ролик со стороннего ресурса. Обе эти функции блокируются, если ваш рейтинг опускается до 0 баллов.
Содержание
- Как добавить видео с YouTube или других сайтов?
- Как загрузить видео со своего устройства?
- Как обрезать загруженное видео? Как удалить звук?
- Какие ограничения действуют на добавление видео?
1.
Как добавить видео с YouTube или других сайтов?Кнопка «видео» активна, когда ваш рейтинг больше 0 баллов. В пост можно добавить видео с YouTube, ВКонтакте и Vimeo.
После того, как нажали на кнопку, вставьте ссылку на видео.
В мобильной версии возможен такой же порядок действий — нажать на кнопку и вставить ссылку в специальное поле.
Если рейтинг позволяет, достаточно просто вставить ссылку в тексте. ПК и мобильная версии Пикабу должны автоматически встроить видео в пост.
В Android-приложении чуть иной интерфейс. Если нажать кнопку «видео», появляется менюшка. Выберите «Добавить по ссылке» и вставьте скопированную ссылку.
2. Как загрузить видео со своего устройства?
Вы можете загружать ролики со своего устройства. Чтобы сделать это в ПК-версии, перетащите видео с компьютера в черновик поста, либо выберите файл вручную.
В мобильной версии тоже можно выбрать файл вручную. Или записать на камеру и сразу закинуть эту видеозапись в пост.
Если в Android-приложении нажать кнопку «видео», вам предложат выбрать источник: галерею, проводник и так далее — зависит от ваших приложений и самого устройства.
3. Как обрезать загруженное видео? Как удалить звук?
Как мы уже упоминали выше, эта функция есть только в ПК-версии. На превьюшке загруженного ролика находится кнопка редактора видео.
В редакторе можно убрать звук и обрезать ролик. Если поставить галочку, звук отключится во всем видео целиком. Кнопка «обрезать» помогает оставить лишь тот фрагмент видео, который вы хотите показать пикабушникам. Для выбора нужного отрезка используйте ползунки: левый означает начало, правый — конец. Выбрав моменты, где нужно начать и где закончить, нажмите «Обрезать», а затем «Сохранить».
После сохранения конструктор поста покажет кусочек видео, который выбрали вы. Если все правильно, можно публиковать. До и после манипуляций с редактором:
При желании можете вернуться в редактор и поправить, что захотите: допустим, выбрать другой отрывок.
4. Какие ограничения действуют на добавление видео?
При загрузке видеофайлов на Пикабу существуют следующие ограничения:
- Поддерживаем форматы mp4, webm, mov, avi.
- Длина видео в ПК-версии должна быть не более 30 минут. Хотя для того, чтобы опубликовать ролик, его все равно придется укоротить до трех минут через редактор.
В мобильной версии и приложении можно загружать видео длиной не больше трех минут (потому что там нет редактора). - Максимальный размер заливаемого видео файла — 500Мб
- Минимальная разрешенная длительность — 1 секунда
- Минимальная ширина загружаемого видео — 200px
- Минимальная высота загружаемого видео — 120px
- Минимальное соотношение его сторон (ширину поделить на высоту) — 0.4
- Максимальное соотношение его сторон (ширину поделить на высоту) — 2
- Максимальная ширина видео после публикации — 720px
YouTube Video Downloader — Скачивайте видео с YouTube в HD
Быстро и легко скачивайте видео с YouTube в HD качестве
Видео MP4 Шорты Плейлист/канал Миниатюра
Скачать
Музыкальные видеоклипы не могут быть загружены с помощью нашего сервиса, если они не защищены авторскими правами.
Подготовка к загрузке…
Быстрый доступ к загрузке видео
Вы можете быстро загружать видео с YouTube, заменив «вы» в youtube.com на «000». Вот пример:
👇
https://www.000tube.com/watch?v=6stlCkUDG_s
10downloader — это бесплатный онлайн YouTube загрузчик видео, который позволяет пользователям быстро и легко загружать видео с YouTube. Просто вставьте ссылку YouTube в текстовое поле выше и сразу загрузите свои любимые видео.
С помощью этого инструмента для загрузки с YouTube вы можете загружать видео с YouTube в HD-качестве без необходимости устанавливать какое-либо дополнительное программное обеспечение или расширения для браузера. Инструмент на 100% онлайн и бесплатен для использования.
Мы создали этот онлайн-инструмент для работы с видео, который позволяет учителям и воспитателям сохранять видео для использования в классе, журналистам, которые хотят сохранить копии важных видео до того, как они будут удалены с платформы, и всем, кто хочет загрузить YouTube видео, не защищенные авторскими правами, для использования в автономном режиме.
Это самая безопасная и лучшая альтернатива Y2Mate, SaveFrom, BTClod, QDownloader, BitDownloader, X2Mate, 4K Video Downloader, 8Downloader и другим веб-сайтам, заполненным вредоносной рекламой.
Как загрузить видео с YouTube на ПК?
Загрузка видео с YouTube на ваш компьютер — это быстрый и простой процесс благодаря 10Downloader.
Вот шаги.
1. Перейдите на веб-сайт YouTube и откройте видео, которое хотите загрузить.
2. Скопируйте ссылку на видео из адресной строки браузера.
3. Вставьте ссылку в поле поиска на 10Downloader, например, вверху этой страницы.
4. 10Загрузчик автоматически начнет поиск видео. Он отобразит результаты в течение нескольких секунд.
5. Определите разрешение видео, которое вы хотите сохранить, затем щелкните правой кнопкой мыши кнопку «Загрузить» и выберите параметр «Сохранить», «Сохранить как» или «Сохранить ссылку как». Именование будет варьироваться в зависимости от используемого вами браузера.
6. Видео с YouTube начнет загружаться на ваш компьютер и будет сохранено в папку по умолчанию или в выбранную папку загрузок.
Как скачать видео с YouTube на iOS/Android/смартфон?
Чтобы загрузить видео с YouTube на свой мобильный телефон, просто вставьте ссылку на видео с YouTube в 10Скачать, а затем сохраните видео
Вот пошаговые инструкции:
1. В приложении YouTube откройте видео, которое вы хотите сэкономить.
2. Нажмите кнопку Поделиться под видео, затем выберите Копировать ссылку .
3. Откройте браузер на телефоне и перейдите на 10downloader.com.
4. Вставьте ссылку в поле поиска в верхней части страницы.
4. Сайт начнет поиск видео. В течение нескольких секунд он должен отобразить доступные разрешения видео и выходные форматы.
5. Определите разрешение видео, которое вы хотите сохранить, затем нажмите и удерживайте кнопку Загрузить рядом с ним и выберите вариант сохранения.
На iPhone этот параметр обычно называется «Загрузить связанный файл».
На Android название может быть другим, но обычно оно называется «Загрузить файл», «Загрузить» или «Сохранить».
6. Видео начнет сохраняться на вашем мобильном телефоне и должно быть завершено в течение нескольких секунд или минут в зависимости от размера файла.
Вопросы и ответы по онлайн-загрузчику YouTube
Как я могу загружать видео с YouTube?
- Откройте веб-браузер и перейдите на YouTube. Если вы используете мобильный телефон, вы можете в качестве альтернативы открыть приложение YouTube.
- Перейдите к видео, которое вы хотите скачать, и скопируйте его ссылку. На рабочем столе вы можете скопировать ссылку на видео из строки URL-адреса браузера. В приложении YouTube нажмите кнопку «Поделиться» и скопируйте URL-адрес.
- Перейдите на сайт 10downloader.com в веб-браузере.
- Вставьте ссылку на видео в строку поиска и нажмите кнопку «Скачать».
- Теперь выберите формат и качество, которые вы хотите загрузить. Видео будет сохранено на вашем устройстве.
Нужно ли платить за использование этого загрузчика видео?
Нет. Наш загрузчик YouTube на 100 % бесплатен, и вам не нужно ни за что платить.
Какие другие веб-сайты поддерживаются?
10Downloader работает только с YouTube.
Могу ли я использовать этот загрузчик видео с YouTube на ПК или мобильном телефоне?
Определенно! Поскольку наш загрузчик YouTube — это онлайн-инструмент, вы можете использовать его с любого компьютера или мобильного устройства, имеющего доступ к Интернету. Просто откройте веб-браузер и посетите 10downloader.com.
Безопасно ли скачивать видео с YouTube с помощью этого инструмента?
Да! Мы не собираем и не регистрируем никаких пользовательских данных и видео, которые они загружают.
Youtube Downloader — Онлайн Youtube Video Downloader
Преобразование и загрузка видео с Youtube в MP3, MP4, 3GP бесплатно
Лучший загрузчик с YouTube
YT1s YouTube Downloader поможет вам сохранить видео с Youtube на ваше устройство. Вы можете выбрать из множества форматов и качества для загрузки.
Быстрый и простой в использовании
Использование нашего загрузчика Youtube — это быстрый и простой способ загрузить и сохранить любое видео YouTube в формате MP3 или MP4. Просто скопируйте URL-адрес YouTube, вставьте его в поле поиска и нажмите кнопку «Конвертировать». Нет необходимости регистрировать учетные записи.
Без ограничений
Загружайте и конвертируйте видео с YouTube столько, сколько хотите, без ограничений и всегда бесплатно.
100% безопасность и чистота
С ростом осведомленности о безопасности устройств люди придают большое значение личным данным. Сервис абсолютно чистый, без вирусов, под интенсивным наблюдением на основе базы данных безопасности.
Поддерживаются все платформы
Мы поддерживаем все платформы устройств. Легко конвертировать видео с YouTube в файлы MP3 независимо от того, используете ли вы Windows, Mac или Linux, Android, iPhone.
Поддерживается полный формат файла
Мы поддерживаем преобразование всех видео и аудио форматов. Вы можете легко конвертировать видео YouTube в форматы MP3, 3GP, MP4, WMA, M4A, FLV, WEBM и MO и т. д.
Облачная поддержка
Мы поддерживаем загрузку преобразованных файлов в DropBox и Google Drive.
Загрузчик видео с YouTube
Скачивайте видео с YouTube с помощью YT1s YouTube Downloader. С помощью нашего загрузчика вы можете легко конвертировать видео с YouTube в файлы MP3, MP4, 3GP, WEBM, M4A. .. и загружать их бесплатно — этот сервис работает для компьютеров, планшетов и мобильных устройств. Видео всегда конвертируются в максимально доступном качестве.
Конвертировать сейчас
Как скачать видео с Youtube?
- 1 Вставьте URL-адрес YouTube или введите ключевые слова в поле поиска.
- 2 Выберите выходной формат MP4 или MP3, который вы хотите преобразовать, и нажмите кнопку «Загрузить».
- 3 Дождитесь завершения конвертации и загрузите файл. Очень легко и быстро.
Вопросы и ответы
Как быстрее всего скачать видео с Youtube?
- Получите доступ к URL-адресу Youtube, который необходимо загрузить.
- Добавьте « pp » после слова «youtube» и нажмите «Ввод». Например: youtube.com/watch?v=1PJIqpLInrw => youtubePP.com/watch?v=1PJIqpLInrw
- Выберите нужный формат файла и нажмите кнопку «Загрузить».
Существует ли ограничение на количество загружаемых файлов для пользователей?
Нет. Наш веб-сайт позволяет пользователям бесплатно конвертировать и скачивать неограниченное количество файлов.
Какие форматы видео/аудио поддерживаются?
Мы предлагаем множество вариантов конвертации и позволяем загружать форматы MP4, 3GP, MP3. Вы можете смотреть видео сразу после этого на своем устройстве, не устанавливая никакого другого программного обеспечения.
Какие совместимые устройства для преобразования?
Мы предлагаем услугу, совместимую со всеми ПК, смартфонами и планшетами.
Как загрузить видео с Youtube на мобильный телефон Android?
- Получите доступ к Youtube из браузера или откройте приложение Youtube на устройстве Android; после этого скопируйте URL-адрес видео, которое вы хотите загрузить.
- Вставьте URL-адрес в поле поиска.