Git Komut Rehberi & Terminal Asistanı
Sıfırdan Yeni Bir Depo Başlatın:
Mevcut Bir Git Deposu veya Klasörü Gönderin:
Hataları Geri Alma, İptal & Temizlik:
Son commit'i geri al (yapılan değişiklikleri korur):
git reset --soft HEAD~1
Yapılan yerel değişiklikleri iptal et (çalışma ağacını temizler):
git restore .
Takip edilmeyen gereksiz dosyaları sil:
git clean -fd
Değişiklikleri geçici sakla ve geri getir (stash):
git stash git stash pop
Dal (Branch) ve Sürüm Etiketleri:
Yeni dal aç ve geçiş yap:
git checkout -b yeni-ozellik git push -u origin yeni-ozellik
Sürüm etiketi (tag) oluştur ve gönder:
git tag -a v1.0.0 -m "Sürüm 1.0.0" git push origin --tags
style: format code with prettier
This commit is contained in:
@@ -57,7 +57,11 @@ try {
|
|||||||
|
|
||||||
// Ensure Fediverse Global Search (SepiaSearch) is default in PeertubeServerConfig
|
// Ensure Fediverse Global Search (SepiaSearch) is default in PeertubeServerConfig
|
||||||
try {
|
try {
|
||||||
if (window.PeertubeServerConfig && window.PeertubeServerConfig.search && window.PeertubeServerConfig.search.searchIndex) {
|
if (
|
||||||
|
window.PeertubeServerConfig &&
|
||||||
|
window.PeertubeServerConfig.search &&
|
||||||
|
window.PeertubeServerConfig.search.searchIndex
|
||||||
|
) {
|
||||||
window.PeertubeServerConfig.search.searchIndex.isDefaultSearch = true;
|
window.PeertubeServerConfig.search.searchIndex.isDefaultSearch = true;
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
@@ -157,7 +161,9 @@ try {
|
|||||||
// Intercept and sanitize YakNet Account Web Component popup menu
|
// Intercept and sanitize YakNet Account Web Component popup menu
|
||||||
function hookYakNetAccountComponent() {
|
function hookYakNetAccountComponent() {
|
||||||
if (typeof customElements === 'undefined') return;
|
if (typeof customElements === 'undefined') return;
|
||||||
customElements.whenDefined('yaknet-account').then(function () {
|
customElements
|
||||||
|
.whenDefined('yaknet-account')
|
||||||
|
.then(function () {
|
||||||
var YakNetAccount = customElements.get('yaknet-account');
|
var YakNetAccount = customElements.get('yaknet-account');
|
||||||
if (!YakNetAccount || !YakNetAccount.prototype || YakNetAccount.prototype._yaktubeSanitizerHooked) return;
|
if (!YakNetAccount || !YakNetAccount.prototype || YakNetAccount.prototype._yaktubeSanitizerHooked) return;
|
||||||
YakNetAccount.prototype._yaktubeSanitizerHooked = true;
|
YakNetAccount.prototype._yaktubeSanitizerHooked = true;
|
||||||
@@ -184,7 +190,8 @@ try {
|
|||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}).catch(function () {});
|
})
|
||||||
|
.catch(function () {});
|
||||||
}
|
}
|
||||||
hookYakNetAccountComponent();
|
hookYakNetAccountComponent();
|
||||||
|
|
||||||
@@ -1296,20 +1303,34 @@ try {
|
|||||||
|
|
||||||
var header = document.createElement('div');
|
var header = document.createElement('div');
|
||||||
header.className = 'yaktube-feature-modal-header';
|
header.className = 'yaktube-feature-modal-header';
|
||||||
header.innerHTML = '<h3 class="yaktube-feature-modal-title"><span>⏱️</span> Uyku Zamanlayıcısı</h3>' +
|
header.innerHTML =
|
||||||
|
'<h3 class="yaktube-feature-modal-title"><span>⏱️</span> Uyku Zamanlayıcısı</h3>' +
|
||||||
'<button class="yaktube-feature-modal-close" aria-label="Kapat (Escape)">×</button>';
|
'<button class="yaktube-feature-modal-close" aria-label="Kapat (Escape)">×</button>';
|
||||||
|
|
||||||
var body = document.createElement('div');
|
var body = document.createElement('div');
|
||||||
body.className = 'yaktube-feature-modal-body';
|
body.className = 'yaktube-feature-modal-body';
|
||||||
body.innerHTML = '<p class="yaktube-qr-desc">Videonun ne zaman durdurulacağını seçin. Süre bittiğinde ses yavaşça kısılarak oynatma durdurulur.</p>' +
|
body.innerHTML =
|
||||||
|
'<p class="yaktube-qr-desc">Videonun ne zaman durdurulacağını seçin. Süre bittiğinde ses yavaşça kısılarak oynatma durdurulur.</p>' +
|
||||||
'<div class="yaktube-timer-options">' +
|
'<div class="yaktube-timer-options">' +
|
||||||
'<button class="yaktube-timer-btn' + (sleepTimer.mode === '15' ? ' active' : '') + '" data-mins="15">15 Dakika</button>' +
|
'<button class="yaktube-timer-btn' +
|
||||||
'<button class="yaktube-timer-btn' + (sleepTimer.mode === '30' ? ' active' : '') + '" data-mins="30">30 Dakika</button>' +
|
(sleepTimer.mode === '15' ? ' active' : '') +
|
||||||
'<button class="yaktube-timer-btn' + (sleepTimer.mode === '45' ? ' active' : '') + '" data-mins="45">45 Dakika</button>' +
|
'" data-mins="15">15 Dakika</button>' +
|
||||||
'<button class="yaktube-timer-btn' + (sleepTimer.mode === '60' ? ' active' : '') + '" data-mins="60">60 Dakika</button>' +
|
'<button class="yaktube-timer-btn' +
|
||||||
|
(sleepTimer.mode === '30' ? ' active' : '') +
|
||||||
|
'" data-mins="30">30 Dakika</button>' +
|
||||||
|
'<button class="yaktube-timer-btn' +
|
||||||
|
(sleepTimer.mode === '45' ? ' active' : '') +
|
||||||
|
'" data-mins="45">45 Dakika</button>' +
|
||||||
|
'<button class="yaktube-timer-btn' +
|
||||||
|
(sleepTimer.mode === '60' ? ' active' : '') +
|
||||||
|
'" data-mins="60">60 Dakika</button>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<button class="yaktube-timer-btn' + (sleepTimer.mode === 'end' ? ' active' : '') + '" data-mins="end" style="width:100%;">🎬 Bu Video Bitince</button>' +
|
'<button class="yaktube-timer-btn' +
|
||||||
(sleepTimer.targetTime || sleepTimer.mode ? '<button id="yaktube-timer-cancel-btn" class="yaktube-timer-btn" style="background:#ef4444!important;color:#fff!important;border-color:#ef4444!important;">❌ Zamanlayıcıyı İptal Et</button>' : '');
|
(sleepTimer.mode === 'end' ? ' active' : '') +
|
||||||
|
'" data-mins="end" style="width:100%;">🎬 Bu Video Bitince</button>' +
|
||||||
|
(sleepTimer.targetTime || sleepTimer.mode
|
||||||
|
? '<button id="yaktube-timer-cancel-btn" class="yaktube-timer-btn" style="background:#ef4444!important;color:#fff!important;border-color:#ef4444!important;">❌ Zamanlayıcıyı İptal Et</button>'
|
||||||
|
: '');
|
||||||
|
|
||||||
card.appendChild(header);
|
card.appendChild(header);
|
||||||
card.appendChild(body);
|
card.appendChild(body);
|
||||||
@@ -1376,18 +1397,24 @@ try {
|
|||||||
|
|
||||||
var header = document.createElement('div');
|
var header = document.createElement('div');
|
||||||
header.className = 'yaktube-feature-modal-header';
|
header.className = 'yaktube-feature-modal-header';
|
||||||
header.innerHTML = '<h3 class="yaktube-feature-modal-title"><span>📱</span> Telefonda Devam Et</h3>' +
|
header.innerHTML =
|
||||||
|
'<h3 class="yaktube-feature-modal-title"><span>📱</span> Telefonda Devam Et</h3>' +
|
||||||
'<button class="yaktube-feature-modal-close" aria-label="Kapat (Escape)">×</button>';
|
'<button class="yaktube-feature-modal-close" aria-label="Kapat (Escape)">×</button>';
|
||||||
|
|
||||||
var formattedTime = formatClockTime(currentSec);
|
var formattedTime = formatClockTime(currentSec);
|
||||||
var qrImageUrl = 'https://api.qrserver.com/v1/create-qr-code/?size=220x220&margin=8&data=' + encodeURIComponent(targetUrl);
|
var qrImageUrl =
|
||||||
|
'https://api.qrserver.com/v1/create-qr-code/?size=220x220&margin=8&data=' + encodeURIComponent(targetUrl);
|
||||||
|
|
||||||
var body = document.createElement('div');
|
var body = document.createElement('div');
|
||||||
body.className = 'yaktube-feature-modal-body';
|
body.className = 'yaktube-feature-modal-body';
|
||||||
body.innerHTML =
|
body.innerHTML =
|
||||||
'<p class="yaktube-qr-desc">Telefonunuzun kamerasıyla QR kodu okutarak videoyu kaldığınız yerden (<strong>' + formattedTime + '</strong>) izlemeye devam edebilirsiniz.</p>' +
|
'<p class="yaktube-qr-desc">Telefonunuzun kamerasıyla QR kodu okutarak videoyu kaldığınız yerden (<strong>' +
|
||||||
|
formattedTime +
|
||||||
|
'</strong>) izlemeye devam edebilirsiniz.</p>' +
|
||||||
'<div class="yaktube-qr-wrapper">' +
|
'<div class="yaktube-qr-wrapper">' +
|
||||||
'<img src="' + qrImageUrl + '" alt="Video Bağlantısı QR Kodu" width="190" height="190" style="display:block;border-radius:8px;" />' +
|
'<img src="' +
|
||||||
|
qrImageUrl +
|
||||||
|
'" alt="Video Bağlantısı QR Kodu" width="190" height="190" style="display:block;border-radius:8px;" />' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<button id="yaktube-qr-copy-action-btn" class="yaktube-qr-copy-btn">📋 Bağlantıyı Kopyala</button>';
|
'<button id="yaktube-qr-copy-action-btn" class="yaktube-qr-copy-btn">📋 Bağlantıyı Kopyala</button>';
|
||||||
|
|
||||||
@@ -1409,13 +1436,16 @@ try {
|
|||||||
var copyBtn = body.querySelector('#yaktube-qr-copy-action-btn');
|
var copyBtn = body.querySelector('#yaktube-qr-copy-action-btn');
|
||||||
copyBtn.addEventListener('click', function () {
|
copyBtn.addEventListener('click', function () {
|
||||||
if (navigator.clipboard && navigator.clipboard.writeText) {
|
if (navigator.clipboard && navigator.clipboard.writeText) {
|
||||||
navigator.clipboard.writeText(targetUrl).then(function () {
|
navigator.clipboard
|
||||||
|
.writeText(targetUrl)
|
||||||
|
.then(function () {
|
||||||
copyBtn.textContent = '✅ Bağlantı Kopyalandı!';
|
copyBtn.textContent = '✅ Bağlantı Kopyalandı!';
|
||||||
announce('Bağlantı panoya kopyalandı: ' + targetUrl);
|
announce('Bağlantı panoya kopyalandı: ' + targetUrl);
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
copyBtn.textContent = '📋 Bağlantıyı Kopyala';
|
copyBtn.textContent = '📋 Bağlantıyı Kopyala';
|
||||||
}, 2500);
|
}, 2500);
|
||||||
}).catch(function () {
|
})
|
||||||
|
.catch(function () {
|
||||||
fallbackCopy(targetUrl, copyBtn);
|
fallbackCopy(targetUrl, copyBtn);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@@ -1454,7 +1484,8 @@ try {
|
|||||||
if (!existing) {
|
if (!existing) {
|
||||||
existing = document.createElement('div');
|
existing = document.createElement('div');
|
||||||
existing.className = 'yaktube-doubletap-overlay ' + className;
|
existing.className = 'yaktube-doubletap-overlay ' + className;
|
||||||
existing.innerHTML = '<div class="yaktube-ripple-content">' + (isLeft ? '⏪ 10sn Geri' : '10sn İleri ⏩') + '</div>';
|
existing.innerHTML =
|
||||||
|
'<div class="yaktube-ripple-content">' + (isLeft ? '⏪ 10sn Geri' : '10sn İleri ⏩') + '</div>';
|
||||||
container.appendChild(existing);
|
container.appendChild(existing);
|
||||||
}
|
}
|
||||||
existing.classList.add('yaktube-ripple-active');
|
existing.classList.add('yaktube-ripple-active');
|
||||||
@@ -1466,7 +1497,8 @@ try {
|
|||||||
|
|
||||||
function initTouchSeekGesture(video) {
|
function initTouchSeekGesture(video) {
|
||||||
if (!video) return;
|
if (!video) return;
|
||||||
var playerContainer = video.closest('.video-js, .player-container, .player, my-video-watch') || video.parentElement;
|
var playerContainer =
|
||||||
|
video.closest('.video-js, .player-container, .player, my-video-watch') || video.parentElement;
|
||||||
if (!playerContainer || playerContainer.hasAttribute('data-yaktube-touch-seek-hooked')) return;
|
if (!playerContainer || playerContainer.hasAttribute('data-yaktube-touch-seek-hooked')) return;
|
||||||
playerContainer.setAttribute('data-yaktube-touch-seek-hooked', 'true');
|
playerContainer.setAttribute('data-yaktube-touch-seek-hooked', 'true');
|
||||||
|
|
||||||
@@ -1543,7 +1575,8 @@ try {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (text === 'tam ekran' || text === 'büyük ekran' || text === 'tam ekran yap') {
|
if (text === 'tam ekran' || text === 'büyük ekran' || text === 'tam ekran yap') {
|
||||||
var playerWrap = document.querySelector('.player-container, .video-player-container, my-video-watch .player') || video;
|
var playerWrap =
|
||||||
|
document.querySelector('.player-container, .video-player-container, my-video-watch .player') || video;
|
||||||
if (playerWrap) {
|
if (playerWrap) {
|
||||||
if (!document.fullscreenElement) {
|
if (!document.fullscreenElement) {
|
||||||
if (playerWrap.requestFullscreen) playerWrap.requestFullscreen();
|
if (playerWrap.requestFullscreen) playerWrap.requestFullscreen();
|
||||||
@@ -2008,18 +2041,34 @@ try {
|
|||||||
'<div class="yaktube-fediverse-bridge-badge-wrap">' +
|
'<div class="yaktube-fediverse-bridge-badge-wrap">' +
|
||||||
'<span class="yaktube-fediverse-badge">🌐 Fediverse Ağı</span>' +
|
'<span class="yaktube-fediverse-badge">🌐 Fediverse Ağı</span>' +
|
||||||
'<span class="yaktube-fediverse-status">' +
|
'<span class="yaktube-fediverse-status">' +
|
||||||
(isFediverse ? 'SepiaSearch Küresel Fediverse Arama Aktif' : escapeHtml(getInstanceName()) + ' Yerel Arama Aktif') +
|
(isFediverse
|
||||||
|
? 'SepiaSearch Küresel Fediverse Arama Aktif'
|
||||||
|
: escapeHtml(getInstanceName()) + ' Yerel Arama Aktif') +
|
||||||
'</span>' +
|
'</span>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<h2 class="yaktube-fediverse-title">🌐 Fediverse & Küresel Ağ Arama Sonuçları</h2>' +
|
'<h2 class="yaktube-fediverse-title">🌐 Fediverse & Küresel Ağ Arama Sonuçları</h2>' +
|
||||||
'<p class="yaktube-fediverse-sub">Merkeziyetsiz federe ağdaki (SepiaSearch ve bağımsız PeerTube sunucuları) video sonuçları aşağıda listelenmektedir.</p>' +
|
'<p class="yaktube-fediverse-sub">Merkeziyetsiz federe ağdaki (SepiaSearch ve bağımsız PeerTube sunucuları) video sonuçları aşağıda listelenmektedir.</p>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<div class="yaktube-scope-selector" role="tablist" aria-label="Arama Kapsamı Seçimi">' +
|
'<div class="yaktube-scope-selector" role="tablist" aria-label="Arama Kapsamı Seçimi">' +
|
||||||
'<button type="button" id="yaktube-scope-global-btn" class="yaktube-scope-btn ' + (isFediverse ? 'active' : '') + '" role="tab" aria-selected="' + (isFediverse ? 'true' : 'false') + '" aria-label="Tüm Fediverse ve SepiaSearch ağındaki videoları ara" title="Tüm Fediverse genelinde ara">' +
|
'<button type="button" id="yaktube-scope-global-btn" class="yaktube-scope-btn ' +
|
||||||
|
(isFediverse ? 'active' : '') +
|
||||||
|
'" role="tab" aria-selected="' +
|
||||||
|
(isFediverse ? 'true' : 'false') +
|
||||||
|
'" aria-label="Tüm Fediverse ve SepiaSearch ağındaki videoları ara" title="Tüm Fediverse genelinde ara">' +
|
||||||
'🌐 Tüm Fediverse (SepiaSearch)' +
|
'🌐 Tüm Fediverse (SepiaSearch)' +
|
||||||
'</button>' +
|
'</button>' +
|
||||||
'<button type="button" id="yaktube-scope-local-btn" class="yaktube-scope-btn ' + (!isFediverse ? 'active' : '') + '" role="tab" aria-selected="' + (!isFediverse ? 'true' : 'false') + '" aria-label="Sadece ' + escapeHtml(getInstanceName()) + ' yerel sunucusundaki videoları ara" title="Sadece ' + escapeHtml(getInstanceName()) + ' yerel kütüphanesinde ara">' +
|
'<button type="button" id="yaktube-scope-local-btn" class="yaktube-scope-btn ' +
|
||||||
'🏠 Sadece ' + escapeHtml(getInstanceName()) + ' (Yerel)' +
|
(!isFediverse ? 'active' : '') +
|
||||||
|
'" role="tab" aria-selected="' +
|
||||||
|
(!isFediverse ? 'true' : 'false') +
|
||||||
|
'" aria-label="Sadece ' +
|
||||||
|
escapeHtml(getInstanceName()) +
|
||||||
|
' yerel sunucusundaki videoları ara" title="Sadece ' +
|
||||||
|
escapeHtml(getInstanceName()) +
|
||||||
|
' yerel kütüphanesinde ara">' +
|
||||||
|
'🏠 Sadece ' +
|
||||||
|
escapeHtml(getInstanceName()) +
|
||||||
|
' (Yerel)' +
|
||||||
'</button>' +
|
'</button>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>';
|
'</div>';
|
||||||
@@ -2494,7 +2543,9 @@ try {
|
|||||||
'</div>' +
|
'</div>' +
|
||||||
'<div class="yaktube-loading">' +
|
'<div class="yaktube-loading">' +
|
||||||
'<div class="yaktube-spinner" aria-hidden="true"></div>' +
|
'<div class="yaktube-spinner" aria-hidden="true"></div>' +
|
||||||
'<div style="margin-top: 10px;">YouTube ve ' + escapeHtml(getInstanceName()) + ' yerel kütüphanesindeki eşleşmeler taranıyor...</div>' +
|
'<div style="margin-top: 10px;">YouTube ve ' +
|
||||||
|
escapeHtml(getInstanceName()) +
|
||||||
|
' yerel kütüphanesindeki eşleşmeler taranıyor...</div>' +
|
||||||
'</div>';
|
'</div>';
|
||||||
|
|
||||||
var shortcutsBtn = document.getElementById('yaktube-open-shortcuts');
|
var shortcutsBtn = document.getElementById('yaktube-open-shortcuts');
|
||||||
@@ -2607,7 +2658,7 @@ try {
|
|||||||
statusBadge =
|
statusBadge =
|
||||||
'<span class="yaktube-badge" style="background: linear-gradient(135deg, #10b981 0%, #059669 100%); margin-bottom: 6px; display: inline-block;">✅ ' +
|
'<span class="yaktube-badge" style="background: linear-gradient(135deg, #10b981 0%, #059669 100%); margin-bottom: 6px; display: inline-block;">✅ ' +
|
||||||
escapeHtml(getInstanceName()) +
|
escapeHtml(getInstanceName()) +
|
||||||
'\'da Mevcut</span>';
|
"'da Mevcut</span>";
|
||||||
}
|
}
|
||||||
|
|
||||||
var actionButton = '';
|
var actionButton = '';
|
||||||
@@ -2626,9 +2677,11 @@ try {
|
|||||||
escapeHtml(item.localVideo.url) +
|
escapeHtml(item.localVideo.url) +
|
||||||
'" class="yaktube-play-btn" aria-label="' +
|
'" class="yaktube-play-btn" aria-label="' +
|
||||||
escapeHtml(item.title) +
|
escapeHtml(item.title) +
|
||||||
' videosunu ' + escapeHtml(getInstanceName()) + '\'dan hemen izle">▶️ ' +
|
' videosunu ' +
|
||||||
escapeHtml(getInstanceName()) +
|
escapeHtml(getInstanceName()) +
|
||||||
'\'dan İzle</a>';
|
'\'dan hemen izle">▶️ ' +
|
||||||
|
escapeHtml(getInstanceName()) +
|
||||||
|
"'dan İzle</a>";
|
||||||
} else {
|
} else {
|
||||||
actionButton =
|
actionButton =
|
||||||
'<button class="yaktube-import-btn" data-url="' +
|
'<button class="yaktube-import-btn" data-url="' +
|
||||||
@@ -2641,10 +2694,10 @@ try {
|
|||||||
escapeHtml(getInstanceName()) +
|
escapeHtml(getInstanceName()) +
|
||||||
'\'a aktar ve izle">📥 ' +
|
'\'a aktar ve izle">📥 ' +
|
||||||
escapeHtml(getInstanceName()) +
|
escapeHtml(getInstanceName()) +
|
||||||
'\'a Aktar & İzle</button>';
|
"'a Aktar & İzle</button>";
|
||||||
}
|
}
|
||||||
|
|
||||||
var durationText = isLive ? 'CANLI' : (item.durationFormatted || formatClockTime(item.duration));
|
var durationText = isLive ? 'CANLI' : item.durationFormatted || formatClockTime(item.duration);
|
||||||
var cardLabel =
|
var cardLabel =
|
||||||
item.title +
|
item.title +
|
||||||
(isLive ? ' (Canlı Yayın)' : isLocal ? ' (' + getInstanceName() + ' kütüphanenizde mevcut)' : '') +
|
(isLive ? ' (Canlı Yayın)' : isLocal ? ' (' + getInstanceName() + ' kütüphanenizde mevcut)' : '') +
|
||||||
@@ -2705,20 +2758,34 @@ try {
|
|||||||
if (localResults.length > 0) {
|
if (localResults.length > 0) {
|
||||||
var localCardsHtml = '';
|
var localCardsHtml = '';
|
||||||
localResults.forEach(function (lItem) {
|
localResults.forEach(function (lItem) {
|
||||||
var lThumb = lItem.thumbnailPath || (lItem.thumbnails && lItem.thumbnails[0] ? lItem.thumbnails[0].fileUrl : '/client/assets/images/default-thumbnail.jpg');
|
var lThumb =
|
||||||
|
lItem.thumbnailPath ||
|
||||||
|
(lItem.thumbnails && lItem.thumbnails[0]
|
||||||
|
? lItem.thumbnails[0].fileUrl
|
||||||
|
: '/client/assets/images/default-thumbnail.jpg');
|
||||||
var lDuration = formatClockTime(lItem.duration);
|
var lDuration = formatClockTime(lItem.duration);
|
||||||
var lChannel = (lItem.channel && (lItem.channel.displayName || lItem.channel.name)) ||
|
var lChannel =
|
||||||
|
(lItem.channel && (lItem.channel.displayName || lItem.channel.name)) ||
|
||||||
(lItem.account && (lItem.account.displayName || lItem.account.name)) ||
|
(lItem.account && (lItem.account.displayName || lItem.account.name)) ||
|
||||||
getInstanceName();
|
getInstanceName();
|
||||||
var lWatchUrl = lItem.url || ('/videos/watch/' + (lItem.shortUUID || lItem.uuid));
|
var lWatchUrl = lItem.url || '/videos/watch/' + (lItem.shortUUID || lItem.uuid);
|
||||||
var lViews = (lItem.views || 0) + ' görüntüleme';
|
var lViews = (lItem.views || 0) + ' görüntüleme';
|
||||||
var lLabel = lItem.name + ', ' + lChannel + ', ' + getInstanceName() + ' yerel sunucusunda mevcut, Süre: ' + lDuration;
|
var lLabel =
|
||||||
|
lItem.name +
|
||||||
|
', ' +
|
||||||
|
lChannel +
|
||||||
|
', ' +
|
||||||
|
getInstanceName() +
|
||||||
|
' yerel sunucusunda mevcut, Süre: ' +
|
||||||
|
lDuration;
|
||||||
|
|
||||||
localCardsHtml +=
|
localCardsHtml +=
|
||||||
'<div class="yaktube-card yaktube-local-card" role="article" tabindex="0" aria-label="' +
|
'<div class="yaktube-card yaktube-local-card" role="article" tabindex="0" aria-label="' +
|
||||||
escapeHtml(lLabel) +
|
escapeHtml(lLabel) +
|
||||||
'">' +
|
'">' +
|
||||||
'<a href="' + escapeHtml(lWatchUrl) + '" style="text-decoration:none; color:inherit; display:flex; flex-direction:column; height:100%;">' +
|
'<a href="' +
|
||||||
|
escapeHtml(lWatchUrl) +
|
||||||
|
'" style="text-decoration:none; color:inherit; display:flex; flex-direction:column; height:100%;">' +
|
||||||
'<div class="yaktube-thumb-wrap">' +
|
'<div class="yaktube-thumb-wrap">' +
|
||||||
'<img class="yaktube-thumb-img" src="' +
|
'<img class="yaktube-thumb-img" src="' +
|
||||||
escapeHtml(lThumb) +
|
escapeHtml(lThumb) +
|
||||||
@@ -2731,30 +2798,42 @@ try {
|
|||||||
'</div>' +
|
'</div>' +
|
||||||
'<div class="yaktube-info">' +
|
'<div class="yaktube-info">' +
|
||||||
'<div>' +
|
'<div>' +
|
||||||
'<span class="yaktube-badge" style="background: linear-gradient(135deg, #10b981 0%, #059669 100%); margin-bottom: 6px; display: inline-block;">✅ ' + escapeHtml(getInstanceName()) + '\'da Mevcut</span>' +
|
'<span class="yaktube-badge" style="background: linear-gradient(135deg, #10b981 0%, #059669 100%); margin-bottom: 6px; display: inline-block;">✅ ' +
|
||||||
|
escapeHtml(getInstanceName()) +
|
||||||
|
"'da Mevcut</span>" +
|
||||||
'<h3 class="yaktube-video-name" title="' +
|
'<h3 class="yaktube-video-name" title="' +
|
||||||
escapeHtml(lItem.name) +
|
escapeHtml(lItem.name) +
|
||||||
'" style="margin:0; font-size:13px; font-weight:600; line-height:1.35;">' +
|
'" style="margin:0; font-size:13px; font-weight:600; line-height:1.35;">' +
|
||||||
escapeHtml(lItem.name) +
|
escapeHtml(lItem.name) +
|
||||||
'</h3>' +
|
'</h3>' +
|
||||||
'<div class="yaktube-channel-name">' +
|
'<div class="yaktube-channel-name">' +
|
||||||
escapeHtml(lChannel) + ' • ' + escapeHtml(lViews) +
|
escapeHtml(lChannel) +
|
||||||
|
' • ' +
|
||||||
|
escapeHtml(lViews) +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<div class="yaktube-play-btn" style="margin-top:8px;">▶️ ' + escapeHtml(getInstanceName()) + '\'dan Hemen İzle</div>' +
|
'<div class="yaktube-play-btn" style="margin-top:8px;">▶️ ' +
|
||||||
|
escapeHtml(getInstanceName()) +
|
||||||
|
"'dan Hemen İzle</div>" +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</a>' +
|
'</a>' +
|
||||||
'</div>';
|
'</div>';
|
||||||
});
|
});
|
||||||
|
|
||||||
localShelfHtml =
|
localShelfHtml =
|
||||||
'<div id="yaktube-local-shelf" class="yaktube-local-shelf" role="region" aria-label="' + escapeHtml(getInstanceName()) + ' Yerel Kütüphanesi">' +
|
'<div id="yaktube-local-shelf" class="yaktube-local-shelf" role="region" aria-label="' +
|
||||||
|
escapeHtml(getInstanceName()) +
|
||||||
|
' Yerel Kütüphanesi">' +
|
||||||
'<div class="yaktube-header" style="margin-top: 24px; border-bottom-color: rgba(16, 185, 129, 0.3);">' +
|
'<div class="yaktube-header" style="margin-top: 24px; border-bottom-color: rgba(16, 185, 129, 0.3);">' +
|
||||||
'<div class="yaktube-header-left">' +
|
'<div class="yaktube-header-left">' +
|
||||||
'<span class="yaktube-badge" style="background: linear-gradient(135deg, #10b981 0%, #059669 100%);">✅ Yerel Kütüphane</span>' +
|
'<span class="yaktube-badge" style="background: linear-gradient(135deg, #10b981 0%, #059669 100%);">✅ Yerel Kütüphane</span>' +
|
||||||
'<h2 class="yaktube-title-h3" style="margin:0; font-size:1.15rem;">"' +
|
'<h2 class="yaktube-title-h3" style="margin:0; font-size:1.15rem;">"' +
|
||||||
escapeHtml(query) +
|
escapeHtml(query) +
|
||||||
'" için ' + escapeHtml(getInstanceName()) + ' Sunucusunda ' + localTotal + ' Video Bulundu</h2>' +
|
'" için ' +
|
||||||
|
escapeHtml(getInstanceName()) +
|
||||||
|
' Sunucusunda ' +
|
||||||
|
localTotal +
|
||||||
|
' Video Bulundu</h2>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<span class="yaktube-local-shelf-sub">Doğrudan sunucumuzda barındırılan, yüksek hızlı ve anında izlenebilen videolar</span>' +
|
'<span class="yaktube-local-shelf-sub">Doğrudan sunucumuzda barındırılan, yüksek hızlı ve anında izlenebilen videolar</span>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
@@ -3350,7 +3429,8 @@ try {
|
|||||||
announce('"' + transcript + '" için arama başlatılıyor...', true);
|
announce('"' + transcript + '" için arama başlatılıyor...', true);
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
closeFullSearchModal();
|
closeFullSearchModal();
|
||||||
window.location.href = '/search?search=' + encodeURIComponent(transcript) + '&searchTarget=search-index';
|
window.location.href =
|
||||||
|
'/search?search=' + encodeURIComponent(transcript) + '&searchTarget=search-index';
|
||||||
}, 500);
|
}, 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,13 +27,7 @@ function resolveYtDlpPath(logger) {
|
|||||||
path.join(process.cwd(), 'bin', 'yt-dlp.exe'),
|
path.join(process.cwd(), 'bin', 'yt-dlp.exe'),
|
||||||
'yt-dlp.exe'
|
'yt-dlp.exe'
|
||||||
]
|
]
|
||||||
: [
|
: ['/usr/local/bin/yt-dlp', '/usr/bin/yt-dlp', '/bin/yt-dlp', path.join(process.cwd(), 'bin', 'yt-dlp'), 'yt-dlp'];
|
||||||
'/usr/local/bin/yt-dlp',
|
|
||||||
'/usr/bin/yt-dlp',
|
|
||||||
'/bin/yt-dlp',
|
|
||||||
path.join(process.cwd(), 'bin', 'yt-dlp'),
|
|
||||||
'yt-dlp'
|
|
||||||
];
|
|
||||||
|
|
||||||
for (const candidate of candidates) {
|
for (const candidate of candidates) {
|
||||||
try {
|
try {
|
||||||
@@ -64,7 +58,7 @@ async function getDefaultChannelId(category) {
|
|||||||
return cachedChannels.defaultId || '1146';
|
return cachedChannels.defaultId || '1146';
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise((resolve) => {
|
return new Promise(resolve => {
|
||||||
const req = http.request(
|
const req = http.request(
|
||||||
{
|
{
|
||||||
hostname: '127.0.0.1',
|
hostname: '127.0.0.1',
|
||||||
|
|||||||
@@ -1151,9 +1151,18 @@ body:has(#yaktube-ondemand-container) my-error-page {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@keyframes yaktube-ripple-bounce {
|
@keyframes yaktube-ripple-bounce {
|
||||||
0% { transform: scale(0.7); opacity: 0.5; }
|
0% {
|
||||||
50% { transform: scale(1.1); opacity: 1; }
|
transform: scale(0.7);
|
||||||
100% { transform: scale(1); opacity: 1; }
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
transform: scale(1.1);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
@@ -1285,9 +1294,15 @@ body:has(#yaktube-ondemand-container) my-error-page {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@keyframes yaktube-pulse {
|
@keyframes yaktube-pulse {
|
||||||
0% { transform: scale(1); }
|
0% {
|
||||||
50% { transform: scale(1.04); }
|
transform: scale(1);
|
||||||
100% { transform: scale(1); }
|
}
|
||||||
|
50% {
|
||||||
|
transform: scale(1.04);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.yaktube-qr-wrapper {
|
.yaktube-qr-wrapper {
|
||||||
@@ -1339,4 +1354,3 @@ body:has(#yaktube-ondemand-container) my-error-page {
|
|||||||
box-shadow: 0 6px 20px rgba(255, 143, 55, 0.4) !important;
|
box-shadow: 0 6px 20px rgba(255, 143, 55, 0.4) !important;
|
||||||
outline: none !important;
|
outline: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user