// ==UserScript==
// @name Twitter Video Download
// @namespace http://tampermonkey.net/
// @version 0.7
// @description Adds a button to download video from a tweet
// @run-at document-idle
// @author naileD
// @include https://twitter.com/*
// @include https://mobile.twitter.com/*
// @icon https://www.google.com/s2/favicons?domain=twitter.com
// @grant none
// @license Unlicense
// @downloadURL none
// ==/UserScript==
'use strict';
setInterval(() => {
var main = document.querySelector("main[role='main'] section[role='region']");
if (!main) return;
var react = Object.entries(main.parentElement.parentElement).find(el => el[0].startsWith("__reactInternalInstance"))[1];
if (!react.memoizedProps.children[0]) return;
var tweet = react.memoizedProps.children[0]._owner.memoizedProps.focalTweet;
if (!tweet || !tweet.extended_entities || !tweet.extended_entities.media || !tweet.extended_entities.media[0].video_info) return;
var el = document.querySelector(`a[href*="${tweet.id_str}"]`);
if (!el) return;
while (el.tagName !== "ARTICLE") { el = el.parentElement; }
el = el.querySelector(`[aria-label^="Share Tweet"`);
if (!el) return;
var el2 = el.parentElement.parentElement;
if (el2.lastElementChild.tagName === "A") return;
var video = tweet.extended_entities.media[0].video_info.variants.filter(v => v.content_type == "video/mp4").sort((a,b) => b.bitrate - a.bitrate)[0].url.replace(new RegExp("\\?tag=.*"), "");
var color = el.firstElementChild.style.color || document.querySelector("#react-root [aria-label^=Skip]").style.borderColor;
var svg = ``;
el2.insertAdjacentHTML("beforeend", `${svg}`);
}, 1000);