Last active
November 12, 2016 05:05
-
-
Save artemklevtsov/c73b9053c9e71362c5348ae3e35cd42d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python3 | |
| # Импорт библиотек | |
| import sys | |
| from urllib.request import Request, urlopen | |
| from urllib.error import HTTPError | |
| from html.parser import HTMLParser | |
| import json | |
| class Parser(HTMLParser): | |
| """ | |
| Класс для получения URL видео на странице | |
| """ | |
| def __init__(self): | |
| super().__init__() | |
| self.result = None | |
| def handle_starttag(self, tag, attrs): | |
| if tag != "div": | |
| return | |
| d = dict(attrs) | |
| if "id" in d and d["id"] == "playerContainer": | |
| data = d["data-config"] | |
| self.result = json.loads(data)["video_url"] | |
| return | |
| def get_video_url(twit_id): | |
| """ | |
| Функция получает URL видео по ID твита | |
| """ | |
| # Формирование URL для запроса | |
| url = "https://twitter.com/i/videos/tweet/{}".format(twit_id) | |
| req = Request(url) | |
| # Получение исходного текста страницы | |
| try: | |
| resp = urlopen(req) | |
| except HTTPError as e: | |
| if e.code == 404: | |
| return "Данный твит не содержит видео или видео размещено на внешнем хостинге (Ошибка 404)." | |
| else: | |
| return "HTTP Error {}.".format(e.code) | |
| # Получение исходного кода страницы | |
| html = resp.read().decode() | |
| # Извлечение URL видео | |
| parser = Parser() | |
| parser.feed(html) | |
| video_url = parser.result | |
| parser.close() | |
| return video_url | |
| if __name__ == "__main__": | |
| # Чтение аргумента командной строки | |
| if len(sys.argv) < 2: | |
| urls = input("Введите URL твитов через пробел:\n").split() | |
| else: | |
| urls = sys.argv[1:] | |
| for url in set(urls): | |
| # Извлечение ID твита | |
| twit_id = url.split("/")[-1] | |
| # Получение URL видео | |
| url = get_video_url(twit_id) | |
| print(twit_id, url, sep = ": ") |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Вызов скрипта.
$ twitter-video.py \ https://twitter.com/bhaskar_vk/status/796851488085577730 \ https://twitter.com/RT_InoTV/status/797096643317338112 \ 797075010124922881 796851488085577730: https://pbs.twimg.com/tweet_video/Cw77tKUWgAERim_.mp4 797075010124922881: https://pbs.twimg.com/tweet_video/Cw_HdQ7XcAAnODC.mp4 797096643317338112: Данный твит не содержит видео или видео размещено на внешнем хостинге (Ошибка 404).