Commit 51665879 authored by PrestonN's avatar PrestonN
Browse files

Merge branch 'development'

parents abec523d a7601482
# These are supported funding model platforms
custom: https://liberapay.com/FreeTube
......@@ -54,7 +54,7 @@ These builds are maintained by the community. While they should be safe, downlo
Flatpak on Flathub: [Download](https://flathub.org/apps/details/io.freetubeapp.FreeTube) [Source](https://github.com/flathub/io.freetubeapp.FreeTube)
Arch User Repository (AUR): [Download](https://aur.archlinux.org/packages/freetube/)
Arch User Repository (AUR): [Download](https://aur.archlinux.org/packages/freetube-bin/)
Chocolatey: [Download](https://chocolatey.org/packages/freetube/)
......
{
"File": "Dosya",
"Quit": "çıkış",
"Edit": "Düzenle",
"Undo": "geri git",
"Redo": "yeniden yapmak",
"Cut": "kes",
"Copy": "kopya",
"Paste": "yapıştırmak",
"Delete": "sil",
"Select all": "hepsini seç",
"View": "göster",
"Reload": "Tekrar yükle",
"Force Reload": "Yeniden Yüklemeye Zorla",
"Toggle Developer Tools": "Geliştirici Araçları arasında geçiş yap",
"Actual size": "Gerçek boyutu",
"Zoom in": "Yakınlaştır",
"Zoom out": "Uzaklaştırmak",
"Toggle fullscreen": "Tam ekrana geç",
"Window": "Pencere",
"Minimize": "küçültmek",
"Close": "Kapat",
"FreeTube": "FreeTube",
"Subscriptions": "Abonelikler",
"Featured": "Önerilen",
"Most Popular": "Most Popular",
"Saved": "kaydedilmiş",
"Playlists": "Oynatma listesinin",
"History": "Geçmiş",
"Settings": "Ayarlar",
"About": "About",
"Search / Go to URL": "Ara / URL’ye git",
"Search Results": "arama sonuçları",
"Subscriber": "Abone",
"Subscribers": "Aboneler",
"Video": "Video",
"Videos": "Videolar",
"View Full Playlist": "Oynatma listesinin tamamını görüntüle",
"Live Now": "CANLI YAYIN",
"Fetch more results": "Fetch more results",
"Fetching results. Please wait": "Sonuç alınıyor. Lütfen bekle",
"Latest Subscriptions": "Son Abonelikler",
"Save Video": "videoyu kayde",
"Remove Saved Video": "Kayıtlı Videoyu sil",
"Open in YouTube": "YouTube'da aç",
"Copy YouTube Link": "YouTube URL Kopyala",
"Open in HookTube": "HookTube'da aç",
"Copy HookTube Link": "HookTube URL Kopyala",
"URL has been copied to the clipboard": "URL panoya kopyalandı",
"Found valid URL for 480p, but returned a 404. Video type might be available in the future.": "480p için geçerli bir URL bulundu, ancak bir 404 döndürdü. Gelecekte video türü kullanılabilir olabilir.",
"Save": "Kaydet",
"Mini Player": "Mini Player",
"View": "görünüm",
"Views": "görünüm",
"Subscribe": "Abone ol",
"Unsubscribe": "aboneliğini",
"Published on": "yayınlandı",
"Jan": "ocak",
"Feb": "şubat",
"Mar": "mart",
"Apr": "nisan",
"May": "mayıs",
"Jun": "haziran",
"Jul": "temmuz",
"Aug": "ağustos",
"Sep": "eylül",
"Oct": "ekim",
"Nov": "kasım",
"Dec": "aralık",
"Show Comments": "Yorum göster",
"Max of 100": "Max of 100",
"Recommendations": "Önerilen",
"Latest Subscriptions": "Son Abonelikler",
"Getting Subscriptions. Please wait...": "Abonelik Aliyor. Lütfen bekle…",
"Your Subscription list is currently empty. Start adding subscriptions to see them here.": "Burada onları görmek için abonelik ekleyin.",
"Saved Videos": "Kaydedilen Videolar",
"Watch History": "Geçmişi İzle",
"API Key": "API key",
"Set API Key: Leave blank to use default": "API anahtarını ayarla: Varsayılanı kullanmak için boş bırakın",
"Use Dark Theme": "Koyu tema: Kapalı",
"Import Subscriptions": "Abonelikler İçe Aktar",
"Export Subscriptions": "Abonelikler Dışa Aktar",
"Clear History": "Geçmiş sil",
"Are you sure you want to delete your history?": "Geçmişinizi silmek istediğinize emin misiniz?",
"Clear Saved Videos": "Favori Videoları Temizle",
"Are you sure you want to remove all saved videos?": "Kayıtlı tüm videoları kaldırmak istediğinizden emin misiniz??",
"Clear Subscriptions": "Abonelikleri Temizle",
"Are you sure you want to remove all subscriptions?": "Tüm abonelikleri kaldırmak istediğinizden emin misiniz??",
"Save Settings": "Ayarları kaydet",
"Yes": "Evet",
"No": "hayır",
"Beta": "Beta",
"This software is FOSS and released under the GNU Public License v3+.": "Bu copylefted yazılımı ücretsiz olarak lisanslıdır GPLv3 +.",
"Found a bug? Want to suggest a feature? Want to help out? Check out our GitHub page. Pull requests are welcome.": "Bir hata mı buldunuz? Bir özellik önermek ister misiniz? Yardım etmek ister misiniz? GitHub sayfamızı ziyaret edin. Çekme istekleri kabul edilir."
}
This diff is collapsed.
{
"name": "FreeTube",
"productName": "FreeTube",
"version": "0.5.3",
"version": "0.6.0",
"description": "An Open Source YouTube app for privacy.",
"main": "src/js/init.js",
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"publish": "electron-forge publish",
"make:all": "npm run make:mac && npm run make:linux:x86 && npm run make:linux:arm && npm run make:win",
"make:mac": "electron-forge make --platform=darwin",
"make:win": "electron-forge make --platform=win32",
"make:win:zip": "electron-forge make --platform=win32 --targets=zip",
"make:linux:x86": "electron-forge make --platform=linux --arch x64",
"make:linux:x86:zip": "electron-forge make --platform=linux --targets=zip --arch x64",
"make:linux:x86:deb": "electron-forge make --platform=linux --targets=deb --arch x64",
"make:linux:x86:rpm": "electron-forge make --platform=linux --targets=rpm --arch x64",
"make:linux:x86:snap": "electron-forge package && electron-installer-snap --src=out/FreeTube-linux-x64 --arch x64",
"make:linux:x86:flatpak": "electron-installer-flatpak --src out/FreeTube-linux-x64/ --dest out/make --arch x64 --id org.freetube.FreeTube --productName FreeTube --runtime org.freedesktop.Platform//1.6 --runtimeVersion 1.6 --sdk org.freedesktop.Sdk//1.6 --base io.atom.electron.BaseApp --baseVersion stable",
"make:linux:x86:appimage": "electron-forge make --platform=linux --targets=electron-forge-maker-appimage --arch x64",
"make:linux:arm": "electron-forge make --platform=linux --arch arm64",
"make:linux:arm:zip": "electron-forge make --platform=linux --targets=zip --arch arm64",
"make:linux:arm:deb": "electron-forge make --platform=linux --targets=deb --arch arm64",
"make:linux:arm:rpm": "electron-forge make --platform=linux --targets=rpm --arch arm64",
"make:linux:arm:appimage": "electron-forge make --platform=linux --targets=electron-forge-maker-appimage --arch arm64"
"pack": "build --dir",
"start": "electron .",
"make:all": "npm run make:linux:x64 && npm run make:linux:arm && npm run make:mac:zip && npm run make:win",
"make:win": "build --win",
"make:win:exe": "build --win nsis",
"make:win:zip": "build --win zip",
"make:mac:zip": "build --mac zip",
"make:mac:dmg": "build --mac dmg",
"make:linux:x64": "build --linux --x64",
"make:linux:x64:deb": "build --linux deb --x64",
"make:linux:x64:rpm": "build --linux rpm --x64",
"make:linux:x64:appimage": "build --linux appimage --x64",
"make:linux:x64:zip": "build --linux zip --x64",
"make:linux:x64:tar": "build --linux tar.xz --x64",
"make:linux:arm": "build --linux --arm64",
"make:linux:arm:deb": "build --linux deb --arm64",
"make:linux:arm:rpm": "build --linux rpm --arm64",
"make:linux:arm:zip": "build --linux zip --arm64",
"make:linux:arm:tar.xz": "build --linux tar.xz --arm64",
"dist": "build"
},
"keywords": [],
"author": {
......@@ -33,73 +33,70 @@
"url": "https://github.com/FreeTubeApp/FreeTube"
},
"license": "GPL-3.0-or-later",
"config": {
"forge": {
"make_targets": {
"win32": [
"squirrel"
],
"darwin": [
"zip"
],
"linux": [
"deb",
"rpm",
"electron-forge-maker-appimage",
"zip"
"build": {
"appId": "io.freetubeapp.freetube",
"asar": true,
"protocols": [
{
"name": "FreeTube",
"schemes": [
"freetube"
]
},
"protocols": [
{
"name": "freetube",
"role": "Viewer",
"schemes": [
"freetube"
]
}
}
],
"mac": {
"category": "public.app-category.video",
"icon": "src/icons/iconColor.icns",
"target": [
"zip"
]
},
"win": {
"target": [
"nsis",
"zip"
],
"electronPackagerConfig": {
"packageManager": "yarn",
"icon": "./src/icons/iconColor.icns"
},
"electronWinstallerConfig": {
"name": "freetube",
"iconUrl": "https://raw.githubusercontent.com/FreeTubeApp/FreeTubeApp.github.io/master/images/iconColor.ico",
"setupIcon": "./src/icons/iconColor.ico"
},
"electronInstallerDebian": {
"icon": "src/icons/iconColor.png"
"icon": "src/icons/iconColor.ico"
},
"linux": {
"protocols": {
"name": "FreeTube",
"schemes": [
"freetube"
]
},
"electronForgeMakerAppimage": {
"icon": "src/icons/iconColor.png"
"target": [
"AppImage",
"deb",
"rpm",
"zip",
"tar.xz"
],
"desktop": {
"Icon": "freetube"
},
"repository": {
"type": "git",
"url": "https://github.com/FreeTubeApp/FreeTube"
}
}
"category": "Video"
}
},
"devDependencies": {
"electron-forge": "^5.2.2",
"electron-forge-maker-appimage": "^20.28.3",
"electron-installer-flatpak": "^0.8.0",
"electron-installer-snap": "^2.0.1",
"electron-prebuilt-compile": "3.0.2",
"electron-winstaller": "^2.7.0"
"electron": "^5.0.3",
"electron-builder": "^20.43.0",
"electron-compile": "^6.4.4",
"electron-installer-appimage": "^1.0.1",
"electron-packager": "^13.1.1",
"electron-winstaller": "^3.0.4"
},
"dependencies": {
"autolinker": "^1.6.2",
"autolinker": "^3.0.5",
"commonjs": "0.0.1",
"dateformat": "^3.0.3",
"electron-compile": "6.4.2",
"electron-context-menu": "^0.10.0",
"electron-squirrel-startup": "^1.0.0",
"jquery": "^3.3.1",
"jsdom": "^11.11.0",
"mustache": "^2.3.0",
"electron-context-menu": "^0.12.0",
"jquery": "^3.4.0",
"jsdom": "^15.0.0",
"mustache": "^3.0.1",
"nedb": "^1.8.0",
"opml-to-json": "0.0.3",
"vue": "^2.5.17",
"vue": "^2.6.10",
"ytdl-core": "^0.29.1"
}
}
src/icons/iconColor.ico

252 KB | W: | H:

src/icons/iconColor.ico

264 KB | W: | H:

src/icons/iconColor.ico
src/icons/iconColor.ico
src/icons/iconColor.ico
src/icons/iconColor.ico
  • 2-up
  • Swipe
  • Onion skin
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="120" viewBox="0 0 400 120"><style>.st0{fill:#FFFFFF;width:16px;height:16px} .st1{fill:none;stroke:#FFFFFF;stroke-width:1.5;stroke-linecap:round;} .st2{fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;} .st3{fill:none;stroke:#FFFFFF;} .st4{fill:#231F20;} .st5{opacity:0.75;fill:none;stroke:#FFFFFF;stroke-width:5;enable-background:new;} .st6{fill:none;stroke:#FFFFFF;stroke-width:5;} .st7{opacity:0.4;fill:#FFFFFF;enable-background:new;} .st8{opacity:0.6;fill:#FFFFFF;enable-background:new;} .st9{opacity:0.8;fill:#FFFFFF;enable-background:new;} .st10{opacity:0.9;fill:#FFFFFF;enable-background:new;} .st11{opacity:0.3;fill:#FFFFFF;enable-background:new;} .st12{opacity:0.5;fill:#FFFFFF;enable-background:new;} .st13{opacity:0.7;fill:#FFFFFF;enable-background:new;}</style><path class="st0" d="M16.5 8.5c.3.1.4.5.2.8-.1.1-.1.2-.2.2l-11.4 7c-.5.3-.8.1-.8-.5V2c0-.5.4-.8.8-.5l11.4 7z"/><path class="st0" d="M24 1h2.2c.6 0 1 .4 1 1v14c0 .6-.4 1-1 1H24c-.6 0-1-.4-1-1V2c0-.5.4-1 1-1zm9.8 0H36c.6 0 1 .4 1 1v14c0 .6-.4 1-1 1h-2.2c-.6 0-1-.4-1-1V2c0-.5.4-1 1-1z"/><path class="st0" d="M81 1.4c0-.6.4-1 1-1h5.4c.6 0 .7.3.3.7l-6 6c-.4.4-.7.3-.7-.3V1.4zm0 15.8c0 .6.4 1 1 1h5.4c.6 0 .7-.3.3-.7l-6-6c-.4-.4-.7-.3-.7.3v5.4zM98.8 1.4c0-.6-.4-1-1-1h-5.4c-.6 0-.7.3-.3.7l6 6c.4.4.7.3.7-.3V1.4zm0 15.8c0 .6-.4 1-1 1h-5.4c-.6 0-.7-.3-.3-.7l6-6c.4-.4.7-.3.7.3v5.4z"/><path class="st0" d="M112.7 5c0 .6.4 1 1 1h4.1c.6 0 .7-.3.3-.7L113.4.6c-.4-.4-.7-.3-.7.3V5zm-7.1 1c.6 0 1-.4 1-1V.9c0-.6-.3-.7-.7-.3l-4.7 4.7c-.4.4-.3.7.3.7h4.1zm1 7.1c0-.6-.4-1-1-1h-4.1c-.6 0-.7.3-.3.7l4.7 4.7c.4.4.7.3.7-.3v-4.1zm7.1-1c-.6 0-1 .4-1 1v4.1c0 .5.3.7.7.3l4.7-4.7c.4-.4.3-.7-.3-.7h-4.1z"/><path class="st0" d="M67 5.8c-.5.4-1.2.6-1.8.6H62c-.6 0-1 .4-1 1v5.7c0 .6.4 1 1 1h4.2c.3.2.5.4.8.6l3.5 2.6c.4.3.8.1.8-.4V3.5c0-.5-.4-.7-.8-.4L67 5.8z"/><path class="st1" d="M73.9 2.5s3.9-.8 3.9 7.7-3.9 7.8-3.9 7.8"/><path class="st1" d="M72.6 6.4s2.6-.4 2.6 3.8-2.6 3.9-2.6 3.9"/><path class="st0" d="M47 5.8c-.5.4-1.2.6-1.8.6H42c-.6 0-1 .4-1 1v5.7c0 .6.4 1 1 1h4.2c.3.2.5.4.8.6l3.5 2.6c.4.3.8.1.8-.4V3.5c0-.5-.4-.7-.8-.4L47 5.8z"/><path class="st2" d="M52.8 7l5.4 5.4m-5.4 0L58.2 7"/><path class="st3" d="M128.7 8.6c-6.2-4.2-6.5 7.8 0 3.9m6.5-3.9c-6.2-4.2-6.5 7.8 0 3.9"/><path class="st0" d="M122.2 3.4h15.7v13.1h-15.7V3.4zM120.8 2v15.7h18.3V2h-18.3z"/><path class="st0" d="M143.2 3h14c1.1 0 2 .9 2 2v10c0 1.1-.9 2-2 2h-14c-1.1 0-2-.9-2-2V5c0-1.1.9-2 2-2z"/><path class="st4" d="M146.4 13.8c-.8 0-1.6-.4-2.1-1-1.1-1.4-1-3.4.1-4.8.5-.6 2-1.7 4.6.2l-.6.8c-1.4-1-2.6-1.1-3.3-.3-.8 1-.8 2.4-.1 3.5.7.9 1.9.8 3.4-.1l.5.9c-.7.5-1.6.7-2.5.8zm7.5 0c-.8 0-1.6-.4-2.1-1-1.1-1.4-1-3.4.1-4.8.5-.6 2-1.7 4.6.2l-.5.8c-1.4-1-2.6-1.1-3.3-.3-.8 1-.8 2.4-.1 3.5.7.9 1.9.8 3.4-.1l.5.9c-.8.5-1.7.7-2.6.8z"/><path class="st0" d="M60.3 77c.6.2.8.8.6 1.4-.1.3-.3.5-.6.6L30 96.5c-1 .6-1.7.1-1.7-1v-35c0-1.1.8-1.5 1.7-1L60.3 77z"/><path class="st5" d="M2.5 79c0-20.7 16.8-37.5 37.5-37.5S77.5 58.3 77.5 79 60.7 116.5 40 116.5 2.5 99.7 2.5 79z"/><path class="st0" d="M140.3 77c.6.2.8.8.6 1.4-.1.3-.3.5-.6.6L110 96.5c-1 .6-1.7.1-1.7-1v-35c0-1.1.8-1.5 1.7-1L140.3 77z"/><path class="st6" d="M82.5 79c0-20.7 16.8-37.5 37.5-37.5s37.5 16.8 37.5 37.5-16.8 37.5-37.5 37.5S82.5 99.7 82.5 79z"/><circle class="st0" cx="201.9" cy="47.1" r="8.1"/><circle class="st7" cx="233.9" cy="79" r="5"/><circle class="st8" cx="201.9" cy="110.9" r="6"/><circle class="st9" cx="170.1" cy="79" r="7"/><circle class="st10" cx="178.2" cy="56.3" r="7.5"/><circle class="st11" cx="226.3" cy="56.1" r="4.5"/><circle class="st12" cx="225.8" cy="102.8" r="5.5"/><circle class="st13" cx="178.2" cy="102.8" r="6.5"/><path class="st0" d="M178 9.4c0 .4-.4.7-.9.7-.1 0-.2 0-.2-.1L172 8.2c-.5-.2-.6-.6-.1-.8l6.2-3.6c.5-.3.8-.1.7.5l-.8 5.1z"/><path class="st0" d="M169.4 15.9c-1 0-2-.2-2.9-.7-2-1-3.2-3-3.2-5.2.1-3.4 2.9-6 6.3-6 2.5.1 4.8 1.7 5.6 4.1l.1-.1 2.1 1.1c-.6-4.4-4.7-7.5-9.1-6.9-3.9.6-6.9 3.9-7 7.9 0 2.9 1.7 5.6 4.3 7 1.2.6 2.5.9 3.8 1 2.6 0 5-1.2 6.6-3.3l-1.8-.9c-1.2 1.2-3 2-4.8 2z"/><path class="st0" d="M183.4 3.2c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5c0-.9.7-1.5 1.5-1.5zm5.1 0h8.5c.9 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5h-8.5c-.9 0-1.5-.7-1.5-1.5-.1-.9.6-1.5 1.5-1.5zm-5.1 5c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5c0-.9.7-1.5 1.5-1.5zm5.1 0h8.5c.9 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5h-8.5c-.9 0-1.5-.7-1.5-1.5-.1-.9.6-1.5 1.5-1.5zm-5.1 5c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5c0-.9.7-1.5 1.5-1.5zm5.1 0h8.5c.9 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5h-8.5c-.9 0-1.5-.7-1.5-1.5-.1-.9.6-1.5 1.5-1.5z"/></svg>
......@@ -13,6 +13,12 @@
<link rel="stylesheet" href="style/select.css">
<link rel="stylesheet" href="style/fa-solid.min.css">
<link rel="stylesheet" href="style/fontawesome-all.min.css">
<link rel="stylesheet" href="style/mediaelementplayer.css" />
<link rel="stylesheet" href="js/plugins/quality/quality.min.css" />
<link rel="stylesheet" href="js/plugins/loop/loop.css" />
<link rel="stylesheet" href="js/plugins/speed/speed.css" />
<link rel="stylesheet" href="js/plugins/context-menu/context-menu.css" />
<link rel="stylesheet" href="style/radioButton.css">
<link rel="shortcut icon" href="icons/iconColor.ico" type="image/x-icon" />
<title>FreeTube Player</title>
</head>
......@@ -35,12 +41,12 @@
</div>
<div id="topNav" class="topNav">
<i onclick='toggleSideNavigation()' class="fas fa-bars" id='menuButton'></i>
<i onclick='forceSubscriptions()' class="fas fa-sync" id='reloadButton' title='Force Subscription Reload'></i>
<!--<i onclick='forceSubscriptions()' class="fas fa-sync" id='reloadButton' title='Force Subscription Reload'></i>-->
<i v-on:click='back' v-if="canShowBackButton" class="fas fa-arrow-left" id="backButton"></i>
<div class="searchBar">
<input id='search' class="search" type="text" placeholder="Search / Go to URL">
<span class='filterButton' onclick='searchFilter.seen = !searchFilter.seen'><i class="fas fa-filter" style='margin-right: -10px; cursor: pointer'></i>&nbsp;&nbsp;&nbsp;&nbsp;Filter</span>
<span class='searchButton' onclick='parseSearchText()'><i class="fas fa-search" style='margin-right: -10px; cursor: pointer'></i>&nbsp;&nbsp;&nbsp;&nbsp;Search</span>
<span class='searchButton' onclick='parseSearchText()'><i class="fas fa-arrow-right" style='position: relative; right: 30px; cursor: pointer' title='Search'></i></span>
<span class='filterButton' onclick='searchFilter.seen = !searchFilter.seen'><i class="fas fa-filter" style='margin-right: -10px; cursor: pointer' title='Filter'></i></span>
</div>
<img src='icons/iconBlackSmall.png' id='menuIcon' /> &nbsp;
<img src='icons/textBlackSmall.png' id='menuText' />
......@@ -49,9 +55,9 @@
<div id="sideNav">
<div class="sideNavContainer">
<ul>
<li v-on:click='subscriptions'><i class="fas fa-rss"></i>&nbsp;&nbsp;Subscriptions</li>
<li v-on:click='trending'><i class="fas fa-fire"></i>&nbsp;&nbsp;Trending</li>
<li v-on:click='popular'><i class="fas fa-users"></i>&nbsp;&nbsp;Most Popular</li>
<li v-on:click='subscriptions'><i class="fas fa-rss"></i>&nbsp;&nbsp;Subscriptions <i onclick='event.stopPropagation(); forceSubscriptions()' class="fas fa-sync" id='reloadButton' title='Force Subscription Reload'></i></li>
<li v-if='!distractionFreeMode' v-on:click='trending'><i class="fas fa-fire"></i>&nbsp;&nbsp;Trending</li>
<li v-if='!distractionFreeMode' v-on:click='popular'><i class="fas fa-users"></i>&nbsp;&nbsp;Most Popular</li>
<li v-on:click='saved'><i class="fas fa-star"></i>&nbsp;&nbsp;Favorites</li>
<li v-on:click='history'><i class="fas fa-history"></i>&nbsp;&nbsp;History</li>
</ul>
......@@ -68,31 +74,66 @@
<div id="main">
<div id='searchFilter' class='center' v-show='seen'>
<h2>Search Filters</h2>
<select id='searchSortby' class='select-text'>
<option value="relevance">Most Relevant</option>
<option value="rating">Rating</option>
<option value="upload_date">Upload Date</option>
<option value="view_count">View Count</option>
</select>
<select id='searchDate' class='select-text'>
<option value="">Any Time</option>
<option value="hour">Last Hour</option>
<option value="today">Today</option>
<option value="week">This Week</option>
<option value="month">This Month</option>
<option value="year">This Year</option>
</select>
<select id='searchType' class='select-text'>
<option value="all">All Types</option>
<option value="video">Videos</option>
<option value="channel">Channels</option>
<option value="playlist">Playlists</option>
</select>
<select id='searchDuration' class='select-text'>
<option value="">All Durations</option>
<option value="short">Short (< 4 minutes)</option>
<option value="long">Long (> 20 minutes)</option>
</select>
<br />
<div style='position: relative; bottom: 80px;' class='pure-radiobutton filter'>
<h3 class='filterTitle'>Sort By</h3>
<input class='radio' id='searchSortBy1' type="radio" name="searchSortBy" value="relevance" checked='checked' />
<label for='searchSortBy1'>Most Relevant</label>
<br /><br />
<input class='radio' id='searchSortBy2' type="radio" name="searchSortBy" value="rating" />
<label for='searchSortBy2'>Rating</label>
<br /><br />
<input class='radio' id='searchSortBy3' type="radio" name="searchSortBy" value="upload_date" />
<label for='searchSortBy3'>Upload Date</label>
<br /><br />
<input class='radio' id='searchSortBy4' type="radio" name="searchSortBy" value="view_count" />
<label for='searchSortBy4'>View Count</label>
</div>
<div class='pure-radiobutton filter'>
<h3>Time</h3>
<input class='radio' id='searchDate1' type="radio" name="searchDate" value="" checked='checked' />
<label for='searchDate1'>Any Time</label>
<br /><br />
<input class='radio' id='searchDate2' type="radio" name="searchDate" value="hour" />
<label for='searchDate2'>Last Hour</label>
<br /><br />
<input class='radio' id='searchDate3' type="radio" name="searchDate" value="today" />
<label for='searchDate3'>Today</label>
<br /><br />
<input class='radio' id='searchDate4' type="radio" name="searchDate" value="week" />
<label for='searchDate4'>This Week</label>
<br /><br />
<input class='radio' id='searchDate5' type="radio" name="searchDate" value="month" />
<label for='searchDate5'>This Month</label>
<br /><br />
<input class='radio' id='searchDate6' type="radio" name="searchDate" value="year" />
<label for='searchDate6'>This Year</label>
</div>
<div style='position: relative; bottom: 80px;' class='pure-radiobutton filter'>
<h3 class='filterTitle'>Type</h3>
<input class='radio' id='searchType1' type="radio" name="searchType" value="all" checked='checked' />
<label for='searchType1'>All Types</label>
<br /><br />
<input class='radio' id='searchType2' type="radio" name="searchType" value="video" />
<label for='searchType2'>Videos</label>
<br /><br />
<input class='radio' id='searchType3' type="radio" name="searchType" value="channel" />
<label for='searchType3'>Channels</label>
<br /><br />
<input class='radio' id='searchType4' type="radio" name="searchType" value="playlist" />
<label for='searchType4'>Playlists</label>
</div>
<div style='position: relative; bottom: 120px;' class='pure-radiobutton filter'>
<h3 class='filterTitle'>Duration</h3>
<input class='radio' id='searchDuration1' type="radio" name="searchDuration" value="" checked='checked' />
<label for='searchDuration1'>All Durations</label>
<br /><br />
<input class='radio' id='searchDuration2' type="radio" name="searchDuration" value="short" />
<label for='searchDuration2'>Short (< 4 minutes)</label>
<br /><br />
<input class='radio' id='searchDuration3' type="radio" name="searchDuration" value="long" />
<label for='searchDuration3'>Long (> 20 minutes)</label>
</div>
</div>
<div id='noSubscriptions' v-if='seen'>
<h2 class="message">
......@@ -118,6 +159,7 @@
</div>
<div id='progressView'></div>
</body>
<script src="js/vue.js"></script>
<script src="js/general.js"></script>
<script src="js/youtubeApi.js"></script>
<script src="js/updates.js"></script>
......@@ -134,4 +176,16 @@
<script src="js/playlist.js"></script>
<script src="js/events.js"></script>
<!--<script src="js/hls.min.js"></script>-->
<script src="js/mediaelement-and-player.js"></script>
<script src="js/plugins/quality/quality.js"></script>
<script src="js/plugins/quality/quality-i18n.js"></script>
<script src="js/plugins/speed/speed.js"></script>
<script src="js/plugins/speed/speed-i18n.js"></script>
<script src="js/plugins/loop/loop.js"></script>
<script src="js/plugins/loop/loop-i18n.js"></script>
<script src="js/plugins/context-menu/context-menu.js"></script>
<script src="js/plugins/context-menu/context-menu-i18n.js"></script>
<script src="js/plugins/timerailthumbnails/vtt.min.js"></script>
<script src="js/plugins/timerailthumbnails/mep-feature-time-rail-thumbnails.js"></script>
</html>
......@@ -43,7 +43,7 @@ function goToChannel(channelId) {
});
invidiousAPI('channels', channelId, {}, (data) => {
console.log(data);
ft.log(data);
channelView.id = channelId;
channelView.name = data.author;
......@@ -81,7 +81,7 @@ function channelNextPage() {
showToast('Fetching results, please wait...');
invidiousAPI('channels/videos', channelView.channelId, {'page': channelView.page}, (data) => {
console.log(data);
ft.log(data);
data.forEach((video) => {
displayVideo(video, 'channel');
});
......
......@@ -31,7 +31,7 @@ let showComments = function (event, continuation = '') {
comments.attr('loaded', 'true');
invidiousAPI('comments', $('#comments').attr('data-video-id'), {}, (data) => {
console.log(data);
ft.log(data);
let comments = [];
......@@ -66,13 +66,17 @@ let showComments = function (event, continuation = '') {
*/
let playPauseVideo = function (event) {
let el = event.currentTarget;
el.paused ? el.play() : el.pause();
if (el.paused && $('.videoPlayer').is(':hover')) {
$('.videoPlayer')[0].style.cursor = 'none';
}
};
/**
* Handle keyboard shortcut commands.
*/
let videoShortcutHandler = function (event) {
let videoPlayer;
if (event.which == 68 && event.altKey === true) {
$('#search').focus();
}
......@@ -83,13 +87,27 @@ let videoShortcutHandler = function (event) {
forceSubscriptions();
}
let videoPlayer = $('.videoPlayer').get(0);
if (typeof (videoPlayer) !== 'undefined' && !$('#jumpToInput').is(':focus') && !$('#search').is(':focus')) {
if ((typeof(playerView) !== 'undefined' && playerView.legacySeen) || (typeof(miniPlayerView) !== 'undefined' && miniPlayerView.legacySeen)) {
videoPlayer = $('.videoPlayer').get(0);
}
else {
videoPlayer = $('#player').get(0);
}
if (typeof(videoPlayer) !== 'undefined' && !$('#jumpToInput').is(':focus') && !$('#search').is(':focus')) {
switch (event.which) {
case 32:
// Space Bar
event.preventDefault();
videoPlayer.paused ? videoPlayer.play() : videoPlayer.pause();
if (videoPlayer.paused) {
videoPlayer.play();
if($('.videoPlayer').is(':hover')) {
$('.videoPlayer')[0].style.cursor = 'none';
}
}
else {
videoPlayer.pause();
}
break;
case 74:
// J Key
......@@ -99,7 +117,15 @@ let videoShortcutHandler = function (event) {
case 75:
// K Key
event.preventDefault();
videoPlayer.paused ? videoPlayer.play() : videoPlayer.pause();
if (videoPlayer.paused) {
videoPlayer.play();
if($('.videoPlayer').is(':hover')) {
$('.videoPlayer')[0].style.cursor = 'none';
}
}
else {
videoPlayer.pause();
}
break;
case 76:
// L Key
......@@ -112,7 +138,7 @@ let videoShortcutHandler = function (event) {
if (videoPlayer.playbackRate > 0.25){
let rate = videoPlayer.playbackRate - 0.25;
videoPlayer.playbackRate = rate;
$('#currentSpeed').html(rate);
changeVideoSpeed(rate);
}
break;
case 80:
......@@ -121,19 +147,13 @@ let videoShortcutHandler = function (event) {
if (videoPlayer.playbackRate < 2){
let rate = videoPlayer.playbackRate + 0.25;
videoPlayer.playbackRate = rate;
$('#currentSpeed').html(rate);
changeVideoSpeed(rate);
}
break;
case 70:
// F Key
event.preventDefault();
if (videoPlayer.webkitDisplayingFullscreen) {
videoPlayer.webkitExitFullscreen
}
else{
videoPlayer.webkitRequestFullscreen();
}
fullscreenVideo();
break;
case 77:
// M Key
......@@ -148,11 +168,23 @@ let videoShortcutHandler = function (event) {
break;
case 67:
// C Key
let subtitleMode = $('.videoPlayer').get(0).textTracks[0].mode;
if (subtitleMode === 'hidden') {
$('.videoPlayer').get(0).textTracks[0].mode = 'showing'
} else {
$('.videoPlayer').get(0).textTracks[0].mode = 'hidden'
if (playerView.legacySeen) {
let subtitleMode = videoPlayer.textTracks[0].mode;
if (subtitleMode === 'hidden') {
videoPlayer.textTracks[0].mode = 'showing'