// ==UserScript==
// @name Snapchat Image & Video Downloader (HD)
// @name:tr Snapchat Resim & Video İndirici (HD)
// @name:zh-CN Snapchat 图片和视频下载器 (高清)
// @name:fr Snapchat Téléchargeur d'images et de vidéos (HD)
// @name:ru Snapchat Загрузчик изображений и видео (HD)
// @name:ar سناب شات منزل الصور والفيديوهات (HD)
// @name:es Snapchat Descargador de Imágenes y Videos (HD)
// @name:pt Snapchat Baixador de Imagens e Vídeos (HD)
// @name:de Snapchat Bild- & Video-Downloader (HD)
// @name:hi Snapchat छवि और वीडियो डाउनलोडर (HD)
// @name:it Snapchat Downloader di Immagini e Video (HD)
// @name:ja Snapchat 画像&動画ダウンローダー (HD)
// @name:ko Snapchat 이미지 및 비디오 다운로더 (HD)
// @name:bn Snapchat ছবি এবং ভিডিও ডাউনলোডার (HD)
// @name:id Snapchat Pengunduh Gambar & Video (HD)
// @namespace https://tr-wp.com
// @version 2.5.0
// @description Download Snapchat images and videos in full resolution with a double-click or a dedicated button. Supports 15+ languages.
// @description:tr Snapchat resimlerini ve videolarını çift tıklamayla veya özel bir butonla tam çözünürlükte indirin. 15+ dil desteği.
// @description:zh-CN 双击或通过专用按钮以全分辨率下载 Snapchat 图片和视频。支持 15+ 种语言。
// @description:fr Téléchargez des images et des vidéos Snapchat en pleine résolution d'un double-clic ou via un bouton dédié. Supporte 15+ langues.
// @description:ru Загружайте изображения и видео из Snapchat в полном разрешении двойным кликом или с помощью специальной кнопки. Поддержка 15+ языков.
// @description:ar قم بتنزيل صور وفيديوهات سناب شات بدقة كاملة بنقرة مزدوجة أو عبر زر مخصص. يدعم أكثر من 15 لغة.
// @description:es Descarga imágenes y videos de Snapchat en resolución completa con un doble clic o un botón dedicado. Soporta más de 15 idiomas.
// @description:pt Baixe imagens e vídeos do Snapchat em resolução total com um duplo clique ou um botão dedicado. Suporta mais de 15 idiomas.
// @description:de Laden Sie Snapchat-Bilder und -Videos in voller Auflösung mit einem Doppelklick oder einer speziellen Schaltfläche herunter. Unterstützt 15+ Sprachen.
// @description:hi डबल-क्लिक या एक समर्पित बटन के साथ पूर्ण रिज़ॉल्यूशन में स्नैपचैट चित्र और वीडियो डाउनलोड करें। 15+ भाषाओं का समर्थन करता है।
// @description:it Scarica immagini e video di Snapchat a risoluzione completa con un doppio clic o un pulsante dedicato. Supporta oltre 15 lingue.
// @description:ja ダブルクリックまたは専用ボタン ile Snapchat の画像とビデオをフル解像度でダウンロードします。15 言語以上をサポート。
// @description:ko 더블 클릭 또는 전용 버튼을 사용하여 전체 해상도로 Snapchat 이미지 및 비디오를 다운로드하십시오. 15개 이상의 언어를 지원합니다.
// @description:bn ডাবল-ক্লিক বা একটি ডেডিকেটেড বোতামের সাহায্যে পূর্ণ রেজোলিউশনে স্ন্যাপচ্যাট ছবি এবং ভিডিও ডাউনলোড করুন। ১৫টিরও বেশি ভাষা সমর্থন করে।
// @description:id Unduh gambar dan video Snapchat dalam resolusi penuh dengan klik ganda veya tombol özel. Mendukung 15+ bahasa.
// @author Yoka - tr-wp.com
// @match *://*.snapchat.com/*
// @grant GM_download
// @grant GM_addStyle
// @run-at document-start
// @license MIT
// @icon https://www.google.com/s2/favicons?domain=snapchat.com&sz=64
// ==/UserScript==
(function () {
'use strict';
const translations = {
'en': 'Download',
'tr': 'İndir',
'es': 'Descargar',
'fr': 'Télécharger',
'de': 'Herunterladen',
'pt': 'Baixar',
'ru': 'Скачать',
'zh': '下载',
'hi': 'डाउनलोड',
'ar': 'تنزيل',
'ja': 'ダウンロード',
'ko': '다운로드',
'bn': 'ডাউনলোড',
'it': 'Scarica',
'id': 'Unduh'
};
const getLang = () => {
const lang = navigator.language.split('-')[0];
return translations[lang] || translations['en'];
};
GM_addStyle(`
.snap-dl-btn {
position: absolute;
bottom: 12px;
right: 12px;
z-index: 2147483647;
background: rgba(0, 0, 0, 0.7);
color: #fff;
border: 1px solid rgba(255, 255, 255, 0.4);
border-radius: 6px;
padding: 5px 10px;
font-size: 12px;
font-weight: bold;
cursor: pointer;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
backdrop-filter: blur(5px);
transition: all 0.2s ease;
display: flex;
align-items: center;
gap: 5px;
}
.snap-dl-btn:hover {
background: rgba(0, 0, 0, 0.9);
transform: scale(1.05);
border-color: #fffc00;
}
.snap-container-relative { position: relative !important; }
`);
const downloadMedia = (el) => {
const src = el.currentSrc || el.src;
if (!src || !src.startsWith('blob:')) return;
const type = el instanceof HTMLVideoElement ? 'video' : 'image';
const extension = type === 'video' ? 'mp4' : 'png';
const now = new Date();
const timestamp = now.toISOString().replace(/[:.]/g, '-');
const filename = `snapchat_${type}_${timestamp}.${extension}`;
GM_download({
url: src,
name: filename,
saveAs: false,
onload: () => console.log(`[SnapDL] ✅ Saved: ${filename}`),
onerror: err => console.error('[SnapDL] ❌ Error:', err)
});
};
const injectButtons = () => {
const mediaElements = document.querySelectorAll('img, video');
const buttonText = getLang();
mediaElements.forEach(el => {
const src = el.currentSrc || el.src;
if (!src || !src.startsWith('blob:')) return;
if (el.dataset.snapDlReady) return;
el.dataset.snapDlReady = 'true';
const container = el.parentElement;
if (container) {
container.classList.add('snap-container-relative');
const btn = document.createElement('button');
btn.className = 'snap-dl-btn';
btn.innerHTML = `<span>⬇</span> ${buttonText}`;
btn.onclick = (e) => {
e.preventDefault();
e.stopPropagation();
downloadMedia(el);
};
container.appendChild(btn);
}
});
};
document.addEventListener('dblclick', (e) => {
const el = e.target;
if (el instanceof HTMLImageElement || el instanceof HTMLVideoElement) {
downloadMedia(el);
}
}, true);
const observer = new MutationObserver(() => injectButtons());
const init = () => {
if (document.body) {
observer.observe(document.body, { childList: true, subtree: true });
injectButtons();
}
};
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();