Загрузка...

VK Video Recover | Как восстановить утерянные видосы?

Тема в разделе Python создана пользователем Maehdakvan 28 янв 2024. (поднята 21 мар 2025) 568 просмотров

  1. Maehdakvan
    Maehdakvan Автор темы 28 янв 2024 70 14 ноя 2020
    Здаааровва, накалякал на Python:bsaber:

    Без лишних слов, показываю видосик, что да как:



    Код сего чуда:
    Python

    import customtkinter as ctk
    import tkinter.scrolledtext as ScrolledText
    import requests
    from threading import Thread
    from vkauth import VKAuth

    ctk.set_appearance_mode("Dark")
    ctk.set_default_color_theme("blue")

    class VideoRecoverApp(ctk.CTk):

    def __init__(self):
    super().__init__()

    self.title("VK Video Recover")
    self.geometry("800x600")

    self.create_widgets()

    def create_widgets(self):
    self.user_id_label = ctk.CTkLabel(self, text="User ID:")
    self.user_id_label.pack(padx=10, pady=(20, 0))
    self.user_id_entry = ctk.CTkEntry(self)
    self.user_id_entry.pack(padx=10, pady=(0, 20), fill="x")

    self.start_id_label = ctk.CTkLabel(self, text="Start ID:")
    self.start_id_label.pack(padx=10, pady=(0, 0))
    self.start_id_entry = ctk.CTkEntry(self)
    self.start_id_entry.pack(padx=10, pady=(0, 20), fill="x")

    self.end_id_label = ctk.CTkLabel(self, text="End ID:")
    self.end_id_label.pack(padx=10, pady=(0, 0))
    self.end_id_entry = ctk.CTkEntry(self)
    self.end_id_entry.pack(padx=10, pady=(0, 20), fill="x")

    self.log_file_label = ctk.CTkLabel(self, text="Log File Path:")
    self.log_file_label.pack(padx=10, pady=(0, 0))
    self.log_file_entry = ctk.CTkEntry(self)
    self.log_file_entry.pack(padx=10, pady=(0, 20), fill="x")

    self.log_panel = ScrolledText.ScrolledText(self, bg='#2b2b2b', fg='#e0e0e0', height=10, insertbackground='white')
    self.log_panel.pack(padx=10, pady=10, fill="both", expand=True)

    self.start_button = ctk.CTkButton(self, text="Start Recover", command=self.start_scraping)
    self.start_button.pack(pady=10)

    def log(self, message):
    self.log_panel.config(state='normal')
    self.log_panel.insert('end', message + '\n')
    self.log_panel.config(state='disabled')
    self.log_panel.yview('end')

    def start_scraping(self):
    user_id = int(self.user_id_entry.get())
    start_id = int(self.start_id_entry.get())
    end_id = int(self.end_id_entry.get())
    log_file_path = self.log_file_entry.get()

    self.log("Starting the recover process...")

    scraping_thread = Thread(
    target=self.scrape_videos,
    args=(user_id, start_id, end_id, log_file_path),
    daemon=True
    )
    scraping_thread.start()

    def scrape_videos(self, user_id, start_id, end_id, log_file_path):
    s = requests.Session()

    form_data = {
    'act': 'show',
    'al': '1',
    'autoplay': '1',
    'force_no_repeat': '1',
    'list': '',
    'module': 'video_other',
    'playlist_id': '',
    'screen': '0',
    'show_all_videos': '0',
    'show_next': '1',
    'video': '',
    'webcast': '0',
    }

    s.headers.update({
    'x-requested-with': 'XMLHttpRequest',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'referer': 'https://vk.com/video',
    })

    auth = VKAuth()

    cookies = auth.session.cookies
    s.cookies = auth.session.cookies

    for i in range(start_id, end_id):
    video_id = f'{user_id}_{i}'
    form_data['video'] = video_id
    r = s.post('https://vk.com/al_video.php?act=show', data=form_data)
    video_name = r.json()['payload'][1][0]

    if not 'недоступна' in video_name.lower() and not 'ошибка' in video_name.lower():
    log = f'{video_name}: [URL]https://vk.com/video{video_id}'[/URL]
    with open(log_file_path, 'a', encoding='utf-8') as f:
    f.write(log + '\n')
    self.log(log)

    if __name__ == "__main__":
    app = VideoRecoverApp()
    app.mainloop()
    Коротко ещё напишу что вообще происходит и как пользоваться

    User ID - это айдишник от кого видосы будем восстанавливать (чужие возможно тоже можно, там будет типо Доступ ограничен написано, их сможет просматривать только этот чел)

    Кстати возможно наверное даже взять айдишник сообщества, а не юзера, если так невероятно возникло, что вы потеряли видос который отсылали от вашего же сообщества (там нужно вводить отрицательный ид паблика типа -12712829)

    Start ID - это айдишник видео от которого мы будем отталкиваться, я взял своё самое старое видео которое знаю и убавил где-то 20, вы можете просто даже тупо загрузить любое видео и отнять от него 10000 если хотите
    End ID - это естественно айдишник последнего вашего видео, вы можете загрузить видос естественно и накалякать туда его айдишник ну или предположительно 100-200 добавить к какому-нибудь недавнему видосу, вряд ли же вы загрузили 100 за мелкий период


    Собственно и всё, он восстанавливает видосы как в сообщениях, так и во вкладке видео

    ВНИМАНИЕ!!!
    Я понимаю, что вероятно у кого-то появился интерес к этой теме и вы такие ОПА, а гоу также тока с фоточками или сообщениями
    К сожалению, увы и ах там сложнее
    Чтобы восстановить фотку нам нужно знать айдишник сообщения, где эта фотка была, то есть прогонов придётся делать очень много как по айдшиникам фотки так и по айдишникам сообщений, однако это сделать всё же возможно :)


    Кстати я на Go замутил такое же только для Документов, но там айди документов не привязывается к вашему аккаунту поэтому придётся делать запросов много, сто тысяч, миллион и возможно 20 миллионов если прошло лет 5
     
  2. ChatGPT
    ChatGPT 28 янв 2024 2253 14 мар 2023
    Maehdakvan Привет! Очень интересный код на Python! Он позволяет восстанавливать видео из VK. Как я понял, приложение принимает ID пользователя, начальный и конечный ID видео, а затем восстанавливает видео и записывает результат в файл. Очень полезная функция! Какие еще планы по развитию этого проекта?
     
Загрузка...
Top