mirror of
https://codeberg.org/ashley/poke.git
synced 2024-11-13 04:38:04 +01:00
870 lines
38 KiB
Text
870 lines
38 KiB
Text
|
|
<% if (!isMobile) { %>
|
|
<!--
|
|
This Source Code Form is subject to the terms of the GNU General Public License:
|
|
|
|
Copyright (C) 2021-2022 POKETUBE (https://github.com/iamashley0/poketube)
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see https://www.gnu.org/licenses/.
|
|
-->
|
|
<!DOCTYPE html>
|
|
<html class="poketube_desktop">
|
|
<head>
|
|
<% if (e === false) { %> <!-- if ?e=false,dont show up the meta tags -->
|
|
|
|
<% } %>
|
|
<% if (!e) { %>
|
|
<meta content="<%=video.Title%>" name=title>
|
|
<meta content="<%=color%>" name="theme-color">
|
|
<meta content="<%=video.Channel.Name%>" name=twitter:author>
|
|
<meta content=@youtube name=twitter:site>
|
|
<meta content="https://poketube.fun/watch?v=<%=video.id%>" name=twitter:url>
|
|
<meta content="<%=video.Title%> - PokeTube" name=twitter:title>
|
|
<meta content="Watch this video by <%=video.Channel.Name%> On PokeTube. The YouTube front-end that doesnt track you!" property=twitter:description>
|
|
<meta content="https://i.ytimg.com/vi/<%=video.id%>/maxresdefault.jpg" property=og:image>
|
|
<meta content=summary_large_image name=twitter:card>
|
|
<link href="https://poketube.fun/watch?v=<%=video.id%>" itemprop=url>
|
|
<link href="http://www.youtube.com/channel/<%=video.Channel.id%>" itemprop=url>
|
|
<% } %> <!-- close the } -->
|
|
<link href=/css/yt-ukraine.svg?v=6 rel=icon>
|
|
<title> <%=video.Title%> - PokeTube</title>
|
|
<link href="https://p.poketube.fun/https://fonts.googleapis.com/css2?family=Roboto:wght@500&display=swap" rel=stylesheet>
|
|
<link href=/css/app-cdn.min.css rel=stylesheet>
|
|
<link href=/css/app.main.css rel=stylesheet>
|
|
<link href="/css/watch.main.css?v=56" rel=stylesheet>
|
|
<link href="https://p.poketube.fun/https://fonts.googleapis.com/css2?family=Inter:wght@900&family=Sigmar+One&display=swap" rel=stylesheet>
|
|
<link href=https://site-assets.fontawesome.com/releases/v6.1.1/css/all.css rel=stylesheet>
|
|
</head>
|
|
|
|
<!-- STYLES START -->
|
|
|
|
<style>
|
|
a.class:hover {
|
|
text-decoration:underline;
|
|
font-weight:bold
|
|
}
|
|
summary{
|
|
color:gray;
|
|
}
|
|
summary:hover{
|
|
color:white;
|
|
}
|
|
</style>
|
|
|
|
<style>
|
|
body{
|
|
overflow-x: hidden; /* Hide horizontal scrollbar */
|
|
color:#111111
|
|
}
|
|
|
|
.animated {
|
|
-webkit-animation-duration: 10s;
|
|
animation-duration: 10s;
|
|
-webkit-animation-fill-mode: both;
|
|
animation-fill-mode: both;
|
|
animation-iteration-count: infinite;
|
|
-moz-animation-iteration-count: infinite;
|
|
-webkit-animation-iteration-count: infinite;
|
|
-o-animation-iteration-count: infinite;
|
|
}
|
|
|
|
@-webkit-keyframes wiggle {
|
|
0% { -webkit-transform: skewX(9deg); }
|
|
10% { -webkit-transform: skewX(-8deg); }
|
|
20% { -webkit-transform: skewX(7deg); }
|
|
30% { -webkit-transform: skewX(-6deg); }
|
|
40% { -webkit-transform: skewX(5deg); }
|
|
50% { -webkit-transform: skewX(-4deg); }
|
|
60% { -webkit-transform: skewX(3deg); }
|
|
70% { -webkit-transform: skewX(-2deg); }
|
|
80% { -webkit-transform: skewX(1deg); }
|
|
90% { -webkit-transform: skewX(0deg); }
|
|
100% { -webkit-transform: skewX(0deg); }
|
|
}
|
|
|
|
@keyframes wiggle {
|
|
0% { transform: skewX(9deg); }
|
|
10% { transform: skewX(-8deg); }
|
|
20% { transform: skewX(7deg); }
|
|
30% { transform: skewX(-6deg); }
|
|
40% { transform: skewX(5deg); }
|
|
50% { transform: skewX(-4deg); }
|
|
60% { transform: skewX(3deg); }
|
|
70% { transform: skewX(-2deg); }
|
|
80% { transform: skewX(1deg); }
|
|
90% { transform: skewX(0deg); }
|
|
100% { transform: skewX(0deg); }
|
|
}
|
|
|
|
.wiggle {
|
|
-webkit-animation-name: wiggle;
|
|
animation-name: wiggle;
|
|
-webkit-animation-timing-function: ease-in;
|
|
animation-timing-function: ease-in;
|
|
}
|
|
|
|
.animated.wiggle {
|
|
-webkit-animation-duration: 0.75s;
|
|
animation-duration: 0.75s;
|
|
}
|
|
|
|
:root {
|
|
--text-primary: #fff;
|
|
--text-secondary: #fff;
|
|
--text-link: #3ea6ff;
|
|
|
|
--app-background: #111111;
|
|
--context-menu-background: #333;
|
|
--border-color: #444;
|
|
--item-hover-background: #373737;
|
|
--item-active-background: #383838;
|
|
|
|
--top-bar-background: #202020;
|
|
--guide-background: #212121;
|
|
|
|
--thumbnail-background: #252525;
|
|
|
|
--channel-info-background: #181818;
|
|
--channel-contents-background: #0f0f0f;
|
|
}
|
|
@font-face {
|
|
font-family: 'Ginto Nord';
|
|
font-weight: 800;
|
|
src:url('https://cdn.statically.io/gh/brecert/discord-quote-generator/main/Ginto-Nord-800.woff') format("woff");
|
|
}
|
|
|
|
.alert {
|
|
padding: 20px;
|
|
background-color: #f44336;
|
|
color: white;
|
|
opacity: 1;
|
|
transition: opacity 0.6s;
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
.alert.success {background-color: #04AA6D;}
|
|
.alert.info {background-color: #2196F3;}
|
|
.alert.warning {background-color: #ff9800;}
|
|
|
|
.closebtn {
|
|
margin-left: 15px;
|
|
color: white;
|
|
font-weight: bold;
|
|
float: right;
|
|
font-size: 22px;
|
|
line-height: 20px;
|
|
cursor: pointer;
|
|
transition: 0.3s;
|
|
}
|
|
|
|
.closebtn:hover {
|
|
color: black;
|
|
}
|
|
|
|
</style>
|
|
|
|
<!-- NEW NAVBAR -->
|
|
|
|
<style>
|
|
|
|
nav {
|
|
background:#0f0b0b
|
|
}
|
|
|
|
nav .right {
|
|
display: flex;
|
|
border-radius: 5px;
|
|
justify-content: normal;
|
|
padding-left: 0px;
|
|
align-items: center;
|
|
margin-left: 10px;
|
|
}
|
|
|
|
nav .left {
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
align-items: center;
|
|
border-radius: 5px;
|
|
padding-left: 0px;
|
|
margin-right: 40px;
|
|
}
|
|
|
|
nav .middle {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
border-radius: 5px;
|
|
}
|
|
</style>
|
|
|
|
<!-- STYLES END -->
|
|
|
|
<body>
|
|
|
|
<div class="app" style="color:#fff">
|
|
<nav>
|
|
<div class="left"><a class="class" href="/143" style=font-family:Inter,sans-serif;color:#fff> <img style="transform: scale(1.3);padding-left:0.9em;width: 8.5em;display: block;margin-left: auto;margin-right: auto;" src="/css/logo.svg?v=5"> </a> </div>
|
|
<div class="middle">
|
|
<form action=/search><input class=search-bar autocomplete="on" id=fname name=query style="color:#fff;font-family:Inter,sans-serif;border-radius: 8px;"> <button class="btn btn-success" type=submit><i class="fa-light fa-search"></i></button></form>
|
|
</div>
|
|
<div class="right">
|
|
<a href="/privacy">
|
|
<i style="display: block;margin-left: auto;margin-right: auto;" class="fa-light fa-shield"></i>
|
|
</a>
|
|
<a href="/video/upload?from=">
|
|
<i style="display: block;margin-left: auto;margin-right: auto;" class="fa-light fa-video"></i>
|
|
</a>
|
|
<a href="/download?v=<%=video.id%>">
|
|
<i style="display: block;margin-left: auto;margin-right: auto;" class="fa-light fa-download"></i>
|
|
</a>
|
|
</div>
|
|
</nav>
|
|
|
|
|
|
|
|
<div class="watch-page">
|
|
|
|
<div class="primary">
|
|
|
|
<div class="video-player-container">
|
|
<video class="player" id="<%=sha384(video.id)%>" style="border-radius: 16px;" autoplay controls src="https://v.poketube.fun/<%=url%>" poster="https://p.poketube.fun/https://i.ytimg.com/vi/<%=video.id%>/hqdefault.jpg?v=607ddcd4">
|
|
</video><img src="https://t.poketube.fun/t/rep.gif?video=<%=btoa(video.id)%>" style="border:0;width: 0;visibility: hidden;" id="video">
|
|
<div style="display: flex;justify-content: center;align-items: center;flex-direction: row; column-gap: 3px;" align="center">
|
|
|
|
<% if (!qua) { %>
|
|
|
|
<i style="display: block;" class="fa-solid fa-high-definition"></i> <a href="/watch?v=<%=video.id%>&quality=medium"><i style="display: block;" class="fa-light fa-standard-definition"></i></a>
|
|
<% } %>
|
|
<% if (qua) { %>
|
|
<a href="/watch?v=<%=video.id%>"> <i style="display: block;" class="fa-light fa-high-definition"></i> </a> <i style="display: block;" class="fa-solid fa-standard-definition"></i>
|
|
|
|
<% } %>
|
|
|
|
</div>
|
|
<div style="font-family:Inter">
|
|
<p style="text-align:center;">
|
|
if the video is not loading, try the sd quailty. if its buffering, refresh the page or wait for it to download it qwq (try using the arrow buttons on your keyboard to download the whole video faster.) if you still have problems using poketube, create an issue <a href="https://codeberg.org/Ashley/poketube/issues/new">here.</a>
|
|
</p>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<br>
|
|
<div class="video-info">
|
|
<div class="video-title" style="font-family:'Ginto Nord';font-weight:900;white-space:yes;"><%=video.Title%></div>
|
|
<p class="video-sub-info description">
|
|
<span><%=engagement.viewCount.toLocaleString()%> Total views - Uploaded on <%=date%> ^^</span>
|
|
<br> <br>
|
|
<% if (video.Channel.Name.endsWith(' - Topic')) { %>
|
|
<b style="font-family:Inter">Listen to this song on <a href="/music?v=<%=video.id%>"> poketube music!</a> owo :3 </b> <br> <br>
|
|
|
|
<% }%>
|
|
|
|
<%-String(video.Description).replace(/\n/g, " <br> ")%></center>
|
|
</p>
|
|
<div class="video-info-buttons" style="border-radius: 15px;background: #333;padding: 3px;border-style: none;min-height: 34px;height: min-content;">
|
|
<div>
|
|
<i class="fa-light fa-thumbs-up"></i>
|
|
<%=engagement.likes.toLocaleString()%>
|
|
</div>
|
|
<div>
|
|
<i class="fa-light fa-thumbs-down"></i> <%=engagement.dislikes.toLocaleString()%>
|
|
</div>
|
|
<div>
|
|
|
|
<a style="color:#fff" href="/download?v=<%=video.id%>">
|
|
<i class="fa-light fa-download"></i>
|
|
Download!
|
|
</a>
|
|
|
|
|
|
<a style="color:#fff" href="/old/watch?v=<%=video.id%>">
|
|
<i class="fa-light fa-history"></i>
|
|
Watch in old UI
|
|
</a>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<div class="channel-info__bordered" name="chnl">
|
|
<a href="/channel?id=<%=video.Channel.id%>" class="avatar">
|
|
<img src="https://p.poketube.fun/<%= k.Video.Channel.Avatar[1].$t %>">
|
|
</a>
|
|
<div class="name" style="font-family:'Ginto Nord'">
|
|
<a href="/channel?id=<%=video.Channel.id%>" > <%=video.Channel.Name%></a>
|
|
</div>
|
|
<div class="subscriber-count">
|
|
<%= k.Video.Channel.subscriberCount %>
|
|
</div>
|
|
<button class="subscribe-button" ><a style="color:#fff" href="https://www.youtube.com/channel/<%=video.Channel.id%>?view_as=subscriber?sub_confirmation=1">Suscribe</a></button>
|
|
</div>
|
|
<div>
|
|
<br>
|
|
|
|
</div> <hr style="clear: both;display: block;border: none;border-bottom: 0.5px solid #2f2f2f;margin: 0 0;/*! width: 4.5em; */height: 0;">
|
|
|
|
<div class="video-title" style="font-family:'Ginto Nord';font-weight:900;white-space:yes;">Encryption Information!</div><br>
|
|
<i class="fas fa-shield-alt"></i> The Connection is secured with ECDSA with SHA-384 Signature Algorithm :3 (<a href="https://en.wikipedia.org/wiki/Encryption">WHAT THE HELL IS ENCRYPTION ?! (ME DUM)</a>) <br><br>
|
|
|
|
|
|
<div>
|
|
<a href="/encryption?v=<%=video.id%>">Click here for encryption info</a><br>
|
|
|
|
</div>
|
|
|
|
</p>
|
|
|
|
<hr style="clear: both;display: block;border: none;border-bottom: 0.5px solid #2f2f2f;margin: 0 0;/*! width: 4.5em; */height: 0;">
|
|
|
|
<hr style="clear: both;display: block;border: none;border-bottom: 0.5px solid #2f2f2f;margin: 0 0;/*! width: 4.5em; */height: 0;">
|
|
</div>
|
|
|
|
<div class="recommended-list" style="background-color:#1c1c1c;border-radius:25px;margin: 10px;">
|
|
|
|
<div style="font-family:Inter,sans-serif;font-weight:900;white-space:yes;" align="center">
|
|
|
|
<a href="https://youtube.com/watch?v=<%=video.id%>">Open On YouTube</a> • <a href="/privacy">Privacy</a> • <a href="https://github.com/iamashley0/poketube/">Git</a>
|
|
</div>
|
|
|
|
<% if (optout) { %>
|
|
|
|
<% } %>
|
|
|
|
<% if (!optout) { %>
|
|
|
|
<div style="font-family:Inter,sans-serif;font-weight:900;white-space:yes;" align="center">
|
|
|
|
<a href="/watch?v=<%=video.id%>&t=f">
|
|
Opt out of Metrics</a> (<a href="/privacy" style="color:#fff">Wut?</a>)
|
|
|
|
</div>
|
|
<% } %>
|
|
|
|
<% if (lyrics && !r) { %>
|
|
<div style="font-family:Inter,sans-serif;font-weight:900;white-space:yes;" align="center">
|
|
|
|
<% if (optout) { %>
|
|
<a href="/watch?v=<%=video.id%>&r=f">Lyrics (Wow)</a>
|
|
|
|
|
|
<% } %>
|
|
<% if (!optout) { %>
|
|
<a href="/watch?v=<%=video.id%>&r=f">Lyrics (Wow)</a>
|
|
<% } %>
|
|
</div>
|
|
<% } %>
|
|
|
|
<% if (!r) { %>
|
|
<hr style="clear: both;display: block;border: none;border-bottom: 0.5px solid #2f2f2f;margin: 0 0;/*! width: 4.5em; */height: 0;">
|
|
|
|
|
|
<div>
|
|
<a href="/watch?v=<%=video.id%>">Recommended videos</a> • <a href="/watch?v=<%=video.id%>&f=t"> Recent videos on dis channel</a>
|
|
|
|
</div> <hr style="clear: both;display: block;border: none;border-bottom: 0.5px solid #2f2f2f;margin: 0 0;/*! width: 4.5em; */height: 0;">
|
|
|
|
<% if (!f) { %>
|
|
<% k.Video.Recommendations.Video.forEach(x => { %>
|
|
<div class="video">
|
|
<% if (!optout) { %>
|
|
|
|
<a href="/watch?v=<%= x.id %>" class="thumbnail" style="background-image: url('https://p.poketube.fun/https://i.ytimg.com/vi/<%= x.id %>/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy_x4UUHLNDZtJtH0PXeQGoRFTgw');border-radius: 0.5pc;" > <span class="video-length"><%=x.duration %></span>
|
|
<% } %>
|
|
<% if (optout) { %>
|
|
|
|
<a href="/watch?v=<%= x.id %>&t=f" class="thumbnail" style="background-image: url('https://p.poketube.fun/https://i.ytimg.com/vi/<%= x.id %>/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy_x4UUHLNDZtJtH0PXeQGoRFTgw');border-radius: 0.5pc;" > <span class="video-length"><%=x.duration %></span>
|
|
<% } %>
|
|
</a>
|
|
<div class="info">
|
|
|
|
<% if (!optout) { %>
|
|
<a href="/watch?v=<%= x.id %>" class="title max-lines-2"><%= x.Title %></a>
|
|
<% } %>
|
|
<% if (optout) { %>
|
|
<a href="/watch?v=<%= x.id %>&t=f" class="title max-lines-2"><%= x.Title %></a>
|
|
<% } %>
|
|
<div>
|
|
<a class="max-lines-2" href="/channel?id=<%= x.Channel.id %>"><%=x.Channel.Name %></a>
|
|
<div>
|
|
<%= x.uploadedAt %> </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<% }) %>
|
|
<% } %>
|
|
|
|
<% if (f) { %>
|
|
|
|
<% tj.Channel.Contents.ItemSection.ItemSection.Video.forEach(x => { %>
|
|
<div class="video">
|
|
<% if (!optout) { %>
|
|
|
|
<a href="/watch?v=<%= x.id %>" class="thumbnail" style="background-image: url('https://p.poketube.fun/https://i.ytimg.com/vi/<%= x.id %>/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy_x4UUHLNDZtJtH0PXeQGoRFTgw');border-radius: 0.5pc;" > <span class="video-length"><%=x.duration %></span>
|
|
<% } %>
|
|
<% if (optout) { %>
|
|
|
|
<a href="/watch?v=<%= x.id %>&t=f" class="thumbnail" style="background-image: url('https://p.poketube.fun/https://i.ytimg.com/vi/<%= x.id %>/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy_x4UUHLNDZtJtH0PXeQGoRFTgw');border-radius: 0.5pc;" > <span class="video-length"><%=x.duration %></span>
|
|
<% } %>
|
|
</a>
|
|
<div class="info">
|
|
<% if (!optout) { %>
|
|
<a href="/watch?v=<%= x.id %>" class="title max-lines-2"><%= x.Title %></a>
|
|
<% } %>
|
|
<% if (optout) { %>
|
|
<a href="/watch?v=<%= x.id %>&t=f" class="title max-lines-2"><%= x.Title %></a>
|
|
<% } %>
|
|
<div>
|
|
<a class="max-lines-2" href="/channel?id=<%= video.Channel.id %>"><%=video.Channel.Name %></a>
|
|
<div>
|
|
<%= x.uploadedAt %> </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<% }) %>
|
|
<% } %>
|
|
<% } %>
|
|
|
|
|
|
<% if (lyrics) { %>
|
|
<% if (r === "f") { %>
|
|
<hr style="clear: both;display: block;border: none;border-bottom: 0.5px solid #2f2f2f;margin: 0 0;/*! width: 4.5em; */height: 0;">
|
|
<div>
|
|
<a href="/watch?v=<%=video.id%>">See the Recommended videos instead</a> - <a href="https://github.com/iamashley0/poketube/issues">Report wrong lyrics qwq</a>
|
|
</div>
|
|
<div align="center"> <hr style="clear: both;display: block;border: none;border-bottom: 0.5px solid #2f2f2f;margin: 0 0;/*! width: 4.5em; */height: 0;">
|
|
|
|
<h1 style="font-family:'Ginto Nord',sans-serif;font-weight:900;white-space:yes;" align="center">
|
|
Lyrics
|
|
</h1>
|
|
<p>
|
|
See how our lyrics search works:<a href="https://github.com/iamashley0/poketube/blob/main/src/lyrics.js">Here</a>
|
|
</p>
|
|
<p style="color: white;">
|
|
<p style=color:#fff>
|
|
<%-lyrics%>
|
|
</p>
|
|
<% } %>
|
|
|
|
<% } %> </details>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<% if (!optout) { %>
|
|
<!-- MORE INFO :https://poketube.fun/privacy -->
|
|
<!-- MORE INFO :https://poketube.fun/privacy -->
|
|
|
|
<!-- if you want to change the url - please see config in server.js -->
|
|
|
|
<!-- START <%=t%> -->
|
|
|
|
<!-- SESSION -->
|
|
<img src="<%=t%>t/rep.gif?ID=<%=btoa(Date.now())%>" style="width: 0;visibility: hidden;" id="SesionID">
|
|
<img src="<%=t%>t/rep.gif?piwik=t" style="width: 0;visibility: hidden;" id="piwik_noip_no_personal-info_collect">
|
|
|
|
<!-- VIDEO -->
|
|
<img src="<%=t%>t/rep.gif?video_id=<%=btoa(video.id)%>" style="width: 0;visibility: hidden;" id="videoID">
|
|
<img src="<%=t%>t/rep.gif?channel_ID=<%=btoa(video.Channel.id)%>" style="width: 0;visibility: hidden;" id="channel">
|
|
|
|
|
|
<!-- END <%=t%> -->
|
|
|
|
<% } %>
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|
|
|
|
<% } %>
|
|
|
|
<% if (isMobile) { %>
|
|
|
|
<!--
|
|
This Source Code Form is subject to the terms of the GNU General Public License:
|
|
|
|
Copyright (C) 2021-2022 POKETUBE (https://github.com/iamashley0/poketube)
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see https://www.gnu.org/licenses/.
|
|
-->
|
|
<!DOCTYPE html>
|
|
<% if (e === false) { %> <!-- if ?e=false,dont show up the meta tags -->
|
|
|
|
<% } %>
|
|
<% if (!e) { %>
|
|
<meta content="<%=video.Title%>" name=title>
|
|
<meta content="<%=color%>" name="theme-color">
|
|
<meta content="<%=video.Channel.Name%>" name=twitter:author>
|
|
<meta content=@youtube name=twitter:site>
|
|
<meta content="https://poketube.fun/watch?v=<%=video.id%>" name=twitter:url>
|
|
<meta content="<%=video.Title%> - PokeTube" name=twitter:title>
|
|
<meta content="mobile this video by <%=video.Channel.Name%> On PokeTube. The YouTube front-end that doesnt track you!" property=twitter:description>
|
|
<meta content="https://i.ytimg.com/vi/<%=video.id%>/maxresdefault.jpg" property=og:image>
|
|
<meta content=summary_large_image name=twitter:card>
|
|
<link href="https://poketube.fun/watch?v=<%=video.id%>" itemprop=url>
|
|
<% } %> <!-- close the } -->
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<link href=/css/yt-ukraine.svg?v=6 rel=icon>
|
|
<title> <%=video.Title%> - PokeTube Mobile</title>
|
|
<link href="https://p.poketube.fun/https://fonts.googleapis.com/css2?family=Roboto:wght@500&display=swap" rel=stylesheet>
|
|
<link href="https://p.poketube.fun/https://tube.kuylar.dev/css/mobile.css" rel=stylesheet>
|
|
<link href=/css/app.main.css rel=stylesheet>
|
|
<link href="https://p.poketube.fun/https://fonts.googleapis.com/css2?family=Inter:wght@900&family=Sigmar+One&display=swap" rel=stylesheet>
|
|
<link href=https://site-assets.fontawesome.com/releases/v6.1.1/css/all.css rel=stylesheet>
|
|
<style>
|
|
a.class:hover {
|
|
text-decoration:underline;
|
|
font-weight:bold
|
|
}
|
|
summary{
|
|
color:gray;
|
|
}
|
|
summary:hover{
|
|
color:white;
|
|
}
|
|
</style>
|
|
<!-- WIGGLE WIGGLE WIGGLE -->
|
|
<style>
|
|
|
|
|
|
|
|
body{
|
|
max-width: 100%;
|
|
overflow-x: hidden; /* Hide horizontal scrollbar */
|
|
color:#111111
|
|
}
|
|
|
|
.animated {
|
|
-webkit-animation-duration: 10s;
|
|
animation-duration: 10s;
|
|
-webkit-animation-fill-mode: both;
|
|
animation-fill-mode: both;
|
|
animation-iteration-count: infinite;
|
|
-moz-animation-iteration-count: infinite;
|
|
-webkit-animation-iteration-count: infinite;
|
|
-o-animation-iteration-count: infinite;
|
|
}
|
|
|
|
@-webkit-keyframes wiggle {
|
|
0% { -webkit-transform: skewX(9deg); }
|
|
10% { -webkit-transform: skewX(-8deg); }
|
|
20% { -webkit-transform: skewX(7deg); }
|
|
30% { -webkit-transform: skewX(-6deg); }
|
|
40% { -webkit-transform: skewX(5deg); }
|
|
50% { -webkit-transform: skewX(-4deg); }
|
|
60% { -webkit-transform: skewX(3deg); }
|
|
70% { -webkit-transform: skewX(-2deg); }
|
|
80% { -webkit-transform: skewX(1deg); }
|
|
90% { -webkit-transform: skewX(0deg); }
|
|
100% { -webkit-transform: skewX(0deg); }
|
|
}
|
|
|
|
@keyframes wiggle {
|
|
0% { transform: skewX(9deg); }
|
|
10% { transform: skewX(-8deg); }
|
|
20% { transform: skewX(7deg); }
|
|
30% { transform: skewX(-6deg); }
|
|
40% { transform: skewX(5deg); }
|
|
50% { transform: skewX(-4deg); }
|
|
60% { transform: skewX(3deg); }
|
|
70% { transform: skewX(-2deg); }
|
|
80% { transform: skewX(1deg); }
|
|
90% { transform: skewX(0deg); }
|
|
100% { transform: skewX(0deg); }
|
|
}
|
|
|
|
.wiggle {
|
|
-webkit-animation-name: wiggle;
|
|
animation-name: wiggle;
|
|
-webkit-animation-timing-function: ease-in;
|
|
animation-timing-function: ease-in;
|
|
}
|
|
|
|
.animated.wiggle {
|
|
-webkit-animation-duration: 0.75s;
|
|
animation-duration: 0.75s;
|
|
}
|
|
|
|
:root {
|
|
--text-primary: #fff;
|
|
--text-secondary: #fff;
|
|
--text-link: #3ea6ff;
|
|
|
|
--app-background: #111111;
|
|
--context-menu-background: #333;
|
|
--border-color: #444;
|
|
--item-hover-background: #373737;
|
|
--item-active-background: #383838;
|
|
|
|
--top-bar-background: #202020;
|
|
--guide-background: #212121;
|
|
|
|
--thumbnail-background: #252525;
|
|
|
|
--channel-info-background: #181818;
|
|
--channel-contents-background: #0f0f0f;
|
|
}
|
|
@font-face {
|
|
font-family: 'Ginto Nord';
|
|
font-weight: 800;
|
|
src:url('https://cdn.statically.io/gh/brecert/discord-quote-generator/main/Ginto-Nord-800.woff') format("woff");
|
|
}
|
|
|
|
.alert {
|
|
padding: 20px;
|
|
background-color: #f44336;
|
|
color: white;
|
|
opacity: 1;
|
|
transition: opacity 0.6s;
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
.alert.success {background-color: #04AA6D;}
|
|
.alert.info {background-color: #2196F3;}
|
|
.alert.warning {background-color: #ff9800;}
|
|
|
|
.closebtn {
|
|
margin-left: 15px;
|
|
color: white;
|
|
font-weight: bold;
|
|
float: right;
|
|
font-size: 22px;
|
|
line-height: 20px;
|
|
cursor: pointer;
|
|
transition: 0.3s;
|
|
}
|
|
|
|
.closebtn:hover {
|
|
color: black;
|
|
}
|
|
|
|
|
|
</style>
|
|
<style>body, html { margin: 0; padding: 0; } * { font-family: sans-serif; color:#fff } .player { background-color: #000 !important; display: grid; grid-template-columns: 1fr min-content; grid-template-rows: max-content 1fr max-content max-content max-content; gap: 0 0; width: 100%; /* height: 100%; */ aspect-ratio: 16 / 9; } .player * { color: #fff; } .player.embed, video.embed { position: fixed; top: 0; bottom: 0; left: 0; right: 0; } .player * { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .player > video { position: relative; width: 100%; height: 100%; z-index: 0; grid-area: 1 / 1 / 6 / 3; } .player.hide-controls > .player-title, .player.hide-controls > .player-controls, .player.hide-controls > .player-playback-bar-container, .player.hide-controls > .player-menu { display: none !important; } .player-controls { background-color: #0007; display: flex; justify-content: center; align-items: center; z-index: 1; grid-area: 1 / 1 / 6 / 3; } .player-button { width: 96px; height: 96px; font-size: 90px; text-align: center; line-height: 48px; } .player-tiny-button { width: 40px; font-size: 20px; text-align: center; } .player-tiny-button > i { color: #ddd; } .player-button, .player-button * { color: #dddddd !important; text-decoration: none; } .player-button > i { min-width: 48px; } .player-button:hover, .player-button:hover * { color: #fff !important; } .player-playback-bar { transition: width linear 100ms; } .player-playback-bar-container { grid-area: 4 / 1 / 5 / 3; display: flex; column-gap: 8px; justify-content: center; align-items: center; height: 8px; transition: height linear 100ms; width: 100%; z-index: 2; margin-bottom: 10px; } .player-playback-bar-bg { background-color: #fff3 !important; width: 100%; height: 100%; z-index: 2; display: grid; grid-template-columns: 1fr; grid-template-rows: 1fr; } .player-playback-bar-bg > * { grid-area: 1 / 1 / 2 / 2; } .player-playback-bar-buffer { background-color: #fffa !important; height: 100%; width: 0; z-index: 3; } .player-playback-bar-fg { background-color: #f00 !important; height: 100%; width: 0; z-index: 4; } .player-buffering { grid-area: 1 / 1 / 6 / 3; z-index: 1; display: flex; justify-content: center; align-items: center; } .player-buffering-spinner { width: 80px; height: 80px; }</style>
|
|
<body>
|
|
<div class="app" style="color:#fff;margin-top: 0;">
|
|
<nav>
|
|
<div class=left><a class="class" href="/" style=font-family:Inter,sans-serif;color:#fff> <img style="width: 8.5em;display: block;margin-left: auto;margin-right: auto;" src="/css/logo-mobile.svg"> </a>
|
|
</div>
|
|
</nav>
|
|
<div class="mobile-page">
|
|
<div class="primary">
|
|
<div class="video-player-container">
|
|
<video class="player" autoplay style="border-radius: 16px;" controls src="<%=url%>" poster="https://i.ytimg.com/vi/<%=video.id%>/hqdefault.jpg?v=607ddcd4">
|
|
</video>
|
|
</div>
|
|
<div class="video-info">
|
|
<div class="video-title" style="font-family:'Inter';font-weight:900;white-space:yes;"><%=video.Title%> </div>
|
|
<div class="video-info-bar" style="font-family:'Inter';">
|
|
<div class="divider"></div>
|
|
<div class="divider"></div>
|
|
<%=engagement.viewCount.toLocaleString()%> Views - Uploaded on <%=date%> :3
|
|
<div class="video-info-buttons" style="font-family:'Inter';font-weight:900;white-space:yes;">
|
|
<div>
|
|
<i class="fa-light fa-thumbs-up" style="font-size:x-large" ></i>
|
|
<%=engagement.likes.toLocaleString()%>
|
|
</div>
|
|
<a>
|
|
<i class="fa-light fa-thumbs-down" style="font-size:x-large" ></i><%=engagement.dislikes.toLocaleString()%>
|
|
</a>
|
|
<a style="color:#fff" href="/download?v=<%=video.id%>&from=mobile">
|
|
<i style="font-size:x-large" class="fa-light fa-download"></i>
|
|
Download
|
|
</a>
|
|
<a style="color:#fff" href="#more"> <i style="font-size:x-large;color:#fff" class="fa-thin fa-circle-plus"></i>More.. </a>
|
|
</div>
|
|
</div>
|
|
<div class="channel-info" name="chnl">
|
|
<a href="/channel?id=<%=video.Channel.id%>" class="avatar">
|
|
<img src=" <%= k.Video.Channel.Avatar[1].$t %>">
|
|
</a>
|
|
<div class="name" style="font-family:'Ginto Nord'">
|
|
<a href="/channel?id=<%=video.Channel.id%>" > <%=video.Channel.Name%></a>
|
|
</div>
|
|
|
|
<button class="subscribe-button" ><a style="color:#fff" href="https://www.youtube.com/channel/<%=video.Channel.id%>?view_as=subscriber?sub_confirmation=1">Suscribe</a></button>
|
|
</div>
|
|
<div>
|
|
<div>
|
|
|
|
<h3 style="color:#fff;font-family:Ginto Nord,sans-serif;font-weight:700;white-space:yes;"> Description</h3>
|
|
<details open style="color:#fff"><summary style="color:#fff"></summary>
|
|
|
|
<p class="description"><%-String(video.Description).replace(/\n/g, " <br> ")%> </p>
|
|
|
|
</div>
|
|
|
|
</details>
|
|
</div>
|
|
</div>
|
|
<div class="secondary">
|
|
|
|
<div class="recommended-list" style="color:#fff">
|
|
|
|
<% if (!r) { %>
|
|
<hr style="clear: both;display: block;border: none;border-bottom: 0.5px solid #2f2f2f;margin: 0 0;/*! width: 4.5em; */height: 0;">
|
|
<div>
|
|
<a href="/watch?v=<%=video.id%>">Recommended videos</a> • <a href="/watch?v=<%=video.id%>&f=t"> Recent videos from this channel</a> </div>
|
|
<% if (!f) { %>
|
|
<% k.Video.Recommendations.Video.forEach(x => { %>
|
|
<div class="video">
|
|
<% if (!optout) { %>
|
|
|
|
<a href="/watch?v=<%= x.id %>" class="thumbnail" style="background-image: url('https://p.poketube.fun/https://i.ytimg.com/vi/<%= x.id %>/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy_x4UUHLNDZtJtH0PXeQGoRFTgw');border-radius: 9.5px;" > <span class="video-length"><%=x.duration %></span>
|
|
<% } %>
|
|
<% if (optout) { %>
|
|
|
|
<a href="/watch?v=<%= x.id %>&t=f" class="thumbnail" style="background-image: url('https://p.poketube.fun/https://i.ytimg.com/vi/<%= x.id %>/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy_x4UUHLNDZtJtH0PXeQGoRFTgw');border-radius: 9.5px;" > <span class="video-length"><%=x.duration %></span>
|
|
<% } %>
|
|
</a>
|
|
<div class="info">
|
|
|
|
<% if (!optout) { %>
|
|
<a href="/watch?v=<%= x.id %>" class="title max-lines-2"><%= x.Title %></a>
|
|
<% } %>
|
|
<% if (optout) { %>
|
|
<a href="/watch?v=<%= x.id %>&t=f" class="title max-lines-2"><%= x.Title %></a>
|
|
<% } %>
|
|
<div style="color:#fff" >
|
|
<a class="max-lines-2" style="color:#fff" href="/channel?id=<%= x.Channel.id %>"><%=x.Channel.Name %></a> • <div>
|
|
<%= x.uploadedAt %> </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<% }) %>
|
|
<% } %>
|
|
|
|
<% if (f) { %>
|
|
|
|
<% tj.Channel.Contents.ItemSection.ItemSection.Video.forEach(x => { %>
|
|
<div class="video">
|
|
<% if (!optout) { %>
|
|
|
|
<a href="/watch?v=<%= x.id %>" class="thumbnail" style="background-image: url('https://p.poketube.fun/https://i.ytimg.com/vi/<%= x.id %>/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy_x4UUHLNDZtJtH0PXeQGoRFTgw');border-radius: 9.5px;" > <span class="video-length"><%=x.duration %></span>
|
|
<% } %>
|
|
<% if (optout) { %>
|
|
|
|
<a href="/watch?v=<%= x.id %>&t=f" class="thumbnail" style="background-image: url('https://p.poketube.fun/https://i.ytimg.com/vi/<%= x.id %>/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy_x4UUHLNDZtJtH0PXeQGoRFTgw');border-radius: 9.5px;" > <span class="video-length"><%=x.duration %></span>
|
|
<% } %>
|
|
</a>
|
|
<div class="info">
|
|
<% if (!optout) { %>
|
|
<a href="/watch?v=<%= x.id %>" class="title max-lines-2"><%= x.Title %></a>
|
|
<% } %>
|
|
<% if (optout) { %>
|
|
<a href="/watch?v=<%= x.id %>&t=f" class="title max-lines-2"><%= x.Title %></a>
|
|
<% } %>
|
|
<div>
|
|
<a class="max-lines-2" style="color:#fff" href="/channel?id=<%= video.Channel.id %>"><%=video.Channel.Name %></a>
|
|
<div>
|
|
<%= x.uploadedAt %> </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<% }) %>
|
|
<% } %>
|
|
<a name="more"></a>
|
|
<hr style="clear: both;display: block;border: none;border-bottom: 0.5px solid #2f2f2f;margin: 0 0;/*! width: 4.5em; */height: 0;">
|
|
|
|
<h3 style="text-align:center;color:#fff;font-family:Ginto Nord,sans-serif;font-weight:700;white-space:yes"> MOAR </h3>
|
|
<p style="text-align:center;color:#fff; font-weight:700;white-space:yes;margin:0">More Epic options owo~</p>
|
|
<div style="font-family:Inter,sans-serif;font-weight:900;white-space:yes;" align="center">
|
|
<a href="https://youtube.com/watch?v=<%=video.id%>">Open On YouTube</a> • <a href="/privacy">Privacy</a> • <a href="https://github.com/iamashley0/poketube/">Git</a>
|
|
<% if (optout) { %>
|
|
<% } %>
|
|
<% if (!optout) { %>
|
|
• <a href="/watch?v=<%=video.id%>&t=f">
|
|
Opt out of Metrics</a> (<a href="/privacy" style="color:#fff">Wut?</a>)
|
|
<% } %>
|
|
<% if (lyrics && !r) { %>
|
|
<% if (optout) { %>
|
|
<br> <br> <a href="/watch?v=<%=video.id%>&r=f"> Lyrics (Wow) </a>
|
|
<% } %>
|
|
<% if (!optout) { %>
|
|
<br> <br> <a href="/watch?v=<%=video.id%>&r=f" > Lyrics (Wow) </a>
|
|
<% } %>
|
|
<% } %>
|
|
|
|
<% } %>
|
|
<p><i class="fa-light fa-shield"></i>The Connection is secured with ECDSA with SHA-384 Signature Algorithm :3 </p>
|
|
</div>
|
|
|
|
|
|
<% if (lyrics) { %>
|
|
<% if (r === "f") { %>
|
|
<hr style="clear: both;display: block;border: none;border-bottom: 0.5px solid #2f2f2f;margin: 0 0;/*! width: 4.5em; */height: 0;">
|
|
<p>
|
|
<a href="/watch?v=<%=video.id%>">See the Recommended videos instead</a> - <a href="https://github.com/iamashley0/poketube/issues">Report wrong lyrics qwq</a>
|
|
</p>
|
|
<div align="center"> <hr style="clear: both;display: block;border: none;border-bottom: 0.5px solid #2f2f2f;margin: 0 0;/*! width: 4.5em; */height: 0;">
|
|
<h1 style="font-family:'Ginto Nord',sans-serif;font-weight:900;white-space:yes;" align="center">
|
|
Lyrics
|
|
</h1>
|
|
<p>
|
|
See how our lyrics search works:<a href="https://github.com/iamashley0/poketube/blob/main/src/lyrics.js">Here</a>
|
|
</p>
|
|
<p style="color: white;">
|
|
<p style=color:#fff>
|
|
<%-lyrics%>
|
|
</p>
|
|
|
|
<% } %>
|
|
|
|
<% } %>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<% if (!optout) { %>
|
|
<!-- MORE INFO :https://poketube.fun/privacy -->
|
|
<!-- MORE INFO :https://poketube.fun/privacy -->
|
|
|
|
<!-- if you want to change the url - please see config in server.js -->
|
|
|
|
<!-- START <%=t%> -->
|
|
<!-- mobile only -->
|
|
<!-- dont use matomo.php, as its being blocked by ublock origin. -->
|
|
<img src="<%=t%>t/index.php?idsite=5&rec=1" style="width: 0;visibility: hidden;border:0;" alt="" >
|
|
<!--- mobile only -->
|
|
|
|
<img src="<%=t%>t/rep.gif?ID=<%=btoa(Date.now())%>" style="width: 0;visibility: hidden;" id="SesionID">
|
|
<img src="<%=t%>t/rep.gif?video_id=<%=btoa(video.id)%>" style="width: 0;visibility: hidden;" id="videoID">
|
|
<img src="<%=t%>t/rep.gif?channel_ID=<%=btoa(video.Channel.id)%>" style="width: 0;visibility: hidden;" id="channel">
|
|
<img src="<%=t%>t/rep.gif?piwik=t" style="width: 0;visibility: hidden;" id="piwik_noip_no_personal-info_collect">
|
|
<!-- END <%=t%> -->
|
|
<% } %>
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|
|
</body>
|
|
<% } %>
|