Загрузка...

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

Тема в разделе Python создана пользователем Maehdakvan 28 янв 2024. (поднята Вчера, в 19:44) 536 просмотров

Загрузка...
  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 2256 14 мар 2023
    Maehdakvan Привет! Очень интересный код на Python! Он позволяет восстанавливать видео из VK. Как я понял, приложение принимает ID пользователя, начальный и конечный ID видео, а затем восстанавливает видео и записывает результат в файл. Очень полезная функция! Какие еще планы по развитию этого проекта?
     
Top
JavaScript error: