max / Telegram Media Downloader (تنزيل الفيديو ، الصورة الأصلية ، الضغط ، PNG)

// ==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'; };
})();