Greasy Fork

Greasy Fork is available in English.

全能媒体工作台 | 视频下载、URL地址提取、点击一键播放、万能网页视频播放器

提取视频直链、一键下载媒体文件,并在极简悬浮窗中实现一键播放。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name           Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:af        Universal Media Pro Toolkit | Video aflaai, URL onttrek, speel
// @name:am        Universal Media Pro Toolkit | ቪዲዮ አውርድ፣ URL ማውጣት፣ መጫወት
// @name:ar        Universal Media Pro Toolkit | تحميل الفيديو، استخراج URL، تشغيل
// @name:as        Universal Media Pro Toolkit | ভিডিঅ' ডাউনলোড, ইউআৰএল নিষ্কাশন, প্লে
// @name:az        Universal Media Pro Toolkit | Video Yükləmə, URL Çıxarma, Oyna
// @name:be        Universal Media Pro Toolkit | Спампаваць відэа, выняць URL, гуляць
// @name:bg        Universal Media Pro Toolkit | Изтегляне на видео, извличане на URL адрес, възпроизвеждане
// @name:bn        Universal Media Pro Toolkit | ভিডিও ডাউনলোড, ইউআরএল নিষ্কাশন, প্লে
// @name:bs        Universal Media Pro Toolkit | Preuzimanje videa, ekstrakcija URL-a, reprodukcija
// @name:ca        Universal Media Pro Toolkit | Baixada de vídeo, extracció d'URL, reproducció
// @name:cs        Universal Media Pro Toolkit | Stahování videa, extrakce URL, přehrávání
// @name:da        Universal Media Pro Toolkit | Videooverførsel, URL-ekstraktion, afspil
// @name:de        Universal Media Pro Toolkit | Video-Download, URL-Extraktion, Wiedergabe
// @name:dz        Universal Media Pro Toolkit | བརྙན་ལམ་ཕབ་ལེན། URL ཕྱིར་འདྲེན། གཏང་ནི།
// @name:el        Universal Media Pro Toolkit | Λήψη βίντεο, εξαγωγή URL, αναπαραγωγή
// @name:en        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:en-GB     Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:en-US     Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:eo        Universal Media Pro Toolkit | Video Elŝuto, URL Ekstraktado, Ludu
// @name:es        Universal Media Pro Toolkit | Descarga de video, extracción de URL, reproducción
// @name:es-419    Universal Media Pro Toolkit | Descarga de video, extracción de URL, reproducción
// @name:es-US     Universal Media Pro Toolkit | Descarga de video, extracción de URL, reproducción
// @name:et        Universal Media Pro Toolkit | Video allalaadimine, URL-i eraldamine, esitamine
// @name:eu        Universal Media Pro Toolkit | Bideoa deskargatu, URL erauzi, erreproduzitu
// @name:fa        Universal Media Pro Toolkit | دانلود ویدیو، استخراج URL، پخش
// @name:fi        Universal Media Pro Toolkit | Videon lataus, URL-osoitteen haku, toisto
// @name:fil       Universal Media Pro Toolkit | Video Download, Extract URL, Play
// @name:fr        Universal Media Pro Toolkit | Téléchargement vidéo, extraction d'URL, lecture
// @name:fr-CA     Universal Media Pro Toolkit | Téléchargement vidéo, extraction d'URL, lecture
// @name:ga        Universal Media Pro Toolkit | Íoslódáil Fíсеáin, Sliocht URL, Seinn
// @name:gl        Universal Media Pro Toolkit | Descarga de vídeos, extracción de URL, reprodución
// @name:gn        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:gu        Universal Media Pro Toolkit | વિડિઓ ડાઉનલોડ, URL નિષ્કર્ષણ, પ્લે
// @name:ha        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:hi        Universal Media Pro Toolkit | वीडियो डाउनलोड, यूआरएल निष्कर्षण, प्ले
// @name:hr        Universal Media Pro Toolkit | Preuzimanje videa, ekstrakcija URL-a, reprodukcija
// @name:hu        Universal Media Pro Toolkit | Videó letöltése, URL-kinyerés, lejátszás
// @name:hy        Universal Media Pro Toolkit | Տեսանյութերի ներբեռնում, URL-ի արդյունահանում, նվագարկում
// @name:id        Universal Media Pro Toolkit | Unduh Video, Ekstrak URL, Putar
// @name:ig        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:is        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:it        Universal Media Pro Toolkit | Download video, estrazione URL, riproduzione
// @name:iw        Universal Media Pro Toolkit | הורדת וידאו, חילוץ URL, הפעלה
// @name:ja        全能メディア工作台 | ビデオダウンロード、URL抽出、ワンクリック再生
// @name:jv        Universal Media Pro Toolkit | Ngundhuh Video, Ekstrak URL, Putar
// @name:ka        Universal Media Pro Toolkit | ვიდეოს ჩამოტვირთვა, URL-ის ამოღება, დაკვრა
// @name:kk        Universal Media Pro Toolkit | Бейне жүктеу, URL шығару, ойнату
// @name:km        Universal Media Pro Toolkit | ទាញយកវីដេអូ, ទាញយក URL, ចាក់
// @name:kn        Universal Media Pro Toolkit | ವೀಡಿಯೊ ಡೌನ್‌ಲೋಡ್, URL ಹೊರತೆಗೆಯುವಿಕೆ, ಪ್ಲೇ
// @name:ko        전능 미디어 워크스테이션 | 비디오 다운로드, URL 추출, 원클릭 재생
// @name:ky        Universal Media Pro Toolkit | Видео жүктөө, URL чыгаруу, ойнотуу
// @name:lo        Universal Media Pro Toolkit | ດາວໂຫລດວິດີໂອ, ແຍກ URL, ຫຼິ້ນ
// @name:lt        Universal Media Pro Toolkit | Vaizdo įrašų atsისიუნტიymas, URL išgavimas, atkūrimas
// @name:lv        Universal Media Pro Toolkit | Video lejupielāde, URL ieguve, atskaņošana
// @name:mg        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:mk        Universal Media Pro Toolkit | Преземање видео, екстракција на URL, пуштање
// @name:ml        Universal Media Pro Toolkit | വീഡിയോ ডাউনলোড, ইউআরএল নিষ্কাশന, প্লে
// @name:mn        Universal Media Pro Toolkit | Видео татах, URL задлах, тоглуулах
// @name:mr        Universal Media Pro Toolkit | व्हिडिओ डाउनलोड, URL एक्स्ट्रॅक्शन, प्ले
// @name:ms        Universal Media Pro Toolkit | Muat Turun Video, Ekstrak URL, Putar
// @name:mt        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:my        Universal Media Pro Toolkit | ဗီဒီယိုဒေါင်းလုဒ်၊ URL ထုတ်ယူခြင်း၊ ဖွင့်ခြင်း
// @name:ne        Universal Media Pro Toolkit | भिडियो डाउनलोड, URL निकासी, प्ले
// @name:nl        Universal Media Pro Toolkit | Video downloaden, URL extraheren, afspelen
// @name:no        Universal Media Pro Toolkit | Videonedlasting, URL-ekstraksjon, spill av
// @name:om        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:or        Universal Media Pro Toolkit | ଭିଡିଓ ଡାଉନଲୋଡ୍, URL ନିଷ୍କର୍ଷଣ, ପ୍ଲେ
// @name:pa        Universal Media Pro Toolkit | ਵੀਡੀਓ ਡਾਊਨਲੋਡ, URL ਐਕਸਟਰੈਕਸ਼ਨ, ਪਲੇ
// @name:pl        Universal Media Pro Toolkit | Pobieranie wideo, ekstrakcja URL, odtwarzanie
// @name:ps        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:pt        Universal Media Pro Toolkit | Download de vídeo, extração de URL, reprodução
// @name:pt-BR     Universal Media Pro Toolkit | Download de vídeo, extração de URL, reprodução
// @name:pt-PT     Universal Media Pro Toolkit | Download de vídeo, extração de URL, reprodução
// @name:ro        Universal Media Pro Toolkit | Descărcare video, extracție URL, redare
// @name:ru        Universal Media Pro Toolkit | Скачивание видео, извлечение URL, воспроизведение
// @name:rw        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:si        Universal Media Pro Toolkit | වීඩියෝ බාගත කිරීම, URL නිස්සාරණය, වාදනය
// @name:sk        Universal Media Pro Toolkit | Sťahovanie videa, extrakcia URL, prehrávanie
// @name:sl        Universal Media Pro Toolkit | Prenos videa, ekstrakcija URL-ja, predvajanje
// @name:sn        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:so        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:sq        Universal Media Pro Toolkit | Shkarkim video, nxjerrje URL-je, luaj
// @name:sr        Universal Media Pro Toolkit | Преузимање видеа, екстракција УРЛ-а, репродукција
// @name:sr-Latn   Universal Media Pro Toolkit | Preuzimanje videa, ekstrakcija URL-a, reprodukcija
// @name:st        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:sv        Universal Media Pro Toolkit | Videonedladdning, URL-extraktion, spela upp
// @name:sw        Universal Media Pro Toolkit | Kupakua Video, Uchimbaji wa URL, Cheza
// @name:ta        Universal Media Pro Toolkit | வீடியோ பதிவிறக்கம், URL பிரித்தெடுத்தல், இயக்கு
// @name:te        Universal Media Pro Toolkit | व्हिडिओ डाउनलो़ड, URL వెలికితీత, ప్లే
// @name:tg        Universal Media Pro Toolkit | Боргирии видео, истихроҷи URL, пахш
// @name:th        Universal Media Pro Toolkit | ดาวน์โหลดวิดีโอ, แยก URL, เล่น
// @name:ti        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:tk        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:tr        Universal Media Pro Toolkit | Video İndirme, URL Çıkarma, Oynat
// @name:ug        Universal Media Pro Toolkit | سىن چۈشۈرۈش، URL چىقىرىش، قويۇش
// @name:uk        Universal Media Pro Toolkit | Завантаження відео, витяг URL-адреси, відтворення
// @name:ur        Universal Media Pro Toolkit | ویڈیو ڈاؤن لوڈ، URL نکالنا، چلائیں
// @name:uz        Universal Media Pro Toolkit | Videoni yuklab olish, URL-ni chiqarib olish, ijro etish
// @name:vi        Universal Media Pro Toolkit | Tải video, Trích xuất URL, Phát
// @name:yo        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @name:zh-CN     全能媒体工作台 | 视频下载、URL地址提取、点击一键播放、万能网页视频播放器
// @name:zh-HK     全能媒體工作台 | 視頻下載、URL地址提取、點擊一鍵播放、萬能網頁視頻播放器
// @name:zh-TW     全能媒體工作台 | 視頻下載、URL地址提取、點擊一鍵播放、萬能網頁視頻播放器
// @name:zu        Universal Media Pro Toolkit | Video Download, URL Extract, Play
// @description    Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:af Onttrek direkte video-URL's, laai media maklik af en speel dit met een klik in 'n skoon, drywende venster.
// @description:am ቀጥተኛ የቪዲዮ ዩአርኤሎችን ያውጡ፣ ሚዲያን በቀላሉ ያውርዱ እና በአንድ ጠቅታ ንፁህ እና ተንሳፋፊ መስኮት ውስጥ ያጫውቱ።
// @description:ar استخرج عناوين URL المباشرة للفيديو، وقم بتنزيل الوسائط بسهولة، وقم بتشغيلها بنقرة واحدة في نافذة عائمة نظيفة.
// @description:as পোনপটীয়া ভিডিঅ' ইউআৰএল উলিওৱা, সহজে মিডিয়া ডাউনলোড কৰা আৰু এটা ক্লিকেৰে পৰিষ্কার, ফ্ল'টিং উইণ্ডোত প্লে কৰা।
// @description:az Birbaşa video URL-lərini çıxarın, medianı asanlıqla yükləyin və bir kliklə təmiz, üzən pəncərədə oynayın.
// @description:be Вымайце прамыя відэа-URL, лёгка спампоўвайце медыя і прайгравайце адным пстрычкай мышы ў чыстым плаваючым акне.
// @description:bg Извличайте директни видео URL адреси, изтегляйте лесно мултимедия и възпроизвеждайте с едно щракване в изчистен, плаващ прозорец.
// @description:bn সরাসরি ভিডিও ইউআরএল বের করুন, সহজে মিডিয়া ডাউনলোড করুন এবং এক ক্লিকে পরিষ্কার, ভাসমান উইন্ডোতে প্লে করুন。
// @description:bs Izvucite direktne video URL-ove, lako preuzmite medije i reproducirajte jednim klikom u čistom, plutajućem prozoru.
// @description:ca Extreu URL de vídeo directes, baixa contingut multimèdia fàcilment i reprodueix amb un sol clic en una finestra flotant neta.
// @description:cs Extrahujte přímé adresy URL videa, snadno stahujte média a přehrávejte jedním kliknutím v čistém plovoucím okně.
// @description:da Udtræk direkte video-URL'er, download medier nemt, og afspil med et enkelt klik i et rent, svævende vindue.
// @description:de Extrahiere direkte Video-URLs, lade Medien einfach herunter und spiele sie mit einem Klick in einem sauberen, schwebenden Fenster ab.
// @description:dz བརྙན་ལམ་གྱི་ URL ཐད་ཀར་ཕྱིར་འདྲེན་འབད་ནི། བརྒྱུད་ལམ་ཕབ་ལེན་འཇམ་ཏོག་ཏོ་འབད་ནི། དྭངས་གསལ་གྱི་སྒོ་སྒྲིག་ནང་ཐེངས་གཅིག་ཨེབ་སྟེ་གཏང་ནི།
// @description:el Εξαγάγετε απευθείας διευθύνσεις URL βίντεο, κατεβάστε εύκολα μέσα και παίξτε με ένα κλικ σε ένα καθαρό, αιωρούμενο παράθυρο.
// @description:en Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:en-GB Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:en-US Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:eo Eltiru rektajn video-URLojn, elŝutu amaskomunikilaron facile kaj ludu per unu klako en pura, flosanta fenestro.
// @description:es Extraiga URL de video directas, descargue medios fácilmente y reproduzca con un solo clic en una ventana flotante limpia.
// @description:es-419 Extraiga URL de video directas, descargue medios fácilmente y reproduzca con un solo clic en una ventana flotante limpia.
// @description:es-US Extraiga URL de video directas, descargue medios fácilmente y reproduzca con un solo clic en una ventana flotante limpia.
// @description:et Väljavõte otsestest video URL-idest, laadige meedia hõlpsalt alla ja esitage ühe klõpsuga puhtas ujuvas aknas.
// @description:eu Atera bideoaren URL zuzenak, deskargatu multimedia erraz eta erreproduzitu klik batekin leiho mugikor garbi batean.
// @description:fa URL های ویدیوی مستقیم را استخراج کنید، رسانه ها را به راحتی دانلود کنید و با یک کلیک در یک پنجره شناور تمیز پخش کنید.
// @description:fi Hae suorat videon URL-osoitteet, lataa mediaa helposti ja toista yhdellä napsautuksella puhtaassa, kelluvassa ikkunassa.
// @description:fil I-extract ang mga direktang URL ng video, madaling i-download ang media, at i-play sa isang click sa isang malinis, lumulutang na window.
// @description:fr Extrayez les URL directes des vidéos, téléchargez facilement des médias et lisez en un clic dans une fenêtre flottante propre.
// @description:fr-CA Extrayez les URL directes des vidéos, téléchargez facilement des médias e t lisez en un clic dans une fenêtre flottante propre.
// @description:ga Sliocht URLanna físeáin díreacha, íoslódáil na meáin go héasca, agus seinn le cliceáil amháin i bhfuinneog ghlan, ar snámh.
// @description:gl Extrae URL de vídeo directas, descarga contido multimedia facilmente e reproduce cun só clic nunha xanela flotante limpa.
// @description:gn Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:gu ડાયરેક્ટ વિડિયો URL મેળવો, મીડિયા સરળતાથી ડાઉનલોડ કરો અને એક ક્લિકથી ક્લીન, ફ્લોટિંગ વિન્ડોમાં પ્લે કરો.
// @description:ha Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:hi सीधे वीडियो URL निकालें, मीडिया आसानी से डाउनलोड करें, 和 एक क्लिक से साफ, फ्लोटिंग विंडो में चलाएं।
// @description:hr Izvucite izravne video URL-ove, lako preuzmite medije i reproducirajte jednim klikom u čistom, plutajućem prozoru.
// @description:hu Bontsa ki a közvetlen videó URL-eket, töltsön le egyszerűen médiát, és játsszon le egyetlen kattintással egy tiszta, lebegő ablakban.
// @description:hy Քաղեք ուղղակի տեսանյութերի URL-ները, հեշտությամբ ներբեռնեք լրատվամիջոցները և նվագարկեք մեկ կտտոցով մաքուր, լողացող պատուհանում:
// @description:id Ekstrak URL video langsung, unduh media dengan mudah, dan putar dengan satu klik di jendela mengambang yang bersih.
// @description:ig Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:is Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:it Estrai URL video diretti, scarica facilmente i contenuti multimediali e riproducili con un clic in una finestra mobile pulita.
// @description:iw חלץ כתובות URL ישירות של וידאו, הורד מדיה בקלות והפעל בלחיצה אחת בחלון צף נקי.
// @description:ja 動画の直接URLを抽出し、メディアを簡単にダウンロードして、クリーンなフローティングウィンドウでワンクリック再生。
// @description:jv Ekstrak URL video langsung, unduh media kanthi gampang, lan putar nganggo siji klik ing jendela ngambang sig resik.
// @description:ka ამოიღეთ პირდაპირი ვიდეო URL-ები, მარტივად ჩამოტვირთეთ მედია და ითამაშეთ ერთი დაწკაპუნებით სუფთა, მცურავ ფანჯარაში.
// @description:kk Тікелей бейне URL мекенжайларын шығарып алыңыз, медианы оңай жүктеп алыңыз және таза, қалқымалы терезеде бір рет басу арқылы ойнатыңыз.
// @description:km ទាញយក URL វីដេអូផ្ទាល់ ទាញយកមេឌៀយ៉ាងងាយស្រួល និងលេងដោយចុចតែម្តងក្នុងបង្អួចអណ្តែតទឹកស្អាត។
// @description:kn ನೇರ ವೀಡಿಯೊ URL ಗಳನ್ನು ಹೊರತೆಗೆಯಿರಿ, ಮಾಧ್ಯಮವನ್ನು ಸುಲಭವಾಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಒಂದು ಕ್ಲಿಕ್‌ನಲ್ಲಿ ಸ್ವಚ್ಛವಾದ, ತೇಲುವ ವಿಂಡೋದಲ್ಲಿ ಪ್ಲೇ ಮಾಡಿ.
// @description:ko 직접 비디오 URL을 추출하고, 미디어를 쉽게 다운로드하고, 깨끗한 플로팅 창에서 클릭 한 번으로 재생합니다.
// @description:ky Түз видео URL-дарын чыгарып алыңыз, медианы оңай жүктөп алыңыз жана таза, калкыма терезеде бир чыкылдатуу менен ойнотуңуз.
// @description:lo ແຍກ URL ວິດີໂອໂດຍກົງ, ດາວໂຫລດສື່ໄດ້ຢ່າງງ่ายດາຍ, ແລະຫຼິ້ນດ້ວຍການຄລິກດຽວໃນປ່ອງຢ້ຽມທີ່ສະອາດ, ເລື່ອນໄດ້.
// @description:lt Ištraukite tiesioginius vaizdo įrašų URL, lengvai atsისიუნტიymas mediją ir paleiskite vienu paspaudimu švariame, slankiojančiame lange.
// @description:lv Izvelciet tiešos video URL, viegli lejupielādējiet medijus un atskaņojiet ar vienu klikšķi tīrā, peldošā logā.
// @description:mg Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:mk Извлечете директни URL-адреси на видео, лесно преземајте медиуми и пуштајте со еден клик во чист, лебдечки прозорец.
// @description:ml നേരിട്ടുള്ള വീഡിയോ URL-കൾ എക്‌സ്‌ട്രാക്റ്റുചെയ്യുക, മീഡിയ എളുപ്പത്തിൽ ഡൗൺലോഡ് ചെയ്യുക, ശുദ്ധമായ ഫ്ലോട്ടിംഗ് വിൻഡോയിൽ ഒറ്റ ക്ലിക്കിലൂടെ പ്ലേ ചെയ്യുക.
// @description:mn Шууд видео URL-уудыг задалж, медиаг хялبارхан татаж аваад, цэвэрхэн, хөвөгч цонхонд нэг товшилтоор тоглуулаарай.
// @description:mr थेट व्हिडिओ URL काढा, मीडिया सहजपणे डाउनलोड करा आणि एका क्लिकवर स्वच्छ, फ्लोटिंग विंडोमध्ये प्ले करा.
// @description:ms Ekstrak URL video langsung, muat turun media dengan mudah dan putar dengan satu klik dalam tetingkap terapung yang bersih.
// @description:mt Estratt URL tal-vidjo diretti, niżżel il-midja faċilment, u ilgħab bi klikk waħda f'tieqa f'wiċċ l-ilma nadifa.
// @description:my တိုက်ရိုက်ဗီဒီယို URL များကို ထုတ်ယူပါ၊ မီဒီယာကို လွယ်ကူစွာ ဒေါင်းလုဒ်လုပ်ကာ သန့်ရှင်းသော လွင့်မျောနေသော ဝင်းဒိုးတွင် ကလစ်တစ်ချက်နှိပ်ရုံဖြင့် ဖွင့်ပါ။
// @description:ne प्रत्यक्ष भिडियो URL हरू निकाल्नुहोस्, मिडिया सजिलैसँग डाउनलोड गर्नुहोस्, 和 एक क्लिकमा सफा, फ्लोटिंग विन्डोમાં प्ले गर्नुहोस्।
// @description:nl Extraheer directe video-URL's, download media eenvoudig en speel af met één klik in een schoon, zwevend venster.
// @description:no Trekk ut direkte video-URL-er, last ned medier enkelt, og spill av med ett klikk i et rent, flytende vindu.
// @description:om Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:or ସିଧାସଳଖ ଭିଡିଓ URL ଗୁଡିକ ବାହାର କରନ୍ତୁ, ସହଜରେ ମିଡିଆ ଡାଉନଲୋଡ୍ କରନ୍ତୁ ଏବଂ ଏକ କ୍ଲିକରେ ଏକ ସ୍ୱଚ୍ଛ, ଭାସମାନ ୱିଣ୍ଡୋରେ ପ୍ଲେ କରନ୍ତୁ |
// @description:pa ਸਿੱਧੇ ਵੀਡੀਓ URL ਐਕਸਟਰੈਕਟ ਕਰੋ, ਮੀਡੀਆ ਨੂੰ ਆਸਾਨੀ ਨਾਲ ਡਾਊਨਲੋਡ ਕਰੋ, 和 ਇੱਕ ਕਲਿੱਕ ਨਾਲ ਇੱਕ ਸਾਫ਼, ਫਲੋਟਿੰਗ ਵਿੰਡੋ ਵਿੱਚ ਚਲਾਓ।
// @description:pl Wyodrębnij bezpośrednie adresy URL wideo, łatwo pobieraj multimedia i odtwarzaj jednym kliknięciem w czystym, pływającym oknie.
// @description:ps Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:pt Extraia URLs de vídeo diretos, baixe mídia facilmente e reproduza com um clique em uma janela flutuante limpa.
// @description:pt-BR Extraia URLs de vídeo diretos, baixe mídia facilmente e reproduza com um clique em uma janela flutuante limpa.
// @description:pt-PT Extraia URLs de vídeo diretos, baixe mídia facilmente e reproduza com um clique em uma janela flutuante limpa.
// @description:ro Extrageți adresele URL video directe, descărcați cu ușurință conținutul media și redați cu un singur clic într-o fereastră plutitoare curată.
// @description:ru Извлекайте прямые ссылки на видео, легко скачивайте медиаконтент и воспроизводите его одним кликом в чистом плавающем окне.
// @description:rw Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:si සෘජු වීඩියෝ URL උපුටා ගන්න, මාධ්‍ය පහසුවෙන් බාගත කරන්න, සහ පිරිසිදු, පාවෙන කවුළුවක එක ක්ලික් කිරීමකින් වාදනය කරන්න.
// @description:sk Extrahujte priame adresy URL videa, jednoducho sťahujte médiá a prehrávajte jedným kliknutím v čistom plávajúcom okne.
// @description:sl Izvlecite neposredne URL-je videoposnetkov, zlahka prenesite medije in jih predvajajte z enim klikom v čistem, plavajočem oknu.
// @description:sn Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:so Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:sq Nxirrni URL-të e drejtpërdrejta të videos, shkarkoni mediat me lehtësi dhe luani me një klikim në një dritare të pastër, lundruese.
// @description:sr Извуците директне видео УРЛ-ове, лако преузмите медије и репродукујте једним кликом у чистом, плутајућем прозору.
// @description:sr-Latn Izvucite direktne video URL-ove, lako preuzmite medije i reprodukujte jednim klikom u čistom, plutajućem prozoru.
// @description:st Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:sv Extrahera direkta video-URL:er, ladda ner media enkelt og spela upp med ett klick i ett rent, flytande fönster.
// @description:sw Toa URL za video moja kwa moja, pakua maudhui kwa urahisi, na ucheze kwa mbofyo mmoja katika dirisha safi, linaloelea.
// @description:ta நேரடி வீடியோ URLகளை பிரித்தெடுக்கவும், மீடியாவை எளிதாகப் பதிவிறக்கவும் மற்றும் சுத்தமான, மிதக்கும் சாளரத்தில் ஒரே கிளிக்கில் இயக்கவும்.
// @description:te थेट व्हिडिओ URL काढा, मीडिया सहजपणे डाउनलोड करा 和 एका क्लिकवर स्वच्छ, फ्लोटिंग विंडोमध्ये प्ले करा।
// @description:tg URL-ҳои мустақими видеоро истихроҷ кунед, медиаро ба осонӣ зеркашӣ кунед ва бо як клик дар равзанаи тоза ва шинокунанда пахш кунед.
// @description:th ดึง URL วิดีโอโดยตรง ดาวน์โหลดสื่ออย่างง่ายดาย และเล่นด้วยคลิกเดียวในหน้าต่างลอยที่สะอาดตา
// @description:ti Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:tk Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:tr Doğrudan video URL'lerini çıkarın, medyayı kolayca indirin ve temiz, yüzen bir pencerede tek tıkla oynatın.
// @description:ug بىۋاسىتە سىن URL لىرىنى چىقىرىڭ، مېدىيانى ئاسانلا چۈشۈرۈڭ ھەمدە پاكىز، لەيلىمە كۆزنەكتە بىر چېكىش ئارقىلىق قويۇڭ.
// @description:uk Витягуйте прямі URL-адреси відео, легко завантажуйте медіа та відтворюйте одним кліком у чистому плаваючому вікні.
// @description:ur براہ راست ویڈیو URL نکالیں، میڈیا کو آسانی سے ڈاؤن لوڈ کریں، 和 ایک کلک کے ساتھ صاف، تیرتی ہوئی کھڑکی میں چلائیں۔
// @description:uz To'g'ridan-to'g'ri video URL manzillarini ajratib oling, mediani osongina yuklab oling va toza, suzuvchi oynada bir marta bosish bilan ijro eting.
// @description:vi Trích xuất URL video trực tiếp, tải xuống phương tiện dễ dàng 和 phát bằng một cú nhấp chuột trong cửa sổ nổi sạch sẽ.
// @description:yo Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @description:zh-CN 提取视频直链、一键下载媒体文件,并在极简悬浮窗中实现一键播放。
// @description:zh-HK 提取視頻直鏈、一鍵下載媒體文件,並在極簡懸浮窗中實現一鍵播放。
// @description:zh-TW 提取視頻直鏈、一鍵下載媒體文件,並在極簡懸浮窗中實現一鍵播放。
// @description:zu Extract direct video URLs, download media easily, and play in a clean, floating window with one click.
// @namespace      http://tampermonkey.net/
// @version        1.0.1
// @author         Kairox
// @license        MIT
// @match          *://*/*
// @require        https://cdn.jsdelivr.net/npm/[email protected]/dist/hls.min.js
// @grant          GM_setClipboard
// @run-at         document-start
// ==/UserScript==

(function() {
    'use strict';

    let currentTarget = null;
    let isPlayerOpen = false;
    let latestSniffedUrl = '';
    let hlsInstance = null;

    const extractUrl = (url) => {
        if (!url || typeof url !== 'string') return;
        if (/\.(m3u8|mp4|flv|webm)(\?|$)/i.test(url)) latestSniffedUrl = url;
    };

    const origOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function(method, url) { extractUrl(url); return origOpen.apply(this, arguments); };
    const origFetch = window.fetch;
    window.fetch = async function(...args) { const url = typeof args[0] === 'string' ? args[0] : (args[0]?.url || ''); extractUrl(url); return origFetch.apply(this, args); };

    const getRealUrl = (mediaEl) => {
        if (!mediaEl) return '';
        let url = mediaEl.currentSrc || mediaEl.src;
        if (url && !url.startsWith('blob:')) return url;
        const source = mediaEl.querySelector('source');
        if (source && source.src && !source.src.startsWith('blob:')) return source.src;
        return latestSniffedUrl || url;
    };

    const isMediaValid = (mediaEl) => {
        if (!mediaEl) return false;
        if (mediaEl.error !== null || mediaEl.networkState === 3) return false;
        const rect = mediaEl.getBoundingClientRect();
        if (rect.width < 50 || rect.height < 50) return false;
        const url = getRealUrl(mediaEl);
        return !!(url && url.trim() !== '');
    };

    let mediaCache = [];
    const updateMediaCache = () => {
        const findMedia = (root) => {
            let list = Array.from(root.querySelectorAll('video'));
            let all = root.querySelectorAll('*');
            for (let i = 0; i < all.length; i++) {
                if (all[i].shadowRoot) list.push(...findMedia(all[i].shadowRoot));
            }
            return list;
        };
        try { mediaCache = findMedia(document); } catch(e) {}
    };
    setInterval(updateMediaCache, 500);
    document.addEventListener('DOMContentLoaded', updateMediaCache);

    const Icons = {
        play: `<svg viewBox="0 0 24 24"><path d="M8 5v14l11-7z"/></svg>`,
        copy: `<svg viewBox="0 0 24 24"><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>`,
        close: `<svg viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>`,
        check: `<svg viewBox="0 0 24 24"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>`,
        error: `<svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/></svg>`,
        download: `<svg viewBox="0 0 24 24"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"/></svg>`
    };

    let floatBtn, iframeContainer;

    const initTopLevelUI = () => {
        if (document.getElementById('umpt-float-btn')) return;

        floatBtn = document.createElement('div');
        floatBtn.id = 'umpt-float-btn';
        floatBtn.innerHTML = Icons.play;
        Object.assign(floatBtn.style, {
            position: 'fixed', width: '46px', height: '46px',
            background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
            borderRadius: '50%', display: 'none', alignItems: 'center', justifyContent: 'center',
            zIndex: '2147483647', cursor: 'pointer', color: 'white',
            boxShadow: '0 8px 24px rgba(0,0,0,0.3)', border: '2px solid rgba(255,255,255,0.2)',
            transition: 'transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275)'
        });
        floatBtn.querySelector('svg').style.cssText = 'width: 24px; height: 24px; fill: white; margin-left: 3px; pointer-events: none;';
        floatBtn.onmouseenter = () => floatBtn.style.transform = 'scale(1.1)';
        floatBtn.onmouseleave = () => floatBtn.style.transform = 'scale(1)';
        floatBtn.onclick = (e) => { e.stopPropagation(); openPlayer(); };
        document.documentElement.appendChild(floatBtn);

        iframeContainer = document.createElement('iframe');
        iframeContainer.id = 'umpt-iframe';
        Object.assign(iframeContainer.style, {
            position: 'fixed', inset: '0', width: '100vw', height: '100vh',
            border: 'none', zIndex: '2147483647', display: 'none', background: 'transparent'
        });
        document.documentElement.appendChild(iframeContainer);
    };

    const buildIframeContent = (url, doc) => {
        const isM3U8 = url.includes('.m3u8');
        doc.open();
        doc.write(`
            <!DOCTYPE html>
            <html>
            <head>
                <style>
                    * { box-sizing: border-box; }
                    body { margin: 0; padding: 0; overflow: hidden; background: transparent; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; }
                    #overlay {
                        position: fixed; inset: 0; background: rgba(0, 0, 0, 0.92); backdrop-filter: blur(20px);
                        display: flex; flex-direction: column; align-items: center; justify-content: center;
                        opacity: 0; transition: opacity 0.3s ease;
                    }
                    #overlay.show { opacity: 1; }
                    #player-wrap {
                        width: 85vw; max-width: 1400px; height: 75vh;
                        background: transparent; border-radius: 8px;
                        box-shadow: 0 30px 60px rgba(0,0,0,0.6);
                        border: none; position: relative;
                        display: flex; flex-direction: column; overflow: hidden;
                        transform: scale(1);
                        transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
                    }
                    video {
                        width: 100%; height: 100%; flex: 1;
                        object-fit: contain; outline: none; background: #000;
                        border-radius: 8px; display: block;
                    }
                    #error-overlay {
                        position: absolute; inset: 0; background: rgba(0, 0, 0, 0.85); backdrop-filter: blur(8px);
                        display: none; flex-direction: column; align-items: center; justify-content: center;
                        color: #ff4757; z-index: 10; border-radius: 8px;
                    }
                    #error-overlay.show { display: flex; }
                    #error-overlay svg { width: 56px; height: 56px; fill: currentColor; }
                    #action-toolbar {
                        margin-top: 24px; display: flex; gap: 14px; background: rgba(30, 30, 30, 0.8);
                        padding: 10px 16px; border-radius: 50px; border: 1px solid rgba(255,255,255,0.1);
                        backdrop-filter: blur(20px); align-items: center;
                        transform: translateY(20px); transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
                    }
                    #overlay.show #action-toolbar { transform: translateY(0); }
                    .tool-btn {
                        display: flex; align-items: center; justify-content: center;
                        height: 40px; min-width: 40px; background: rgba(255,255,255,0.08);
                        border: 1px solid rgba(255,255,255,0.05); border-radius: 20px;
                        color: #eee; cursor: pointer; transition: 0.3s;
                        padding: 0 10px; white-space: nowrap; outline: none; position: relative; overflow: hidden;
                    }
                    .tool-btn svg { width: 18px; height: 18px; fill: currentColor; flex-shrink: 0; position: relative; z-index: 2; }
                    .tool-btn.disabled { pointer-events: none; opacity: 0.5; cursor: not-allowed; }
                    .tool-btn:not(.disabled):hover { background: rgba(255,255,255,0.15); color: #2af598; transform: scale(1.05); }
                    .tool-btn.close-btn:not(.disabled):hover { background: #ff4757; color: white; }
                    .tool-btn.dl-btn:not(.disabled):hover { color: #34ace0; }
                </style>
            </head>
            <body>
                <div id="overlay">
                    <div id="player-wrap">
                        <video id="native-vid" controls autoplay playsinline></video>
                        <div id="error-overlay">${Icons.error}</div>
                    </div>
                    <div id="action-toolbar">
                        <button class="tool-btn" id="t-copy">${Icons.copy}</button>
                        ${isM3U8 ? `<button class="tool-btn dl-btn" id="t-dl">${Icons.download}</button>` : ''}
                        <div style="width: 1px; height: 20px; background: rgba(255,255,255,0.15); margin: 0 2px;"></div>
                        <button class="tool-btn close-btn" id="t-close">${Icons.close}</button>
                    </div>
                </div>
            </body>
            </html>
        `);
        doc.close();

        requestAnimationFrame(() => doc.getElementById('overlay').classList.add('show'));

        const vid = doc.getElementById('native-vid');
        const triggerErrorState = () => {
            const errOverlay = doc.getElementById('error-overlay');
            if (errOverlay) errOverlay.classList.add('show');
            const copyBtn = doc.getElementById('t-copy');
            if (copyBtn) copyBtn.classList.add('disabled');
            const dlBtn = doc.getElementById('t-dl');
            if (dlBtn) dlBtn.classList.add('disabled');
        };

        vid.addEventListener('error', triggerErrorState);

        if (isM3U8) {
            if (window.Hls && Hls.isSupported()) {
                hlsInstance = new window.Hls();
                hlsInstance.loadSource(url);
                hlsInstance.attachMedia(vid);
                hlsInstance.on(window.Hls.Events.ERROR, function(event, data) {
                    if (data.fatal) triggerErrorState();
                });
            } else if (vid.canPlayType('application/vnd.apple.mpegurl')) {
                vid.src = url;
            } else {
                triggerErrorState();
            }
        } else {
            vid.src = url;
        }

        bindIframeEvents(doc, url, vid);
    };

    const bindIframeEvents = (doc, url, vid) => {
        const wrap = doc.getElementById('player-wrap');

        const adaptSize = () => {
            if (!vid || !vid.videoWidth) return;
            const maxW = window.innerWidth * 0.85;
            const maxH = window.innerHeight * 0.75;
            const videoRatio = vid.videoWidth / vid.videoHeight;
            const screenRatio = maxW / maxH;

            let finalW, finalH;
            if (videoRatio > screenRatio) {
                finalW = maxW;
                finalH = maxW / videoRatio;
            } else {
                finalH = maxH;
                finalW = maxH * videoRatio;
            }
            wrap.style.width = `${Math.floor(finalW)}px`;
            wrap.style.height = `${Math.floor(finalH)}px`;
        };

        vid.addEventListener('loadedmetadata', adaptSize);
        if (vid.readyState >= 1) adaptSize();

        if (window._umptResizeHandler) window.removeEventListener('resize', window._umptResizeHandler);
        window._umptResizeHandler = adaptSize;
        window.addEventListener('resize', window._umptResizeHandler);

        const triggerFeedback = (btn, isError = false) => {
            if (btn.classList.contains('disabled')) return;
            const originalSvg = btn.querySelector('svg').outerHTML;
            if (isError) {
                btn.querySelector('svg').outerHTML = Icons.error;
                btn.style.color = '#ff4757'; btn.style.background = 'rgba(255, 71, 87, 0.15)';
            } else {
                btn.querySelector('svg').outerHTML = Icons.check;
                btn.style.color = '#2af598'; btn.style.background = 'rgba(42, 245, 152, 0.15)';
            }
            setTimeout(() => {
                btn.style.color = ''; btn.style.background = '';
                setTimeout(() => { if(!btn.classList.contains('disabled')) btn.querySelector('svg').outerHTML = originalSvg; }, 200);
            }, 1500);
        };

        const btnCopy = doc.getElementById('t-copy');
        if (btnCopy) {
            btnCopy.onclick = () => {
                if (btnCopy.classList.contains('disabled')) return;
                GM_setClipboard(url);
                triggerFeedback(btnCopy);
            };
        }

        const btnDl = doc.getElementById('t-dl');
        if (btnDl) {
            btnDl.onclick = () => {
                if (btnDl.classList.contains('disabled')) return;
                window.open(`https://m3u8players.com/?url=${encodeURIComponent(url)}`, '_blank');
            };
        }

        const closeOverlay = () => {
            doc.getElementById('overlay').classList.remove('show');
            setTimeout(() => {
                iframeContainer.style.display = 'none';
                isPlayerOpen = false;
                if (hlsInstance) { hlsInstance.destroy(); hlsInstance = null; }
                vid.src = '';
            }, 300);
        };
        doc.getElementById('t-close').onclick = closeOverlay;
        doc.getElementById('overlay').onclick = (e) => { if (e.target.id === 'overlay') closeOverlay(); };
    };

    const openPlayer = () => {
        const url = getRealUrl(currentTarget);
        if (!url) return;
        isPlayerOpen = true;
        floatBtn.style.display = 'none';
        iframeContainer.style.display = 'block';
        buildIframeContent(url, iframeContainer.contentDocument);
    };

    let ticking = false;
    document.addEventListener('pointermove', (e) => {
        if (isPlayerOpen || !floatBtn) return;
        if (!ticking) {
            requestAnimationFrame(() => {
                let isHoveringAnyVideo = false;
                let hitRect = null;
                let hitElement = null;

                const liveMedia = Array.from(document.querySelectorAll('video'));
                const allMediaToScan = new Set([...liveMedia, ...mediaCache]);

                for (let media of allMediaToScan) {
                    const rect = media.getBoundingClientRect();
                    if (rect.width > 50 && rect.height > 50 &&
                        e.clientX >= rect.left && e.clientX <= rect.right &&
                        e.clientY >= rect.top && e.clientY <= rect.bottom) {
                        if (isMediaValid(media)) {
                            isHoveringAnyVideo = true;
                            hitRect = rect;
                            hitElement = media;
                            break;
                        }
                    }
                }

                const bRect = floatBtn.getBoundingClientRect();
                const isHoveringButton = floatBtn.style.display === 'flex' &&
                                         e.clientX >= (bRect.left - 15) && e.clientX <= (bRect.right + 15) &&
                                         e.clientY >= (bRect.top - 15) && e.clientY <= (bRect.bottom + 15);

                if (isHoveringAnyVideo) {
                    currentTarget = hitElement;
                    floatBtn.style.display = 'flex';
                    floatBtn.style.top = `${hitRect.top + 10}px`;
                    floatBtn.style.left = `${hitRect.right - 54}px`;
                } else if (!isHoveringButton) {
                    floatBtn.style.display = 'none';
                    currentTarget = null;
                }
                ticking = false;
            });
            ticking = true;
        }
    }, { capture: true, passive: true });

    window.addEventListener('scroll', () => {
        if (currentTarget && floatBtn.style.display === 'flex' && !isPlayerOpen) {
            const rect = currentTarget.getBoundingClientRect();
            floatBtn.style.top = `${rect.top + 10}px`;
            floatBtn.style.left = `${rect.right - 54}px`;
        }
    }, { capture: true, passive: true });

    if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initTopLevelUI); } else { initTopLevelUI(); }
})();