NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Reddit Video Downloader // @author Berk "SAS41" Alyamach // @homepage https://github.com/sas41/ // @homepageURL https://github.com/sas41/ // @description A script to that allows you to download videos hosted on Reddit by pressing Ctrl+S or Meta+S on the comments section. // @icon https://github.com/sas41/RedditVideoDownloader/blob/master/icons/RVD_icon_32.png?raw=true // @iconURL https://github.com/sas41/RedditVideoDownloader/blob/master/icons/RVD_icon_32.png?raw=true // @icon64URL https://github.com/sas41/RedditVideoDownloader/blob/master/icons/RVD_icon_64.png?raw=true // @copyright 2018, Berk (sas41) Alyamach - https://github.com/sas41/ // @license MIT // @grant none // @contributionAmount €1.00 // @contributionURL https://www.paypal.me/sas41/1 // @namespace reddit // @include *://*reddit.com/r/*/*/*/* // @downloadURL https://raw.githubusercontent.com/sas41/RedditVideoDownloader/master/RedditVideoDownloader.js // @updateURL https://raw.githubusercontent.com/sas41/RedditVideoDownloader/master/RedditVideoDownloader.js // @supportURL https://github.com/sas41/RedditVideoDownloader/issues // @version 1.0.5 // ==/UserScript== // ==OpenUserJS== // @author sas41 // @contributionAmount €1.00 // @contributionURL https://www.paypal.me/sas41/1 // ==/OpenUserJS== var jsonLink = document.location.href.split('?')[0] + '.json'; var downloadLink = ''; function getJSON(url) { var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = 'json'; xhr.onload = function () { var status = xhr.status; if (status === 200) { var response = xhr.response; if (!response[0].data.children[0].data.secure_media.reddit_video.is_gif) { if (confirm('Unfortunately, Reddit doesn\'t support saving of audio along with the video, Download without audio?')) { downloadLink = response[0].data.children[0].data.secure_media.reddit_video.fallback_url; downloadURI(downloadLink, ''); } } else { downloadLink = response[0].data.children[0].data.secure_media.reddit_video.fallback_url; downloadURI(downloadLink, ''); } } else { alert('Sorry, Download Failed'); } }; xhr.send(); } function downloadURI(url, n) { var save = document.createElement('a'); save.href = url; save.download = n || url; var event = document.createEvent("MouseEvents"); event.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); save.dispatchEvent(event); try { document.body.removeChild(save); } catch (err) {} } document.addEventListener('keydown', (event) => { if (event.ctrlKey || event.metaKey) { if (event.key === 's' || event.key === 'S') { event.preventDefault(); getJSON(jsonLink); } } });