Python script created to be used to retrieve sub-only and deleted videos from twitch.

Overview

VodRecovery

  • Created By: ItIckeYd
  • Initial Release: May 3rd, 2022
  • The script is used to retrieve sub-only and deleted videos from twitch.
  • Credits to daylamtayari - TwitchRecover repository helped with the logic to recover twitch videos.

Script Requirements

  • MUST have python installed.
  • MUST have additional packages installed (ie.. Requests)

Script Notes

  • The script CANNOT recover every single vod. The script can only recover vods that still exist on the twitch vod domains.
  • The script uses local time to return results therefore using values from somebody else's example will not always work.
  • Ensure to enter the seconds value as 00 when running the script as the script brute forces the seconds value automatically.

Analytical Sites

  • The following sites can be used to provide the information that the script requires:
  1. TwitchTracker.com
  2. Sullygnome.com
  3. Streamscharts.com

Optional IDE

  • Python has a few code editors that can be used which include the following:
  1. PyCharm
  2. Visual Studio Code

Additional Notes

  • If creating an issue for a problem that your experiencing please provide atleast 1 example.
  • If you are not getting results back from the script. Please try vods from other streamers, if the other streamers vods give you results then the original vods you were trying probably just don't exist.
Comments
  • What does this mean

    What does this mean

    I tried to open the RecoverVod.py and i wanna get the m3u8 link *(The VOD m3u8 link) I entered the streamer name and vod id and then show

    Enter VOD timestamp (YYYY-MM-DD HH:MM:SS):

    what should i enter it . Shouldn't it pop out a m3u8 link of the vod ? why should i enter the timestamp.

    and how can i solve it . thank you

    Question Completed 
    opened by peanutwu 40
  • Speeding up the process

    Speeding up the process

    Hey, just wanted to know if you are currently working on a method to speed up the script, particularly clip recovery? Currently it takes 12-15 minutes ish for a 30 minute long vod for it to crawl all the URLs and multi-instancing is not stable.

    Question Python Completed 
    opened by lol1337123123 19
  • Hello, I need some help. (Crosspost from TwitchRecovery, apologies, don't know which one you check more!)

    Hello, I need some help. (Crosspost from TwitchRecovery, apologies, don't know which one you check more!)

    Hello. First of all, thank you for the work on this project. I spent all night putting together how to run Python and make sure all of the features work. I finally, at 5:36 AM EST time, managed to get the thing to work. Hooray! Now I have this problem.

    Please choose an option: 1 Enter streamer name: Airwalker7 Enter vod id: https://twitchtracker.com/airwalker7/streams/39492915528 Enter VOD timestamp (YYYY-MM-DD HH:MM:SS): 2022-06-07 10:08:00 Vod is 0 days old. If the vod is older than 60 days chances of recovery are slim.

    No vods found using current domain list.

    On that particular example I used the time that was given to me by twitchtracker.com I understand that I am supposed to convert things to my timezone, but unless the late night is getting to me, I can't seem to figure out what that could possibly be. I have tried -4 hours, -5 hours, and even used a Google converter to confirm that I'm not insane. I have also tried to bring up other videos in case that one is deleted or something, including a video that is currently on Twitch itself. So.... please help me?

    Question Completed 
    opened by Nicejankyname 13
  • Bulk recover clips

    Bulk recover clips

    Hello i have a problem bulk recovering clips wont work but i dont know why, it crashes for me and if i run it trough powershell i can see the error it says :

    Traceback (most recent call last): File "G:\Rtrecover\NEU\NEU 27-06\VodRecovery-1.0.0.9\RecoverVod.py", line 420, in run_script() File "G:\Rtrecover\NEU\NEU 27-06\VodRecovery-1.0.0.9\RecoverVod.py", line 402, in run_script bulk_clip_recovery() File "G:\Rtrecover\NEU\NEU 27-06\VodRecovery-1.0.0.9\RecoverVod.py", line 334, in bulk_clip_recovery for vod, duration in parse_csv_file(file_path).items(): File "G:\Rtrecover\NEU\NEU 27-06\VodRecovery-1.0.0.9\RecoverVod.py", line 294, in parse_csv_file csv_file = open(file_path, "r+") PermissionError: [Errno 13] Permission denied: 'G:\Rtrecover\NEU\NEU 27-06\VodRecovery-1.0.0.9'


    on my second try i gave the program the exact path with the csv file name so :

    G:\Rtrecover\NEU\NEU 27-06\VodRecovery-1.0.0.9\xxtretertert.csv Traceback (most recent call last): File "G:\Rtrecover\NEU\NEU 27-06\VodRecovery-1.0.0.9\RecoverVod.py", line 420, in run_script() File "G:\Rtrecover\NEU\NEU 27-06\VodRecovery-1.0.0.9\RecoverVod.py", line 402, in run_script bulk_clip_recovery() File "G:\Rtrecover\NEU\NEU 27-06\VodRecovery-1.0.0.9\RecoverVod.py", line 334, in bulk_clip_recovery for vod, duration in parse_csv_file(file_path).items(): File "G:\Rtrecover\NEU\NEU 27-06\VodRecovery-1.0.0.9\RecoverVod.py", line 300, in parse_csv_file reps = ((int(final_string[1].strip()) * 60) + 2000) * 2 ValueError: invalid literal for int() with base 10: '"504"'

    can anyone help me or link his discord so we can chat better ?, i also tried running the python trough python idle with run module and also trough powershell

    Question Python Completed Clip 
    opened by ujrarozu 9
  • Instant crash and log empty

    Instant crash and log empty

    Hey, whenever I run the clip recovery and it finishes, i press "Y" on both prompts so it downloads the clips, but instead it instantly crashes and then I check the .txt and it's empty. Newest python version and pip installed.

    Halp

    Question User Solved 
    opened by lol1337123123 8
  • VLC

    VLC

    After I use the program and recover a link for the vod, i place it in the VLC (open network stream) area and press play but sometimes it plays the vod and other times it doesn't. How do i fix this?

    Question Completed Deleted Segments 
    opened by Scumm868 8
  • Option to select clip url format for all vods

    Option to select clip url format for all vods

    it's a bit tedious to select the format for every vod, something similar to the "Do you want to download the recovered clips (Y/N" option would be nice so u can just have it running in the background.

    Python Enhancement Completed Clip 
    opened by GuardToad 6
  • Having trouble recovering a vod

    Having trouble recovering a vod

    Hopefully someone can help me understand what im doing wrong here.

    Twitch link for vod I want recovered (not sure if this matters) Stream charts link for the vod (cant find it on other sites for some reason)

    This is how im entering it in to python:

    Please choose an option: 1 Enter streamer name: Enter vod id: Enter VOD timestamp (YYYY-MM-DD HH:MM:SS): 2022-07-07 23:45:00 Vod is 0 days old. If the vod is older than 60 days chances of recovery are slim.

    No vods found using current domain list.

    I believe im doing everything right. The timestamp listed on streamcharts says 03:45, converted to my local time it would be 23:45 (assuming im supposed to use 24 hour time?)

    Anyone have any ideas on what I could be doing wrong here?

    Question Vod Removed Completed 
    opened by wishingtile 6
  • Retrieve sub-only VOD

    Retrieve sub-only VOD

    I haven't been able to retrieve this vod with your python script. I don't know how to get the timestamp.

    Also, I saw that you're active in the TwitchRecover project. I have forked that quite some time ago and fixed some regexp related bugs (then rewrote most of the program to suite my needs) and it worked excellently. Or it used to. Today, after a long time, I tried to retrieve this sub-only vod and it doesn't work. My guess is that the client-id used in the program has been deactivated or something. Any idea?

    Question Completed 
    opened by 3N4N 5
  • problem with the running the script

    problem with the running the script

    I have an issue with running the script here is the example I tested https://www.twitch.tv/videos/1309586313 and here is my timezone : W. Central Africa Standard Time (UTC+01:00) and I also downloaded the CSV file from here : https://sullygnome.com/channel/panterochka_/streams so I open RecoverVod.py and then Please choose an option: 1 Enter streamer name: Panterochka_ Enter vod id: 39358041639 Enter VOD timestamp (YYYY-MM-DD HH:MM:SS): 2022-05-26 16:21:00 and here's what I get : Vod is 1 days old. If the vod is older then 60 days chances of recovery are slim. No vods found using current domain list. what did I do wrong

    Question Completed 
    opened by ceberios 5
  • unable to find the vod

    unable to find the vod

    i have tried everything

    Please choose an option: 1 Enter streamer name: trasdaa Enter vod id: https://streamscharts.com/channels/trasdaa/streams/41016817707 Enter VOD timestamp (YYYY-MM-DD HH:MM:SS): 2022-07-21 06:55:00 Vod is 0 days old. If the vod is older than 60 days chances of recovery are slim.

    the timestamp that was posted on streamcharts said 6:55 pm but as I use GMT timezone (British) I have no clue how to convert to my time to find the vod the date is right, so is everything else, but the time I just cannot figure out. wondering if anybody more experienced could try and find the vod for me or help in any way

    Much Appreciated :}

    Question Vod Removed Completed 
    opened by haz-d05 4
  • Is it possible for some twitch channels to not provide any VODs recoverable at all

    Is it possible for some twitch channels to not provide any VODs recoverable at all

    To start with, your script works really well and I manage to get a lot of VODs under 60 days old which I thank you a lot for. However, for some unknown reasons, I can't get any VODs from specific twitch channels even if I use your script the day after the livestream happened.

    This channel for example : https://www.twitch.tv/nomadi_

    Since it works perfectly well with most of the VODs I try to get, I don't know if the error comes from me or if twitch simply doesn't keep them for whatever reasons.

    Maybe you can help on this. Thank you in advance.

    Question 
    opened by neopsan0605 1
  • Clip Recovery Possible Improvement

    Clip Recovery Possible Improvement

    After doing some basic research based on a number of clips I already had in my personal archive, Based on a stream from 2017 where I recovered clips from both Option 1&3 and, A small test I did just recently suggests that the Clip Recovery Option no,3 aka Alternate might only be clips created after the stream is moved to the archive and the ID it bears within the filename is that of the video_id usually found as twitch.tv/videos/<video_id> instead of using the stream_id which seems to be clips created while live.

    My small test was done using a shroud's stream from yesterday where I created a clip today from the archive https://clips-media-assets2.twitch.tv/vod-1574370130-offset-15848.mp4 and, got this clip I know was made while he was live based of the time from Twitch Tracker https://clips-media-assets2.twitch.tv/41180025483-offset-15222.mp4

    Here is a Twitch API Request to verify all of this

    twitch api get videos -q id=1574370130
    {
      "data": [
        {
          "created_at": "2022-08-27T19:35:44Z",
          "description": "",
          "duration": "8h57m30s",
          "id": "1574370130",
          "language": "en",
          "muted_segments": null,
          "published_at": "2022-08-27T19:35:44Z",
          "stream_id": "41180025483",
          "thumbnail_url": "https://static-cdn.jtvnw.net/cf_vods/d2nvs31859zcd8/24947ae81e2d72634fd8_shroud_41180025483_1661628939//thumb/thumb0-%{width}x%{height}.jpg",
          "title": "I lied, duos with tarik",
          "type": "archive",
          "url": "https://www.twitch.tv/videos/1574370130",
          "user_id": "37402112",
          "user_login": "shroud",
          "user_name": "shroud",
          "view_count": 797643,
          "viewable": "public"
        }
      ],
      "pagination": {
        "cursor": ""
      }
    }
    
    Documentation Python Enhancement Clip 
    opened by ambhaiji 11
  • WinError 10055 problem happened. how to fix it?

    WinError 10055 problem happened. how to fix it?

    requests.exceptions.ConnectionError: HTTPSConnectionPool(host='vod-metro.twitch.tv', port=443): Max retries exceeded with url: /023b8f133545fb8cbbd1_winter_28270_39489925943_1657888921/chunked/index-dvr.m3u8 (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000022846AC05E0>: Failed to establish a new connection: [WinError 10055]

    Question Python 
    opened by qa159123 0
  • Option to download only valid segments of VOD

    Option to download only valid segments of VOD

    Recently I came across for the first time a VOD that is still available but certain segments are missing.

    image

    I tried downloading the m3u8 with yt-dlp but that ended up failing and I couldn't play it back in my media player either. Would you consider adding support to build your own m3u8 file from only the valid segments?

    For example if the user opts to check for valid segments and there are segments that aren't valid, prompt the user to create and save a new m3u8 with only the valid links.

    Python Enhancement 
    opened by Infinitay 12
  • Domains

    Domains

    Recently have been looking into where the domains come from and how many currently exist. I've been able to find quite a few domains that have similarities from the domains that already exists.

    I have not been able to find any vods that use the new domains as of yet but will continue to document them as I find them.

    ### Current List

    1. https://vod-secure.twitch.tv/
    2. https://vod-metro.twitch.tv/
    3. https://vod-pop-secure.twitch.tv/
    4. https://d2e2de1etea730.cloudfront.net/
    5. https://dqrpb9wgowsf5.cloudfront.net/
    6. https://ds0h3roq6wcgc.cloudfront.net/
    7. https://d2nvs31859zcd8.cloudfront.net/
    8. https://d2aba1wr3818hz.cloudfront.net/
    9. https://d3c27h4odz752x.cloudfront.net/
    10. https://dgeft87wbj63p.cloudfront.net/
    11. https://d1m7jfoe9zdc1j.cloudfront.net/
    12. https://d3vd9lfkzbru3h.cloudfront.net/
    13. https://d2vjef5jvl6bfs.cloudfront.net/
    14. https://d1ymi26ma8va5x.cloudfront.net/
    15. https://d1mhjrowxxagfy.cloudfront.net/
    16. https://ddacn6pr5v0tl.cloudfront.net/
    17. https://d3aqoihi2n8ty8.cloudfront.net/

    ### Recently Found

    1. https://d1xhnb4ptk05mw.cloudfront.net/
    2. https://d6tizftlrpuof.cloudfront.net/
    3. https://d36nr0u3xmc4mm.cloudfront.net/
    4. https://d1oca24q5dwo6d.cloudfront.net/
    5. https://d2um2qdswy1tb0.cloudfront.net/
    6. https://d1w2poirtb3as9.cloudfront.net/
    7. https://d6d4ismr40iw.cloudfront.net/
    8. https://d1g1f25tn8m2e6.cloudfront.net/
    9. https://dykkng5hnh52u.cloudfront.net/
    10. https://d2dylwb3shzel1.cloudfront.net/
    11. https://d2xmjdvx03ij56.cloudfront.net/
    Python On-Going Domains 
    opened by ItIckeYd 11
Releases(1.0.0.9)
  • 1.0.0.9(Jun 9, 2022)

    • Speed of recovery for vods/clips increased
    • Standalone option for unmuting vods
    • Standalone option for checking segments
    • Fixed issues with generated unmuted file
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0.8-Full-Release(May 28, 2022)

    1. Vod Recovery
    • Recover Vod (Not published, Sub-Only, Normal)
    • Check if muted
    • Unmute vod
    • Check available segments
    1. Recover all clips for a particular stream
    • Download recovered clips if wanted.
    1. Recover random clips of a given stream
    2. Recover clips from up to 100 vods using CSV download from sullygnome.
    • Download all recovered clips if wanted.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0.8-Beta(May 5, 2022)

    Stable Release v1.0.0.8 - Beta

    1. Retrieve sub-only vods
    2. Retrieve deleted vods - (limited to twitch's deletion process)
    3. Unmute vods (m3u8 files)
    4. Check random segments (.ts files) to see if the m3u8 file is fully playable.
    Source code(tar.gz)
    Source code(zip)
Owner
null
It is a github directory that covers projects such as sqlite3 database usage, operation and recovery of deleted data using Python language.

SQLite(3) It is a github directory that covers projects such as sqlite3 database usage, operation and recovery of deleted data using Python language.

Abdulkadir Güngör 4 Sep 8, 2022
File Versioning System with hash comparison, deduplication and data storage to create unlinked states that can be deleted

FVS File Versioning System with hash comparison and data storage to create unlinked states that can be deleted ⚠️ This is currently a Beta. Why FVS? T

Mirko Brombin 7 Jul 29, 2022
Through this project you can automate making videos from reddit and uploading them on YouTube. Currently, it only supports images but we hope to bring the ability to combine videos as well in the future.

YouTube-Shorts-Creator Through this project you can automate making videos from reddit and uploading them on YouTube. Currently, it only supports imag

Mohammed Fahad Tabrez Sheikh 2 Sep 22, 2022
A CLI tool to watch Twitch live streams and videos with the help of mpv and youtube-dl.

cwitch A CLI tool for watching Twitch live streams and videos with the help of mpv and youtube-dl. Features Watch one or more video with the ID. Play

zer0-x 2 Sep 1, 2022
ADA is a microservice created to retrieve analytics metrics from an Airflow database instance.

Airflow DAG Analytics ADA is a microservice created to retrieve key analytics metrics for task and DAG level from your Airflow database instance. High

International Business Machines 19 Sep 19, 2022
This program used to detect open in circuits, i.e. floating nets in sub circuits.

This program used to detect open in circuits, i.e. floating nets in subcircuits. How to run it? please add your netlist text file in the same code pat

null 1 May 8, 2022
A Python Script to copy the largest file(s) from a folder with optional sub-folders into a destination folder.

probable-system Python Script to copy the largest file(s) from a folder with optional sub-folders into a destination folder. You can choose the larges

Kevin Hoang 1 Jul 1, 2022
Hekatomb is a hacking script that connects to LDAP directory to retrieve all computers and users informations.

Hekatomb is a hacking script that connects to LDAP directory to retrieve all computers and users informations. Then it will download all DPAPI blob of all users from all computers and uses Domain backup keys to decrypt them.

Processus Thief 177 Oct 1, 2022
A script to connect twitch chat to valorant in-game chat

valorant-ingame-twitch-chat.py A script who shows your Twitch chat, private in your party chat! Console: Chat: Game: Why? Sometimes what you need is j

Wender 7 Sep 25, 2022
Highly reliable ransomware created in 100% python, fore Educational Purposes Only

Cookies Ransomware Highly reliable, ransomware All Commands » Report Bug · Request Feature · Send a Pull Request ?? 〢 Content ?? ・About ✅ ・Requirement

Cookies Services 1 Sep 22, 2022
Highly reliable botnet created in 100% python for Educational Purposes Only

ISO Highly reliable, botnet All Commands » Report Bug · Request Feature · Send a Pull Request ?? 〢 Content ?? ・About ⚙️ ・Commands ✅ ・Requirements ?? ・

Cookies Services 1 Sep 22, 2022
Highly reliable botnet created in 100% python for Educational Purposes Only

ISO Highly reliable, botnet All Commands » Report Bug · Request Feature · Send a Pull Request ?? 〢 Content ?? ・About ⚙️ ・Commands ✅ ・Requirements ?? ・

Cookies Services 2 Sep 25, 2022
Automatically downloads Youtube videos and edits them into trending tiktok "styled" videos.

AutoVideoCreator Automatically downloads Youtube videos and edits them into trending tiktok "styled" videos. Created by EvilWumpus Video Example video

null 3 Aug 26, 2022
It's a simple script to generate a mush on code forces, the script will accept the public problem urls only or polygon problems.

Codeforces-Sheet-Generator It's a simple script to generate a mushup on code forces, the script will accept the public problem urls only or polygon pr

Ahmed Hossam 10 Aug 2, 2022
Python Client for the Faye Pub-Sub messaging server

FayePython Python Client for the Faye Pub-Sub messaging server Supported transports: websocket Installation pip install Fay

Ren3104 1 Aug 7, 2022
File e dettagli in merito al corso "Hard Python", presentato su Twitch da Enkk e StudyTme. Corso introduttivo a python mirato al tema dell'NLP e analisi testuale.

Hard Python File e dettagli in merito al corso "Hard Python", presentato su Twitch da Enkk e StudyTme. Le lezioni sono ricaricate su questo canale You

Enrico Mensa 71 Sep 25, 2022
Ensemble Knowledge Guided Sub-network Search and Fine-tuning for Filter Pruning

Ensemble Knowledge Guided Sub-network Search and Fine-tuning for Filter Pruning This repository is official Tensorflow implementation of paper: Ensemb

Seunghyun Lee 10 Aug 16, 2022
This repository is an attempt at implementing the paper Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network using PyTorch.

ESPCN This repository is implementation of the "Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Ne

Gaurav 4 Aug 27, 2022
A praw based REDDIT bot which searches for 'pyq' as a keyword in the reddit sub : r/JEENEETards and replies to the user with a random JEE past year question.

JEEPYQREPLYBOT A praw based REDDIT bot which searches for 'pyq' as a keyword in the reddit sub : r/JEENEETards and replies to the user with a random J

null 2 Sep 30, 2022