Verybad

Скачивание видео

Feb 2nd, 2025 (edited)
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.28 KB | None | 0 0
  1. #!/usr/bin/python
  2. import instaloader
  3. import sys
  4. import os
  5. import yt_dlp
  6. import requests
  7. from bs4 import BeautifulSoup
  8.  
  9. # Функция для скачивания Instagram постов
  10. def download_instagram_post(post_url):
  11. loader = instaloader.Instaloader()
  12. shortcode = post_url.split("/")[-2]
  13. post = instaloader.Post.from_shortcode(loader.context, shortcode)
  14. download_dir = 'in_dl'
  15. os.makedirs(download_dir, exist_ok=True)
  16. if post.typename == "GraphVideo":
  17. print(f"Скачиваем видео: {post.video_url}")
  18. loader.download_post(post, target=download_dir)
  19. elif post.typename == "GraphImage":
  20. print(f"Скачиваем изображение: {post.url}")
  21. loader.download_post(post, target=download_dir)
  22. elif post.typename == "GraphSidecar":
  23. print("Скачиваем все медиа из карусели (sidecar).")
  24. loader.download_post(post, target=download_dir)
  25. else:
  26. print("Этот тип поста не поддерживается.")
  27. # Удаляем ненужные файлы
  28. for filename in os.listdir(download_dir):
  29. if filename.endswith('.json.xz') or filename.endswith('.txt'):
  30. file_path = os.path.join(download_dir, filename)
  31. os.remove(file_path)
  32. print(f"Удален файл: {file_path}")
  33.  
  34. # Функция для скачивания YouTube видео
  35. def download_youtube_video(video_url):
  36. download_dir = 'yt_dl'
  37. os.makedirs(download_dir, exist_ok=True)
  38. ydl_opts = {
  39. 'format': 'bestvideo+bestaudio/best', # Скачиваем лучшее видео и аудио
  40. 'outtmpl': os.path.join(download_dir, '%(title)s.%(ext)s'),
  41. 'merge_output_format': 'mkv', # Объединяем в формате MKV
  42. }
  43. try:
  44. with yt_dlp.YoutubeDL(ydl_opts) as ydl:
  45. print(f"Скачиваем видео: {video_url}")
  46. ydl.download([video_url])
  47. print("Скачивание завершено!")
  48. except Exception as e:
  49. print(f"Произошла ошибка при скачивании: {e}")
  50.  
  51. # Функция для скачивания Rutube видео
  52. def download_rutube_video(video_url):
  53. download_dir = 'ru_dl'
  54. os.makedirs(download_dir, exist_ok=True)
  55. ydl_opts = {
  56. 'format': 'bestvideo+bestaudio/best', # Скачиваем лучшее видео и аудио
  57. 'outtmpl': os.path.join(download_dir, '%(title)s.%(ext)s'),
  58. 'merge_output_format': 'mkv', # Объединяем в формате MKV
  59. }
  60. try:
  61. with yt_dlp.YoutubeDL(ydl_opts) as ydl:
  62. print(f"Скачиваем видео с Rutube: {video_url}")
  63. ydl.download([video_url])
  64. print("Скачивание завершено!")
  65. except Exception as e:
  66. print(f"Произошла ошибка при скачивании: {e}")
  67.  
  68. # Функция для скачивания VK видео
  69. def download_vk_video(video_url):
  70. download_dir = 'vk_dl'
  71. os.makedirs(download_dir, exist_ok=True)
  72. ydl_opts = {
  73. 'format': 'bestvideo+bestaudio/best', # Скачиваем лучшее видео и аудио
  74. 'outtmpl': os.path.join(download_dir, '%(title)s.%(ext)s'),
  75. 'merge_output_format': 'mkv', # Объединяем в формате MKV
  76. }
  77. try:
  78. with yt_dlp.YoutubeDL(ydl_opts) as ydl:
  79. print(f"Скачиваем видео с VK: {video_url}")
  80. ydl.download([video_url])
  81. print("Скачивание завершено!")
  82. except Exception as e:
  83. print(f"Произошла ошибка при скачивании: {e}")
  84.  
  85. # Новая функция для скачивания Zoom контента
  86. def download_zoom_content(zoom_url):
  87. print(f"Обработка Zoom URL: {zoom_url}")
  88. try:
  89. response = requests.get(zoom_url)
  90. if response.status_code == 200:
  91. download_dir = 'zoom_dl'
  92. os.makedirs(download_dir, exist_ok=True)
  93. file_name = os.path.join(download_dir, "zoom_recording.mp4")
  94. with open(file_name, 'wb') as f:
  95. f.write(response.content)
  96. print(f"Запись Zoom успешно скачана: {file_name}")
  97. else:
  98. print("Не удалось получить доступ к записи Zoom. Возможно, требуется авторизация.")
  99. except Exception as e:
  100. print(f"Произошла ошибка при скачивании Zoom: {e}")
  101.  
  102. # Новая функция для скачивания Pikabu контента
  103. def download_pikabu_content(pikabu_url):
  104. print(f"Обработка Pikabu URL: {pikabu_url}")
  105. try:
  106. # Получаем HTML-код страницы
  107. response = requests.get(pikabu_url)
  108. if response.status_code != 200:
  109. print("Не удалось получить доступ к странице Pikabu.")
  110. return
  111.  
  112. # Парсим HTML с помощью BeautifulSoup
  113. soup = BeautifulSoup(response.text, 'html.parser')
  114. download_dir = 'pikabu_dl'
  115. os.makedirs(download_dir, exist_ok=True)
  116.  
  117. # Ищем все элементы с атрибутами data-webm или data-mp4
  118. video_tags = soup.find_all(attrs={"data-webm": True}) + soup.find_all(attrs={"data-mp4": True})
  119. if not video_tags:
  120. print("Видео на странице не найдено.")
  121. return
  122.  
  123. # Скачиваем все найденные видео
  124. for idx, tag in enumerate(video_tags):
  125. video_url = tag.get('data-webm') or tag.get('data-mp4')
  126. if not video_url:
  127. continue
  128.  
  129. print(f"Найдено видео: {video_url}")
  130. video_response = requests.get(video_url)
  131. if video_response.status_code == 200:
  132. video_name = os.path.join(download_dir, f"video_{idx + 1}.webm")
  133. with open(video_name, 'wb') as f:
  134. f.write(video_response.content)
  135. print(f"Скачано видео: {video_name}")
  136. else:
  137. print(f"Не удалось скачать видео: {video_url}")
  138.  
  139. print("Скачивание с Pikabu завершено!")
  140. except Exception as e:
  141. print(f"Произошла ошибка при скачивании с Pikabu: {e}")
  142.  
  143.  
  144. # Основной блок программы
  145. if __name__ == "__main__":
  146. if len(sys.argv) != 2:
  147. print("Использование: python download_video.py <URL_поста>")
  148. sys.exit(1)
  149.  
  150. url = sys.argv[1]
  151.  
  152. if "instagram.com" in url:
  153. download_instagram_post(url)
  154. elif "youtube.com" in url or "youtu.be" in url:
  155. download_youtube_video(url)
  156. elif "rutube.ru" in url:
  157. download_rutube_video(url)
  158. elif "vk.com" in url:
  159. download_vk_video(url)
  160. elif "zoom.us" in url:
  161. download_zoom_content(url)
  162. elif "pikabu.ru" in url:
  163. download_pikabu_content(url)
  164. else:
  165. print("Поддерживаются только URL Instagram, YouTube, Rutube, VK, Zoom и Pikabu.")
  166.  
Advertisement
Add Comment
Please, Sign In to add comment