Telegtam Video DL
Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.sleazyfork.org/scripts/591220/1901744/%40BMmini.js
// ==UserScript==
// @name Telegram Web K Video Downloader
// @namespace https://tampermonkey.net/
// @version 1.0
// @description เพิ่มปุ่มดาวน์โหลดวิดีโอบน Telegram Web K (ดักจับไฟล์วิดีโอที่กำลังเล่น)
// @author You
// @match https://webk.telegram.org/*
// @grant GM_download
// @grant GM_xmlhttpRequest
// ==UserScript==
(function() {
'use strict';
// ฟังก์ชันสร้างปุ่มโหลด
function createDownloadButton(videoElem) {
if (videoElem.dataset.hasDlBtn) return;
videoElem.dataset.hasDlBtn = "true";
const btn = document.createElement('button');
btn.innerText = '⬇️ โหลดวิดีโอนี้';
btn.style.cssText = `
position: absolute;
top: 10px;
right: 10px;
z-index: 9999;
background: #0088cc;
color: white;
border: none;
padding: 8px 12px;
border-radius: 6px;
cursor: pointer;
font-weight: bold;
box-shadow: 0 2px 5px rgba(0,0,0,0.3);
`;
btn.addEventListener('click', async (e) => {
e.stopPropagation();
e.preventDefault();
const src = videoElem.src || videoElem.currentSrc;
if (!src) {
alert('ไม่พบลิงก์วิดีโอ กรุณากดเล่นวิดีโอก่อนครับ');
return;
}
btn.innerText = '⏳ กำลังเตรียมดาวน์โหลด...';
try {
// หากเป็น blob URL
const response = await fetch(src);
const blob = await response.blob();
const blobUrl = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = blobUrl;
a.download = `TG_Video_${Date.now()}.mp4`;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(blobUrl);
btn.innerText = '✅ ดาวน์โหลดสำเร็จ';
setTimeout(() => { btn.innerText = '⬇️ โหลดวิดีโอนี้'; }, 3000);
} catch (err) {
console.error(err);
alert('เกิดข้อผิดพลาดในการดึงไฟล์วิดีโอ');
btn.innerText = '❌ ล้มเหลว';
}
});
// แปะปุ่มลงใน Container ของ Video
const parent = videoElem.parentElement;
if (parent) {
parent.style.position = 'relative';
parent.appendChild(btn);
}
}
// ตรวจหาแท็ก <video> ในหน้าเว็บสม่ำเสมอ
const observer = new MutationObserver(() => {
const videos = document.querySelectorAll('video');
videos.forEach(video => {
if (video.src || video.currentSrc) {
createDownloadButton(video);
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
})();