Greasy Fork

来自缓存

Greasy Fork is available in English.

Telegram 媒体下载器 全球版 (视频下载、保存原图、压缩、转换 PNG)

绕过限制一键下载视频和图片,支持视频保存、保存原图、图片压缩及转换为 PNG。全球版。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Telegram Media Downloader (Global Edition)
// @name:af      Telegram Media Downloader (Video-aflaai, Oorspronklike beeld, Druk saam, PNG)
// @name:am      የቴሌግራም ሚዲያ ማውረጃ (ቪዲዮ ማውረድ ፣ ኦሪጅናል ምስል ፣ ይጨመቁ ፣ PNG)
// @name:ar      Telegram Media Downloader (تنزيل الفيديو ، الصورة الأصلية ، الضغط ، PNG)
// @name:as      টেলিগ্ৰাম মিডিয়া ডাউনলোডাৰ (ভিডিঅ' ডাউনলোড, মূল ছবি, সংকুচিত, PNG)
// @name:az      Telegram Media Yükləyici (Video yükləmə, Orijinal şəkil, Sıxışdır, PNG)
// @name:be      Загрузнік медыя Telegram (Загрузка відэа, Арыгінальнае малюнак, Сціск, PNG)
// @name:bg      Telegram Media Downloader (Изтегляне на видео, Оригинално изображение, Компресиране, PNG)
// @name:bn      টেলিগ্রাম মিডিয়া ডাউনলোডার (ভিডিও ডাউনলোড, আসল ছবি, কম্প্রেস, PNG)
// @name:bs      Telegram Media Downloader (Preuzimanje videa, Originalna slika, Kompresija, PNG)
// @name:ca      Descarregador de Telegram (Descàrrega de vídeo, Imatge original, Comprimeix, PNG)
// @name:cs      Telegram Downloader (Stahování videa, Originální obrázek, Komprese, PNG)
// @name:da      Telegram Downloader (Videodownload, Originalt billede, Komprimer, PNG)
// @name:de      Telegram Media Downloader (Video-Download, Originalbild, Komprimieren, PNG)
// @name:dz      ཊེ་ལི་གྷརམ་ བརྙན་འཁོར་ཕབ་ལེན། (བརྙན་འཁོར། པར་བཟོ་རྣམ་འགྱུར། པར་བཙིར་གནོན། PNG)
// @name:el      Λήψη Μέσων Telegram (Λήψη βίντεο, Πρωτότυπη εικόνα, Συμπίεση, PNG)
// @name:en      Telegram Media Downloader (Global Edition - Video Download, Save Original, Compress, PNG)
// @name:eo      Telegram Elŝutilo (Video-elŝuto, Originala bildo, Kunpremi, PNG)
// @name:es      Telegram Media Downloader (Descarga de video, Imagen original, Comprimir, PNG)
// @name:et      Telegrami meedia allalaadija (Video allalaadimine, Originaalpilt, Pakkimine, PNG)
// @name:eu      Telegram Deskargatzailea (Bideoa deskargatu, Jatorrizko irudia, Konprimitu, PNG)
// @name:fa      دانلودر تلگرام (دانلود ویدیو، تصویر اصلی، فشرده سازی، PNG)
// @name:fi      Telegram-lataaja (Videon lataus, Alkuperäinen kuva, Pakkaus, PNG)
// @name:fil     Telegram Downloader (Pag-download ng video, Orihinal na larawan, I-compress, PNG)
// @name:fr      Telegram Media Downloader (Téléchargement de vidéo, Image originale, Compresser, PNG)
// @name:ga      Íoslódálaí Telegram (Íoslódáil físeáin, Buníomhá, Comhbhrúigh, PNG)
// @name:gl      Descargador de Telegram (Descarga de vídeos, Imaxe orixinal, Comprimir, PNG)
// @name:gn      Desarga Telegram (Emboguejy video, Ta'anga tee, Ñemboguejy, PNG)
// @name:gu      ટેલિગ્રામ મીડિયા ડાઉનલોડર (વિડિઓ ડાઉનલોડ, મૂળ છબી, કોમ્પ્રેસ, PNG)
// @name:ha      Telegram Downloader (Zazzage bidiyo, Asali, Matse, PNG)
// @name:hi      टेलीग्राम मीडिया डाउनलोडर (वीडियो डाउनलोड, मूल छवि सहेजें, संपीड़ित, PNG)
// @name:hr      Telegram Downloader (Preuzimanje videa, Originalna slika, Komprimiranje, PNG)
// @name:hu      Telegram Videó Letöltő (Videó letöltés, Eredeti kép, Tömörítés, PNG)
// @name:hy      Telegram Ներբեռնիչ (Տեսանյութի ներբեռնում, Բնօրինակ պատկեր, Սեղմում, PNG)
// @name:id      Telegram Media Downloader (Unduh video, Gambar asli, Kompres, PNG)
// @name:ig      Budata Foto Telegram (Budata vidiyo, Nke mbụ, Mkpakọ, PNG)
// @name:is      Telegram Niðurhalari (Myndbandaniðurhal, Upprunaleg mynd, Þjappa, PNG)
// @name:it      Telegram Media Downloader (Download video, Immagine originale, Comprimi, PNG)
// @name:iw      מוריד מדיה טלגרם (הורדת וידאו, שמירת תמונה מקורית, דחיסה, PNG)
// @name:ja      Telegram動画ダウンロード (ビデオダウンロード、オリジナル保存、圧縮、PNG変換)
// @name:jv      Pengunduh Media Telegram (Unduh video, Gambar asli, Kompres, PNG)
// @name:ka      Telegram ვიდეოს ჩამომტვირთავი (ვიდეოს ჩამოტვირთვა, ორიგინალი, შეკუმშვა, PNG)
// @name:kk      Telegram Видео Жүктеушісі (Видеоны жүктеу, Түпнұсқа, Сығу, PNG)
// @name:km      ទាញយកមេឌៀ Telegram (ទាញយកវីដេអូ, ច្បាប់ដើម, បង្រួម, PNG)
// @name:kn      ಟೆಲಿಗ್ರಾಮ್ ಡೌನ್‌ಲೋಡರ್ (ವೀಡಿಯೊ ಡೌನ್‌ಲೋಡ್, ಮೂಲ, ಕುಗ್ಗಿಸಿ, PNG)
// @name:ko      텔레그램 다운로더 (비디오 다운로드, 원본 저장, 압축, PNG 변환)
// @name:ky      Telegram Видео Жүктөөчү (Видео жүктөө, Түпኑска, Кысуу, PNG)
// @name:lo      ດາວໂຫຼດວິດີໂອ Telegram (ດາວໂຫລດວິດີໂອ, ຕົ້ນສະບັບ, ບີບອັດ, PNG)
// @name:lt      Telegram Atsisiuntimas (Vaizdo įrašai, Originalas, Suspausti, PNG)
// @name:lv      Telegram Lejupielētājs (Video lejupielāde, Oriģinals, Saspiest, PNG)
// @name:mg      Mpisintona Telegram (Sintony horonan-tsary, Sary tany am-pahatany, PNG)
// @name:mk      Преземач na Telegram (Преземање видео, Оригинал, Компресирај, PNG)
// @name:ml      ടെലിഗ്രാം ഡൗൺലോഡർ (വീഡിയോ ഡൗൺലോഡ്, അസ്സൽ ചിത്രം, കംപ്രസ്, PNG)
// @name:mn      Telegram Татагч (Видео татах, Эх хувь, Шахах, PNG)
// @name:mr      टेलीग्राम मीडिया डाउनलोडर (व्हिडिओ डाउनलोड, मूळ प्रतिमा, संकुचित, PNG)
// @name:ms      Pemuat Turun Telegram (Muat turun video, Gambar asal, Mampat, PNG)
// @name:mt      Telegram Downloader (Niżżel vidjow, Oriġinal, Ikkompressa, PNG)
// @name:my      Telegram ဗီဒီယို ဒေါင်းလုပ်ဆွဲသူ (ဗီဒီယိုဒေါင်းလုပ်၊ မူရင်း၊ ချုံ့ရန်၊ PNG)
// @name:ne      टेलीग्राम डाउनलोडर (भिडियो डाउनलोड, फोटो, कम्प्रेस, PNG)
// @name:nl      Telegram Downloader (Video download, Origineel, Comprimeren, PNG)
// @name:no      Telegram Nedlaster (Videonedlasting, Original, Komprimer, PNG)
// @name:om      YouTube Buufataa Bilisaa (Viidiyoo, Fakkii tee kaayi, PNG)
// @name:or      ଟେଲିଗ୍ରାମ୍ ମିଡିଆ ଡାଉନଲୋଡର୍ (ଭିଡିଓ ଡାଉନଲୋଡ୍, ମୂଳ, ସଙ୍କୋଚନ, PNG)
// @name:pa      ਟੈਲੀਗ੍ਰਾਮ ਵੀਡੀਓ ਡਾਊਨਲੋਡਰ (ਵੀਡੀਓ ਡਾਊਨਲੋଡ, ਅਸਲੀ, ਕੰਪ੍ਰੈਸ, PNG)
// @name:pl      Pobieracz Telegram (Pobieranie wideo, Oryginał, Kompresuj, PNG)
// @name:ps      د ټیلیګرام میډیا ډاونلوډر (ویډیو ډاونلوډ، اصلي، فشاری, PNG)
// @name:pt      Telegram Downloader (Download de video, Original, Comprimir, PNG)
// @name:ro      Descărcător Telegram (Descărcare video, Original, Comprimă, PNG)
// @name:ru      Загрузчик Telegram (Скачать видео, Оригинал, Сжать, PNG)
// @name:rw      Telegram Downloader (Kura amashusho, Umwimerere, Compress, PNG)
// @name:si      ටෙලිග්‍රෑම් මාධ්‍ය බාගන්නා (වීඩዮ බාගත කිරීම, මුල් පිටපත, PNG)
// @name:sk      Telegram Sťahovač (Sťahovanie videa, Originál, Komprimovať, PNG)
// @name:sl      Telegram Prenosnik (Prenos videa, Izvirnik, Stisni, PNG)
// @name:sn      Dhawunirodha Telegram (Dhawunirodha vhidhiyo, Sevha chaiwo, PNG)
// @name:so      Soo Degsade Telegram (Keydi asalka, Isku-buuji, PNG)
// @name:sq      Shkarkues Telegram (Shkarkimi i videos, Origjinali, Kompreso, PNG)
// @name:sr      Telegram Downloader (Sačuvaj original, Kompresuj, PNG)
// @name:st      Khoasolla Telegram (Khoasolla video, Boloka sa tloaelehang, PNG)
// @name:sv      Telegram Nedladdare (Ladda ner video, Original, Komprimera, PNG)
// @name:sw      Pakua Video za Telegram (Hifadhi asili, Punguza ukubwa, PNG)
// @name:ta      டெலிகிராம் மீடியா டவுன்லோடர் (வீடியோ, அசல் சேமிப்பு, PNG)
// @name:te      టెలిగ్రామ్ వీడియో డౌన్‌లోడర్ (వీడియో డౌన్‌లోడ్, అసలైనది, PNG)
// @name:tg      Telegram Downloader (Зеркашии видео, Аслӣ, Фишурдан, PNG)
// @name:th      ดาวน์โหลดวิดีโอ Telegram (ดาวน์โหลดวิดีโอ, ต้นฉบับ, บีบอัด, PNG)
// @name:ti      ዝበለጸ መውረዲ ቴሌግራም (ቪድዮ ኣውርድ፡ ኦሪጅናል፡ PNG)
// @name:tk      Telegram Wideo Ýükleýji (Wideo ýüklemek, Aslyny sakla, PNG)
// @name:tr      Telegram Video İndirici (Video indir, Orijinal, Sıkıştır, PNG)
// @name:ug      ھەقسىز Telegram سىن ჩۈشۈرگۈچ (سىن چۈشۈرۈش، ئەسلىنى ساقلاش، PNG)
// @name:uk      Завантажувач Telegram (Завантаження відео, Оригінал, Стиснути, PNG)
// @name:ur      ٹیلی گرام میڈیا ڈاؤنلوڈر (ویڈیو ڈاؤن لوڈ، اصل، کمپریس, PNG)
// @name:uz      Telegram Video Yuklab Olish (Aslini saqlash, Siqish, PNG)
// @name:vi      Tải Media Telegram (Tải video, Bản gốc, Nén, PNG)
// @name:yo      Telegram Downloader (Gba fidio, Fi aworan pamọ, PNG)
// @name:zh-CN   Telegram 媒体下载器 全球版 (视频下载、保存原图、压缩、转换 PNG)
// @name:zh-HK   Telegram 下載器 全球版 (影片下載、保存原圖、壓縮、轉換 PNG)
// @name:zh-TW   Telegram 下載器 全球版 (影片下載、保存原圖、壓縮、轉換 PNG)
// @name:zu      Isilandi se-Telegram (Landa i-video, Gcina okokuqala, PNG)
// @description:af Laai video's en foto's af. Ondersteun omseiling van beperkings, oorspronklike stoor, kompressie en PNG vir beelde.
// @description:am ቪዲዮዎችን እና ፎቶዎችን ያውርዱ። የቪዲዮ ማውረድ፣ ኦሪጅናል ማስቀመጥ እና ለምስሎች PNG ይደግፋል።
// @description:ar قم بتنزيل مقاطع الفيديو والصور من القنوات الخاصة. يدعم تنزيل الفيديو وحفظ الأصل و PNG للصور.
// @description:as ব্যক্তিগত চেনেলৰ পৰা ভিডিঅ' আৰু ফটো ডাউনলোড কৰক। ভিডিঅ' ডাউনলোড, অৰিজিনেল ছেভিং আৰু ফটোৰ বাবে PNG সমৰ্থন কৰে।
// @description:az Şəxsi kanallardan videoları və şəkilləri endirin. Video yükləməni, orijinalın saxlanmasını və şəkillər üçün PNG-ni dəstəkləyir.
// @description:be Спампоўвайце відэа і фота з прыватных каналаў. Падтрымлівае спампоўку відэа, захаванне арыгінала і PNG для малюнкаў.
// @description:bg Изтегляйте видеоклипове и снимки от частни канали. Поддържа изтегляне на видео, запазване на оригинал и PNG за изображения.
// @description:bn ব্যক্তিগত চ্যানেল থেকে ভিডিও এবং ফটো ডাউনলোড করুন। ভিডিও ডাউনলোড, আসল সংরক্ষণ এবং ছবির জন্য PNG সমর্থন করে।
// @description:bs Preuzmite video zapise i fotografije sa privatnih kanala. Podržava preuzimanje videa, spremanje originala i PNG za slike.
// @description:ca Baixeu vídeos i fotos de canals privats. Admet la descàrrega de vídeos, el desa de l'original i el PNG per a imatges.
// @description:cs Stahujte videa a fotky ze soukromých kanálů. Podporuje stahování videa, ukládání originálu a PNG pro obrázky.
// @description:da Download videoer og billeder fra private kanaler. Understøtter videodownload, gem original og PNG til billeder.
// @description:de Laden Sie Videos und Fotos von privaten Kanälen herunter. Unterstützt Video-Download, Speichern des Originals und PNG für Bilder.
// @description:dz སྒེར་གྱི་རྒྱུ་ལམ་ཚུ་ལས་ བརྙན་འཁོར་དང་པར་ཚུ་ཕབ་ལེན་འབད། བརྙན་འཁོར་ཕབ་ལེན་དང་ པར་བཟོ་རྣམ་འགྱུར་ པར་བཙིར་གནོན་ པཱི་ཨེན་ཇི་ལུ་བསྒྱུར་བཅོས་འབད་ནི་ལུ་རྒྱབ་སྐྱོར་འབདཝ་ཨིན།
// @description:el Κατεβάστε βίντεο και φωτογραφίες από ιδιωτικά κανάλια. Υποστηρίζει λήψη βίντεο, αποθήκευση πρωτοτύπου και PNG για εικόνες.
// @description:en Download videos and images from private channels. Supports video download, saving originals, and PNG for images.
// @description:eo Elŝutu filmetojn kaj fotojn de privataj kanaloj. Subtenas video-elŝuton, konservadon de originalo kaj PNG por bildoj.
// @description:es Descargue videos y fotos de canales privados. Admite descarga de videos, guardado de original y PNG para imágenes.
// @description:et Laadige privaatsetest kanalitest alla videoid ja fotosid. Toetab videote allalaadimist, originaali salvestamist ja PNG-d piltide jaoks.
// @description:eu Deskargatu bideoak eta argazkiak kanal pribatuetatik. Bideoak deskargatzea, jatorrizkoa gordetzea eta PNG onartzen ditu irudietarako.
// @description:fa ویدیوها و عکس‌ها را از کانال‌های خصوصی دانلود کنید. از دانلود ویدیو، ذخیره نسخه اصلی و PNG برای تصاویر پشتیبانی می‌کند.
// @description:fi Lataa videoita ja kuvia yksityisiltä kanavilta. Tukee videon latausta, alkuperäisen tallennusta ja PNG-muotoa kuville.
// @description:fil Mag-download ng mga video at larawan mula sa mga pribadong channel. Sinusuportahan ang pag-download ng video, pag-save ng orihinal, at PNG para sa mga larawan.
// @description:fr Téléchargez des vidéos et des photos à partir de canaux privés. Prend en charge le téléchargement de vidéos, l'enregistrement de l'original et le PNG pour les images.
// @description:ga Íoslódáil físeáin agus íomhánna ó bhealaí príobháideacha. Tacaíonn sé le híoslódáil físeán, sábháil bunaidh agus PNG d’íomhánna.
// @description:gl Descarga vídeos e fotos de canles privadas. Soporta a descarga de vídeos, o gardado do orixinal e PNG para imaxes.
// @description:gn Emboguejy video ha ta'anga umi canal privado-gui. Omoneĩ ñemboguejy video, emopyta ta'anga tee ha PNG ta'angakuérape g̃uarã.
// @description:gu ખાનગી ચેનલોમાંથી વિડિઓઝ અને છબીઓ ડાઉનલોડ કરો. વિડિઓ ડાઉનલોડ, મૂળ સાચવવાનું અને છબીઓ માટે PNG ને સપોર્ટ કરે છે.
// @description:ha Zazzage bidiyo da hotuna daga tashoshi masu zaman kansu. Yana tallafawa saukar da bidiyo, adana asali da PNG don hotuna.
// @description:hi निजी चैनलों से वीडियो और चित्र डाउनलोड करें। वीडियो डाउनलोड, मूल बचत और छवियों के लिए PNG का समर्थन करता है।
// @description:hr Preuzmite videozapise i slike s privatnih kanala. Podržava preuzimanje videa, spremanje originala i PNG za slike.
// @description:hu Töltsön le videókat és képeket privát csatorнákról. Támogatja a videóletöltést, az eredeti mentését és a PNG-t a képekhez.
// @description:hy Ներբեռնեք տեսանյութեր և պատկերներ մասնավոր ալիքներից։ Աջակցում է տեսանյութերի ներբեռնմանը, բնօրինակի պահպանմանը և PNG-ին պատկերների համար։
// @description:id Unduh video dan gambar dari saluran pribadi. Mendukung pengunduhan video, penyimpanan asli, dan PNG untuk gambar.
// @description:ig Budata vidiyo na foto site na ọwa nzuzo. Na-akwado nbudata vidiyo, nchekwa nke mbụ na PNG maka foto.
// @description:is Sæktu myndbönd og myndir úr einkarásum. Styður myndbandsniðurhal, vistun upprunalega og PNG fyrir myndir.
// @description:it Scarica video e immagini da canali privati. Supporta il download di video, il salvataggio dell'originale e il PNG per le immagini.
// @description:iw הורד סרטונים ותמונות מערוצים פרטיים. תומך בהורדת וידאו, שמירת מקור ו-PNG לתמונות.
// @description:ja プライベートチャンネルから動画と画像をダウンロード。動画ダウンロード、オリジナル保存、画像用PNGに対応。
// @description:jv Unduh video lan gambar saka saluran pribadi. Ndhukung unduhan video, nyimpen asli, lan PNG kanggo gambar.
// @description:ka ჩამოტვირთეთ ვიდეოები და სურათები პირადი არხებიდან. მხარს უჭერს ვიდეოს ჩამოტვირთვას, ორიგინალის შენახვას და PNG-ს სურათებისთვის.
// @description:kk Жеке арналардан видеоларды және суреттерді жүктеңіз. Видеоны жүктеуді, түпнұсқаны сақтауды және суреттер үшін PNG-ді қолдайды.
// @description:km ទាញយកវីដេអូ និងរូបភាពពីបណ្តាញឯកជន។ គាំទ្រការទាញយកវីដេអូ ការរក្សាទុកច្បាប់ដើម និង PNG សម្រាប់រូបភាព។
// @description:kn ಖಾಸಗಿ ಚಾನಲ್‌ಗಳಿಂದ ವೀಡಿಯೊಗಳು ಮತ್ತು ಚಿತ್ರಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ. ವೀಡಿಯೊ ಡೌನ್‌ಲೋಡ್, ಮೂಲ ಉಳಿಸುವಿಕೆ ಮತ್ತು ಚಿತ್ರಗಳಿಗಾಗಿ PNG ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.
// @description:ko 프라이빗 채널에서 동영상과 이미지를 다운로드합니다. 동영상 다운로드, 원본 저장 및 이미지용 PNG를 지원합니다.
// @description:ky Жеке каналдарდან видеолорду жана сүрөттөрдү жүктөп алыңыз. Видеону жүктөп алууну, түпнусканы сактоону жана сүрөттөр үчүн PNGну колдойт.
// @description:lo ດາວໂຫລດວິດີໂອ ແລະຮູບພາບຈາກຊ່ອງທາງສ່ວນຕົວ. ຮອງຮັບການດາວໂຫລດວິດີໂອ, ການບັນທຶክຕົ້ນສະบັບ ແລະ PNG ສໍາລັບຮູບພາບ.
// @description:lt Atsisiųskite vaizdo įrašus ir vaizdus iš privačių kanalů. Palaiko vaizdo įrašų atsisiuntimą, originalo išsaugojimą ir PNG vaizdams.
// @description:lv Lejupielādējiet videoklipus un attēlus no privātiem kanāliem. Atbalsta video lejupielādi, oriģināla saglabāšanu un PNG attēliem.
// @description:mg Misintona horonan-tsary sy sary avy amin'ireo fantsona manokana. Manohana ny fampidinana horonan-tsary, ny fitehirizana ny tany am-pahatany ary ny PNG ho an'ny sary.
// @description:mk Преземајте видеа и слики од приватни канали. Поддржува преземање видео, зачувување оригинал и PNG за слики.
// @description:ml സ്വകാര്യ ചാനലുകളിൽ നിന്ന് വീഡിയോകളും ചിത്രങ്ങളും ഡൗൺലോഡ് ചെയ്യുക. വീഡിയോ ഡൗൺലോഡ്, അസ്സൽ സംരക്ഷിക്കൽ, ചിത്രങ്ങൾക്കായി PNG എന്നിവ പിന്തുണയ്ക്കുന്നു.
// @description:mn Хувийн сувгуудаас видео болон зураг татаж аваарай. Видео татах, эх хувийг хадгалах, зурагт зориулсан PNG-г дэмждэг.
// @description:mr खाजगी चॅनेलवरून व्हिडिओ आणि प्रतिमा डाउनलोड करा. व्हिडिओ डाउनलोड, मूळ बचत आणि प्रतिमांसाठी PNG ला समर्थन देते.
// @description:ms Muat turun video dan imej daripada saluran peribadi. Menyokong muat turun video, simpan asal dan PNG untuk imej.
// @description:mt Niżżel vidjows u stampi minn kanali privati. Jappoġġja t-tniżżil tal-vidjow, l-iffrankar tal-oriġinal u l-PNG għall-immaġni.
// @description:my သီးသန့်ချန်နယ်များမှ ဗီဒီယိုများနှင့် ပုံများကို ဒေါင်းလုဒ်လုပ်ပါ။ ဗီဒီယိုဒေါင်းလုပ်၊ မူရင်းသိမ်းဆည်းမှုနှင့် ပုံများအတွက် PNG ကို ပံ့ပိုးသည်။
// @description:ne निजी च्यानलहरूबाट भिडियोहरू र छविहरू डाउनलोड गर्नुहोस्। भिडियो डाउनलोड, मूल बचत र छविहरूको लागि PNG समर्थन गर्दछ।
// @description:nl Download video's en afbeeldingen van privékanalen. Ondersteunt video-download, opslaan van origineel en PNG voor afbeeldingen.
// @description:no Last ned videoer og bilder fra private kanaler. Støtter videonedladdning, lagring av original og PNG for bilder.
// @description:om Chaanalii dhuunfaa irraa viidiyoo fi fakkiiwwan buufadhu. Viidiyoo buufachuu, fakkii tee kaayi fi PNG deeggera.
// @description:or ବ୍ୟକ୍ତିଗତ ଚ୍ୟାନେଲଗୁଡିକରୁ ଭିଡିଓ ଏବଂ ଚିତ୍ର ଡାଉନଲୋଡ୍ କରନ୍ତୁ | ଭିଡିଓ ଡାଉନଲୋଡ୍, ମୂଳ ସଂରକ୍ଷଣ ଏବଂ ଚିତ୍ର ପାଇଁ PNG କୁ ସମର୍ଥନ କରେ |
// @description:pa ਨਿੱਜੀ ਚੈਨਲਾਂ ਤੋਂ ਵੀਡੀਓ ਅਤੇ ਚਿੱਤਰ ਡਾਊਨਲੋਡ ਕਰੋ। ਵੀਡੀਓ ਡਾਊਨਲੋਡ, ਅਸਲੀ ਸੇਵਿੰਗ ਅਤੇ ਚਿੱਤਰਾਂ ਲਈ PNG ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ।
// @description:pl Pobieraj filmy i obrazy z kanałów prywatnych. Obsługuje pobieranie wideo, zapisywanie oryginału i PNG dla obrazów.
// @description:ps د شخصي چینلونو څخه ویډیوګانې او عکسونه ډاونلوډ کړئ. د ویډیو ډاونلوډ ، اصلي خوندي کول او د عکسونو لپاره PNG ملاتړ کوي.
// @description:pt Baixe vídeos e imagens de canais privados. Suporta download de vídeo, salvamento de original e PNG para imagens.
// @description:ro Descărcați videoclipuri și imagini de pe canale private. Suportă descărcarea video, salvarea originalului și PNG pentru imagini.
// @description:ru Скачивайте видео и изображения из частных каналов. Поддерживает загрузку видео, сохранение оригинала и PNG для изображений.
// @description:rw Kura amavidiyo n'amashusho kuri kanali z'ibanga. Ishyigikiye gukura vidiyo, kubika umwimerere na PNG ku mashusho.
// @description:si පුද්ගලික නාලිකා වලින් වීඩියෝ සහ පින්තූර බාගන්න. වීඩියෝ බාගත කිරීම, මුል පිටපත සුරැකීම සහ පින්තූර සඳහා PNG සඳහා සහය දක්වයි.
// @description:sk Sťahujte videá a obrázky zo súkromných kanálov. Podporuje sťahovanie videa, ukladanie originálu a PNG pre obrázky.
// @description:sl Prenesite videoposnetke in slike iz zasebnih kanalov. Podpira prenos videa, shranjevanje izvirnika i PNG za slike.
// @description:sn Dhawunirodha mavhidhiyo nemifananidzo kubva kumatanho akavanzika. Inotsigira vhidhiyo kurodha, kuchengetedza mufananidzo chaiwo uye PNG yemifananidzo.
// @description:so Soo degso muuqaallada iyo sawirrada kanaalada gaarka ah. Waxay taageertaa soo dejinta fiidiyowga, keydinta asalka iyo PNG sawirada.
// @description:sq Shkarkoni video dhe imazhe nga kanale private. Mbështet shkarkimin e videos, ruajtjen e origjinalit dhe PNG për imazhet.
// @description:sr Preuzmite video zapise i slike sa privatnih kanala. Podržava preuzimanje videa, čuvanje originala i PNG za slike.
// @description:st Khoasolla livideo le litšoantšo ho tsoa ho likanale tse ikemetseng. E tšehetsa ho khoasolla video, ho boloka sa tloaelehang le PNG bakeng sa litšoantšo.
// @description:sv Ladda ner videor och bilder från privata kanaler. Stöder videonedladdning, lagring av original och PNG för bilder.
// @description:sw Pakua video na picha kutoka kwa vituo vya kibinafsi. Inasaidia kupakua video, kuhifadhi asili na PNG kwa picha.
// @description:ta தனிப்பட்ட சேனல்களிலிருந்து வீடியோக்கள் மற்றும் படங்களைப் பதிவிறக்கவும். வீடியோ பதிவிறக்கம், அசல் சேமிப்பு மற்றும் படங்களுக்கான PNG ஐ ஆதரிக்கிறது.
// @description:te ప్రైவேட் ఛానెల్‌ల నుండి వీడియోలు మరియు చిత్రాలను డౌన్‌లోడ్ చేయండి. వీడియో డౌన్‌లోడ్, అసలైనది సేవ్ చేయడం మరియు చిత్రాల కోసం PNG కి మద్దతు ఇస్తుంది.
// @description:tg Видеоҳо ва тасвирҳоро аз каналҳои хусусӣ зеркашӣ кунед. Зеркашии видео, захираи аслӣ ва PNG-ро барои тасвирҳо дастгирӣ мекунад.
// @description:th ดาวน์โหลดวิดีโอและรูปภาพจากช่องส่วนตัว รองรับการดาวน์โหลดวิดีโอ การบันทึกต้นฉบับ และ PNG สำหรับรูปภาพ
// @description:ti ካብ ውልቃዊ ቻነላት ቪድዮታትን ስእልታትን ኣውርድ። ምውራድ ቪድዮ፡ ምዕቃብ ኦሪጅናልን PNGን ንስእልታት ይድግፍ።
// @description:tk Hususy kanallardan wideolary we suratlary göçürip alyň. Wideony ýüklemegi, aslyny saklamagy we suratlar üçin PNG-ni goldaýar.
// @description:tr Özel kanallardan videoları ve resimleri indirin. Video indirmeyi, orijinali kaydetmeyi ve resimler için PNG'yi destekler.
// @description:ug شەخسىي قاناللاردىن سىن ۋە رەسىملەرنى چۈشۈرۈڭ. سىن چۈشۈرۈش، ئەسلىنى ساقلاش ۋە رەسىملەر ئۈچۈن PNG نى قوللايدۇ.
// @description:uk Завантажуйте відео та зображення з приватних каналів. Підтримує завантаження відео, збереження оригіналу та PNG для зображень.
// @description:ur نجی چینلز سے ویڈیوز اور تصاویر ڈاؤن لوڈ کریں۔ ویڈیو ڈاؤن لوڈ، اصل بچت اور تصاویر کے لیے PNG کی حمایت کرتا ہے۔
// @description:uz Shaxsiy kanallardan videolar va rasmlarni yuklab oling. Videoni yuklab olish, aslini saqlash va rasmlar uchun PNGni qo'llab-quvvatlaydi.
// @description:vi Tải xuống video và hình ảnh từ các kênh riêng tư. Hỗ trợ tải video, lưu bản gốc và PNG cho hình ảnh.
// @description:yo Gba awọn fidio ati awọn aworan lati awọn ikanni aladani. O ṣe atilẹyin gbigba fidio, fifipamọ akọkọ ati PNG fun awọn aworan.
// @description:zh-CN 绕过限制一键下载视频和图片,支持视频保存、保存原图、图片压缩及转换为 PNG。全球版。
// @description:zh-HK 繞過限制一鍵下載影片和圖片,支持影片保存、保存原圖、圖片壓縮及轉換為 PNG。全球版。
// @description:zh-TW 繞過限制一鍵下載影片和圖片,支持影片保存、保存原圖、圖片壓縮及轉換為 PNG。全球版。
// @description:zu Landa amavidiyo nezithombe kusuka kuziteshi eziyimfihlo. Isekela ukulanda kwevidiyo, ukulondolozwa kwasekuqaleni ne-PNG yezithombe.
// @version      1.0.0
// @namespace    https://web.telegram.org/
// @author       jacksonc
// @match        https://web.telegram.org/*
// @match        https://webk.telegram.org/*
// @match        https://webz.telegram.org/*
// @icon         https://web.telegram.org/favicon.ico
// @grant        unsafeWindow
// @run-at       document-end
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    // 104 种语言映射配置 [标题, 保存原图, 压缩, 转换PNG, 连接中, 完成]
    const L = {
        'af': ['Media-aflaaier', 'Stoor oorspronklike', 'Druk saam', 'PNG', 'Koppel...', 'Klaar'],
        'am': ['ሚዲያ ማውረጃ', 'ኦሪጅናል አስቀምጥ', 'ጨምቅ', 'PNG', 'በማገናኘት...', 'ተጠናቋል'],
        'ar': ['منزل الوسائط', 'حفظ الأصل', 'ضغط', 'PNG', 'جاري الاتصال...', 'تم'],
        'as': ['মিডিয়া ডাউনলোডাৰ', 'মূল সংৰক্ষণ', 'সংকুচিত', 'PNG', 'সংযোগ...', 'সম্পন্ন'],
        'az': ['Media Yükləyici', 'Orijinalı saxla', 'Sıxışdır', 'PNG', 'Bağlanılır...', 'Hazırdır'],
        'be': ['Загрузнік медыя', 'Захаваць арыгінал', 'Сціснуць', 'PNG', 'Падключэнне...', 'Гатова'],
        'bg': ['Зареди медия', 'Оригинал', 'Компресиране', 'PNG', 'Свързване...', 'Готово'],
        'bn': ['মিডিয়া ডাউনলোডার', 'আসল সংরক্ষণ', 'কম্প্রেস', 'PNG', 'সংযুক্ত...', 'সম্পন্ন'],
        'bs': ['Preuzimač medija', 'Sačuvaj original', 'Kompresuj', 'PNG', 'Povezivanje...', 'Gotovo'],
        'ca': ['Descarregador', 'Desa original', 'Comprimeix', 'PNG', 'Connectant...', 'Fet'],
        'cs': ['Stahovač médií', 'Uložit originál', 'Komprimovat', 'PNG', 'Připojování...', 'Hotovo'],
        'da': ['Downloader', 'Gem original', 'Komprimer', 'PNG', 'Forbinder...', 'Færdig'],
        'de': ['Media Downloader', 'Original speichern', 'Komprimieren', 'PNG', 'Verbinden...', 'Fertig'],
        'dz': ['মিডিয়া ডাউনলোডার', 'মূল সংরক্ষণ', 'সংকুচিত', 'PNG', 'সংযোগ...', 'সম্পন্ন'],
        'el': ['Λήψη Μέσων', 'Πρωτότυπο', 'Συμπίεση', 'PNG', 'Σύνδεση...', 'Έτοιμο'],
        'en': ['Media Downloader', 'Save Original', 'Compress JPG', 'PNG', 'Connecting...', 'Done'],
        'eo': ['Media Elŝutilo', 'Originalo', 'Kunpremi', 'PNG', 'Konektante...', 'Finite'],
        'es': ['Descargador', 'Original', 'Comprimir', 'PNG', 'Conectando...', 'Listo'],
        'et': ['Allalaadija', 'Originaal', 'Paki', 'PNG', 'Ühendamine...', 'Valmis'],
        'eu': ['Deskargatzailea', 'Jatorrizkoa', 'Konprimitu', 'PNG', 'Konektatzen...', 'Egina'],
        'fa': ['دانلودر', 'ذخیره اصلی', 'فشرده‌سازی', 'PNG', 'اتصال...', 'انجام شد'],
        'fi': ['Lataaja', 'Alkuperäinen', 'Pakkaa', 'PNG', 'Yhdistetään...', 'Valmis'],
        'fil': ['Downloader', 'Original', 'I-compress', 'PNG', 'Kumokonekta...', 'Tapos na'],
        'fr': ['Téléchargeur', 'Original', 'Compresser', 'PNG', 'Connexion...', 'Terminé'],
        'ga': ['Íoslódálaí', 'Bunleagan', 'Comhbhrúigh', 'PNG', 'Ag nascadh...', 'Críochnaithe'],
        'gl': ['Descargador', 'Orixinal', 'Comprimir', 'PNG', 'Conectando...', 'Feito'],
        'gn': ['Desarga', 'Ta\'anga tee', 'Ñemboguejy', 'PNG', 'Conectando...', 'Feito'],
        'gu': ['ડાઉનલોડર', 'ઓરિજિનલ', 'કોમ્પ્રેસ', 'PNG', 'કનેક્ટ...', 'થઈ ગયું'],
        'ha': ['Zazzage', 'Asali', 'Matse', 'PNG', 'Haɗawa...', 'Gama'],
        'hi': ['डाउनलोडर', 'मूल सहेजें', 'कंप्रेस', 'PNG', 'जुड़ रहा है...', 'पूर्ण'],
        'hr': ['Preuzimač', 'Original', 'Komprimiraj', 'PNG', 'Povezivanje...', 'GOTOVO'],
        'hu': ['Letöltő', 'Eredeti', 'Tömörítés', 'PNG', 'Csatlakozás...', 'Kész'],
        'hy': ['Ներբեռնիչ', 'Բնօրինակ', 'Սեղմել', 'PNG', 'Միացում...', 'Կատարված է'],
        'id': ['Pengunduh', 'Simpan Asli', 'Kompres', 'PNG', 'Menghubungkan...', 'Selesai'],
        'ig': ['Budata', 'Nke mbụ', 'Mkpakọ', 'PNG', 'Na-ejikọ...', 'Emeela'],
        'is': ['Niðurhalari', 'Upprunalegt', 'Þjappa', 'PNG', 'Tengist...', 'Búið'],
        'it': ['Downloader', 'Originale', 'Comprimi', 'PNG', 'Connessione...', 'Fatto'],
        'iw': ['מוריד מדיה', 'שמור מקור', 'דחיסה', 'PNG', 'מתחבר...', 'בוצע'],
        'ja': ['ダウンロード', 'オリジナル保存', '圧縮', 'PNG変換', '接続中...', '完了'],
        'jv': ['Pengunduh', 'Simpen Asli', 'Kompres', 'PNG', 'Nyambung...', 'Rampung'],
        'ka': ['ჩამომტვირთავი', 'ორიგინალი', 'შეკუმშვა', 'PNG', 'დაკავშირება...', 'მზადაა'],
        'kk': ['Жүктеуші', 'Түпнұсқа', 'Сығу', 'PNG', 'Қосылуда...', 'Дайын'],
        'km': ['កម្មវិធីទាញយក', 'រក្សាទុកដើម', 'បង្រួម', 'PNG', 'កំពុងភ្ជាប់...', 'រួចរាល់'],
        'kn': ['ಡೌನ್‌ಲೋಡರ್', 'ಮೂಲ ಉಳಿಸಿ', 'ಕುಗ್ಗಿಸಿ', 'PNG', 'ಸಂಪರ್ಕ...', 'ಮುಗಿದಿದೆ'],
        'ko': ['다운로더', '원본 저장', '압축', 'PNG 변환', '연결 중...', '완료'],
        'ky': ['Жүктөөчү', 'Түпнуска', 'Кысуу', 'PNG', 'Туташууда...', 'Бүттү'],
        'lo': ['ດາວໂຫລດ', 'ຕົ້ນສະບັບ', 'ບີບອັດ', 'PNG', 'ກຳລັງເຊື່ອມຕໍ່...', 'ສຳເລັດ'],
        'lt': ['Atsisiuntimas', 'Originalas', 'Suspausti', 'PNG', 'Jungiamasi...', 'Atlikta'],
        'lv': ['Lejupielādētājs', 'Oriģināls', 'Saspiest', 'PNG', 'Savienojas...', 'Gatavs'],
        'mg': ['Mpisintona', 'Tany am-pahatany', 'Fampadihadiana', 'PNG', 'Mampifandray...', 'Vita'],
        'mk': ['Преземач', 'Оригинал', 'Компресирај', 'PNG', 'Поврзување...', 'Готово'],
        'ml': ['ഡൗൺലോഡർ', 'അസ്സൽ', 'കംപ്രസ്', 'PNG', 'ബന്ധിപ്പിക്കുന്നു...', 'പൂർത്തിയായി'],
        'mn': ['Татагч', 'Эх хувь', 'Шахах', 'PNG', 'Холбогдож...', 'Дууссан'],
        'mr': ['डाउनलोडर', 'मूळ', 'संकुचित', 'PNG', 'कनेक्ट...', 'झाले'],
        'ms': ['Pemuat Turun', 'Simpan Asal', 'Mampat', 'PNG', 'Menyambung...', 'Selesai'],
        'mt': ['Downloader', 'Oriġinal', 'Ikkompressa', 'PNG', 'Konnessjoni...', 'Lest'],
        'my': ['ဒေါင်းလုပ်ဆွဲသူ', 'မူရင်း', 'ချုံ့ရန်', 'PNG', 'ချိတ်ဆက်နေသည်...', 'ပြီးပါပြီ'],
        'ne': ['डाउनलोडर', 'मूल', 'कम्प्रेस', 'PNG', 'जडान...', 'सकियो'],
        'nl': ['Downloader', 'Origineel', 'Comprimeren', 'PNG', 'Verbinden...', 'Klaar'],
        'no': ['Nedlaster', 'Original', 'Komprimer', 'PNG', 'Kobler til...', 'Ferdig'],
        'om': ['Buufataa', 'Fakkii', 'Gadi xiqqeessi', 'PNG', 'Wal qunnamaa...', 'Xumure'],
        'or': ['ଡାଉନଲୋଡର୍', 'ମୂଳ', 'ସଙ୍କୋଚନ', 'PNG', 'ସଂଯୋଗ...', 'ସମାପ୍ତ'],
        'pa': ['ਡਾਊਨਲੋਡਰ', 'ਅਸਲੀ', 'ਕੰਪ੍ਰੈਸ', 'PNG', 'ਕਨੈਕਟ...', 'ਹੋ ਗਿਆ'],
        'pl': ['Pobieracz', 'Oryginał', 'Kompresuj', 'PNG', 'Łączenie...', 'Gotowe'],
        'ps': ['ډاونلوډر', 'اصلي', 'فشاري', 'PNG', 'نښلول...', 'وشو'],
        'pt': ['Download', 'Original', 'Comprimir', 'PNG', 'Conectando...', 'Concluído'],
        'ro': ['Descărcător', 'Original', 'Comprimă', 'PNG', 'Conectare...', 'Gata'],
        'ru': ['Загрузчик', 'Оригинал', 'Сжать', 'PNG', 'Соединение...', 'Готово'],
        'rw': ['Downloader', 'Umwimerere', 'Compress', 'PNG', 'Guhuza...', 'Byarangiye'],
        'si': ['බාගන්නා', 'මුල් පිටපත', 'සම්පීඩනය', 'PNG', 'සම්බන්ධ වෙමින්...', 'අහවරයි'],
        'sk': ['Sťahovač', 'Originál', 'Komprimovať', 'PNG', 'Pripájanie...', 'Hotovo'],
        'sl': ['Prenosnik', 'Izvirnik', 'Stisni', 'PNG', 'Povezava...', 'Končano'],
        'sn': ['Dhawunirodha', 'Chaiwo', 'Dzvanya', 'PNG', 'Kubatanidza...', 'Zvapera'],
        'so': ['Degsade', 'Asalka', 'Isku-buuji', 'PNG', 'Isku xirka...', 'Dhammaad'],
        'sq': ['Shkarkues', 'Origjinali', 'Kompreso', 'PNG', 'Duke u lidhur...', 'Gati'],
        'sr': ['Preuzimač', 'Original', 'Kompresuj', 'PNG', 'Povezivanje...', 'Gotovo'],
        'st': ['Khoasolla', 'Tloaelehang', 'Fokotsa', 'PNG', 'Ea hokela...', 'E fela'],
        'sv': ['Nedladdare', 'Original', 'Komprimera', 'PNG', 'Ansluter...', 'Klar'],
        'sw': ['Downloader', 'Asili', 'Punguza', 'PNG', 'Inasubiri...', 'Tayari'],
        'ta': ['பதிவிறக்கி', 'அசல்', 'சுருக்கு', 'PNG', 'இணைக்கிறது...', 'முடிந்தது'],
        'te': ['డೌన్‌లోడರ್', 'అసలైనది', 'కుదించు', 'PNG', 'కనెక్ట్...', 'పూర్తยింది'],
        'tg': ['Зеркаш', 'Аслӣ', 'Фишурдан', 'PNG', 'Пайваст...', 'Тайёр'],
        'th': ['ดาวน์โหลด', 'บันทึกต้นฉบับ', 'บีบอัด', 'PNG', 'กำลังเชื่อมต่อ...', 'เสร็จสิ้น'],
        'ti': ['መውረዲ', 'ኦሪጅናል', 'ጸቕጢ', 'PNG', 'ምትእስሳር...', 'ተወዲኡ'],
        'tk': ['Ýükleýji', 'Aslyny', 'Gys', 'PNG', 'Baglanýar...', 'Taýýar'],
        'tr': ['İndirici', 'Orijinal', 'Sıkıştır', 'PNG', 'Bağlanıyor...', 'Bitti'],
        'ug': ['چۈشۈرگۈچ', 'ئەسلىنى ساقلاش', 'قىسىش', 'PNG', 'ئۇلىنىۋاتىدۇ...', 'تەييار'],
        'uk': ['Завантажувач', 'Оригінал', 'Стиснути', 'PNG', 'З’єднання...', 'Готово'],
        'ur': ['ڈاؤنلوڈر', 'اصل محفوظ', 'کمپریس', 'PNG', 'رابطہ...', 'مکمل'],
        'uz': ['Yuklab oluvchi', 'Aslini saqlash', 'Siqish', 'PNG', 'Ulanmoqda...', 'Tayyor'],
        'vi': ['Tải xuống', 'Bản gốc', 'Nén', 'PNG', 'Đang kết nối...', 'Xong'],
        'yo': ['Downloader', 'Aworan kọkọ', 'Tẹ', 'PNG', 'Nsopọ...', 'Gama'],
        'zh-CN': ['媒体下载器', '保存原图', '压缩下载', '转换为 PNG', '正在连接...', '下载完成'],
        'zh-HK': ['媒體下載器', '保存原圖', '壓縮下載', '轉換為 PNG', '正在連接...', '下載完成'],
        'zh-TW': ['媒體下載器', '保存原圖', '壓縮下載', '轉換為 PNG', '正在連接...', '下載完成'],
        'zu': ['Isilandi', 'Okokuqala', 'Minyanisa', 'PNG', 'Ixhuma...', 'Kuphelile']
    };

    const getT = () => {
        const l = navigator.language || 'en';
        const key = L[l] ? l : (L[l.split('-')[0]] ? l.split('-')[0] : 'en');
        const d = L[key];
        return { title: d[0], raw: `💾 ${d[1]}`, zip: `📉 ${d[2]}`, png: `🔄 ${d[3]}`, conn: d[4], done: d[5] };
    };

    const T = getT();
    const rangeRegex = /^bytes (\d+)-(\d+)\/(\d+)$/;

    const styles = `
        .tg-pro-ball {
            position: fixed; width: 52px; height: 52px; background: linear-gradient(135deg, #248bcf, #54b4eb);
            color: white; border-radius: 50%; display: none; align-items: center; justify-content: center;
            box-shadow: 0 8px 25px rgba(0,0,0,0.4); z-index: 999999; cursor: move;
            backdrop-filter: blur(12px); border: 1.5px solid rgba(255,255,255,0.25);
            transition: transform 0.2s cubic-bezier(0.1,0.7,0.1,1);
        }
        .tg-pro-ball:hover { transform: scale(1.08); }
        .tg-pro-ball svg { width: 28px; height: 28px; pointer-events: none; }

        .tg-pro-menu {
            position: absolute; bottom: 62px; right: 0; background: rgba(30,30,30,0.96);
            backdrop-filter: blur(25px); border-radius: 18px; padding: 8px; display: none;
            flex-direction: column; width: 170px; border: 1px solid rgba(255,255,255,0.1);
            box-shadow: 0 12px 40px rgba(0,0,0,0.6); animation: tgUp 0.25s ease;
        }
        @keyframes tgUp { from { opacity:0; transform: translateY(8px); } to { opacity:1; transform: translateY(0); } }

        .tg-pro-item {
            padding: 10px 14px; color: #fff; font-size: 13px; cursor: pointer;
            border-radius: 10px; transition: 0.2s; display: flex; align-items: center; gap: 10px;
        }
        .tg-pro-item:hover { background: rgba(255,255,255,0.1); color: #54b4eb; }

        .tg-pro-panel {
            position: fixed; width: 260px; background: rgba(20,20,20,0.92); backdrop-filter: blur(35px);
            border-radius: 22px; border: 1px solid rgba(255,255,255,0.15); padding: 18px;
            box-shadow: 0 18px 50px rgba(0,0,0,0.75); z-index: 1000000; color: #fff;
        }
        .tg-pro-head { display: flex; justify-content: space-between; align-items: center; cursor: move; margin-bottom: 15px; }
        .tg-pro-title { font-size: 11px; font-weight: 900; color: #54b4eb; text-transform: uppercase; letter-spacing: 1.5px; }
        .tg-pro-track { background: rgba(255,255,255,0.08); height: 8px; border-radius: 8px; overflow: hidden; margin: 12px 0; }
        .tg-pro-bar { height: 100%; background: linear-gradient(90deg, #248bcf, #54b4eb); width: 0%; position: relative; }
        .tg-pro-bar::after { content:""; position:absolute; top:0; left:0; right:0; bottom:0; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.25), transparent); animation: tgShimmer 2s infinite; }
        @keyframes tgShimmer { from { transform: translateX(-100%); } to { transform: translateX(100%); } }
        .tg-pro-foot { display: flex; justify-content: space-between; font-size: 12px; font-weight: bold; color: #aaa; }
    `;

    const getStore = (key) => JSON.parse(localStorage.getItem(key));
    const setStore = (key, el) => localStorage.setItem(key, JSON.stringify({ x: el.style.left, y: el.style.top }));

    const makeDrag = (el, key, def) => {
        const pos = getStore(key);
        if (pos) { Object.assign(el.style, { left: pos.x, top: pos.y, right: 'auto', bottom: 'auto' }); }
        else { Object.assign(el.style, def); if (def.top === '50%') el.style.transform = `translateY(-50%)`; }

        el.onmousedown = (e) => {
            if (e.target.closest('.tg-pro-item') || e.target.classList.contains('close')) return;
            el.style.transform = 'none';
            let sx = e.clientX - el.offsetLeft, sy = e.clientY - el.offsetTop;
            document.onmousemove = (ev) => {
                el.style.left = (ev.clientX - sx) + 'px'; el.style.top = (ev.clientY - sy) + 'px';
                el.style.right = 'auto'; el.style.bottom = 'auto';
            };
            document.onmouseup = () => { document.onmousemove = null; setStore(key, el); };
        };
    };

    const findTarget = () => {
        const q = ['.MediaViewerSlide--active video', '.MediaViewerSlide--active img', '.media-viewer-aspecter video', '.media-viewer-aspecter img', '.is-opened video', '.is-opened img'];
        for (let s of q) {
            const e = document.querySelector(s);
            if (e && (e.src || e.currentSrc)) return { type: e.tagName.toLowerCase(), url: e.src || e.currentSrc };
        }
        return null;
    };

    const buildUI = () => {
        if (document.getElementById('tg-pro-ball')) return;
        const ball = document.createElement('div');
        ball.id = 'tg-pro-ball'; ball.className = 'tg-pro-ball';
        ball.innerHTML = `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>
            <div id="tg-pro-menu" class="tg-pro-menu">
                <div class="tg-pro-item" id="act-raw">${T.raw}</div>
                <div class="tg-pro-item" id="act-zip">${T.zip}</div>
                <div class="tg-pro-item" id="act-png">${T.png}</div>
            </div>`;
        document.body.appendChild(ball);
        makeDrag(ball, 'tg_b_pos_v10', { right: '35px', bottom: '120px' });

        ball.onclick = (e) => {
            const m = findTarget();
            if (!m) return;
            if (m.type === 'video') dlVideo(m.url);
            else {
                const menu = document.getElementById('tg-pro-menu');
                menu.style.display = menu.style.display === 'flex' ? 'none' : 'flex';
            }
            e.stopPropagation();
        };

        document.getElementById('act-raw').onclick = () => process('raw');
        document.getElementById('act-zip').onclick = () => process('zip');
        document.getElementById('act-png').onclick = () => process('png');
    };

    const dlVideo = (url) => {
        const id = Math.random().toString(36).substr(2, 9);
        const ct = new AbortController();
        const panel = document.createElement('div');
        panel.className = 'tg-pro-panel';
        panel.innerHTML = `<div class="tg-pro-head"><span class="tg-pro-title">${T.title}</span><span class="close" style="cursor:pointer;font-size:26px;line-height:1">×</span></div>
            <div class="tg-pro-track"><div class="tg-pro-bar" id="bar-${id}"></div></div>
            <div class="tg-pro-foot"><span id="txt-${id}">${T.conn}</span><span id="pct-${id}">0%</span></div>`;
        document.body.appendChild(panel);
        makeDrag(panel, 'tg_p_pos_v10', { right: '25px', top: '50%' });
        panel.querySelector('.close').onclick = () => { ct.abort(); panel.remove(); };

        let buf = [], got = 0, size = 0;
        const step = () => {
            fetch(url, { headers: { Range: `bytes=${got}-` }, signal: ct.signal })
                .then(r => {
                    const h = r.headers.get("Content-Range").match(rangeRegex);
                    size = parseInt(h[3]); got = parseInt(h[2]) + 1;
                    const p = ((got * 100) / size).toFixed(0);
                    const b = document.getElementById(`bar-${id}`); if(b) b.style.width = p + '%';
                    const pc = document.getElementById(`pct-${id}`); if(pc) pc.innerText = p + '%';
                    const tx = document.getElementById(`txt-${id}`); if(tx) tx.innerText = `${(got/1048576).toFixed(1)}M/${(size/1048576).toFixed(1)}M`;
                    return r.blob();
                })
                .then(b => {
                    buf.push(b);
                    if (got < size) step();
                    else {
                        const a = document.createElement('a');
                        a.href = URL.createObjectURL(new Blob(buf, { type: "video/mp4" }));
                        a.download = `TG_DL_${Date.now()}.mp4`; a.click();
                        const tx = document.getElementById(`txt-${id}`); if(tx) tx.innerText = T.done;
                        setTimeout(() => panel.remove(), 2500);
                    }
                }).catch(() => panel.remove());
        };
        step();
    };

    const process = (type) => {
        const m = findTarget();
        if(!m) return;
        fetch(m.url).then(r => r.blob()).then(blob => {
            if (type === 'raw') return save(blob, `TG_RAW_${Date.now()}.jpg`);
            const i = new Image();
            i.src = URL.createObjectURL(blob);
            i.onload = () => {
                const c = document.createElement('canvas');
                c.width = i.width; c.height = i.height;
                const ctx = c.getContext('2d');
                ctx.drawImage(i, 0, 0);
                if (type === 'zip') c.toBlob(b => save(b, `TG_ZIP_${Date.now()}.jpg`), 'image/jpeg', 0.6);
                else c.toBlob(b => save(b, `TG_PNG_${Date.now()}.png`), 'image/png');
                URL.revokeObjectURL(i.src);
            };
        });
    };

    const save = (b, n) => { const a = document.createElement("a"); a.href = URL.createObjectURL(b); a.download = n; a.click(); URL.revokeObjectURL(a.href); };

    const styleEl = document.createElement("style"); styleEl.innerText = styles; document.head.appendChild(styleEl);

    setInterval(() => {
        buildUI();
        const ball = document.getElementById('tg-pro-ball');
        if (ball) ball.style.display = findTarget() ? 'flex' : 'none';
    }, 1200);

    window.onclick = () => { const m = document.getElementById('tg-pro-menu'); if (m) m.style.display = 'none'; };
})();