privateone's picture
Upload 40 files
861d763 verified
<!DOCTYPE html>
<html lang="en">
<head>
<title>Play | {{file_name}}</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-Frame-Options" content="deny">
<link rel="stylesheet" href="https://cdn.plyr.io/3.7.8/plyr.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<script src="https://cdn.plyr.io/3.7.8/plyr.polyfilled.js"></script>
<style>
html, body {
height: 100%;
width: 100%;
background-image: url(https://i.postimg.cc/T2mcBGtv/pxfuel-2.jpg);
}
#stream-media {
height: 100%;
width: 100%;
}
#error-message {
color: red;
font-size: 24px;
text-align: center;
margin-top: 20px;
}
.plyr__video-wrapper .plyr-download-button{
position: absolute;
top: 10px;
left: 10px;
width: 30px;
height: 30px;
background-color: rgba(0, 0, 0, 0.7);
border-radius: 50%;
text-align: center;
line-height: 30px;
color: white;
z-index: 10;
}
.plyr__volume {
max-width: initial;
min-width: initial;
width: auto;
position: relative;
}
.plyr__video-wrapper .plyr-share-button{
position: absolute;
top: 50px;
left: 10px;
width: 30px;
height: 30px;
background-color: rgba(0, 0, 0, 0.7);
border-radius: 50%;
text-align: center;
line-height: 30px;
color: white;
z-index: 10;
}
.plyr__video-wrapper .plyr-download-button:hover,
.plyr__video-wrapper .plyr-share-button:hover{
background-color: rgba(255, 255, 255, 0.7);
color: black;
}
.plyr__video-wrapper .plyr-download-button:before {
font-family: "Font Awesome 5 Free";
content: "\f019";
font-weight: bold;
}
.plyr__video-wrapper .plyr-share-button:before {
font-family: "Font Awesome 5 Free";
content: "\f064";
font-weight: bold;
}
.plyr, .plyr__video-wrapper, .plyr__video-embed iframe {
height: auto;
width:100vw;
}
:root {
--mycol: #ff003c;
--gcol: linear-gradient(to right, red, blue);
}
span {
color: var(--mycol);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
color: white;
font-family: 'Josefin Sans', sans-serif;
scroll-behavior: smooth;
text-transform: capitalize;
}
*::-webkit-scrollbar {
display: none;
}
a {
text-decoration: none;
}
.file-name {
overflow: hidden;
margin-top: 20px;
width: 100vw;
height: auto;
padding: 20px;
border-radius: 5px;
background: linear-gradient(to bottom, rgba(52, 52, 52, 0.301), rgba(153, 153, 153, 0.075));
}
.file-name h4 {
color: var(--mycol);
}
.downloadBtn {
padding: 30px 0;
display: flex;
align-items: center;
justify-content: center;
/* flex-direction: column; */
flex-wrap: wrap;
gap: 20px;
}
.downloadBtn button {
opacity: 1;
border-radius: 6px;
background: linear-gradient(to bottom, rgba(247, 247, 247, 0.187), rgba(240, 240, 240, 0.105));
height: 50px;
width: 300px;
display: flex;
align-items: center;
font-weight: 700;
gap: 10px;
padding-left: 50px;
border: none;
text-transform: uppercase;
}
.downloadBtn img {
height: 20px;
}
/* about sec edit */
.abt {
overflow: hidden;
}
.about {
/* width: 100%; */
width: 100vw;
background-size: cover;
backdrop-filter: blur(1px);
height: 100vh;
position: relative;
/* overflow: hidden; */
transition: all 0.4s ease;
/* display: none; */
overflow: hidden;
}
.about::-webkit-scrollbar {
display: none;
}
.about-nav {
/* height: 50px; */
width: 100%;
align-items: center;
justify-content: space-evenly;
backdrop-filter: blur(1px);
position: fixed;
left: 0%;
z-index: 200;
font-size: 14px;
top: 12%;
display: none;
}
.about-nav a {
position: relative;
margin: 0 7px;
}
.about-nav a::after {
content: "";
position: absolute;
height: 2px;
width: 0%;
background-color: var(--mycol);
bottom: -5px;
left: 1px;
border-radius: 30px;
transition: all 0.4s ease;
}
.about-nav a.active::after {
width: 90%;
}
.about-dets {
height: 100vh;
width: 400vw;
position: absolute;
display: flex;
align-items: center;
overflow: hidden;
transition: all 0.4s ease;
}
.abt-sec {
height: 100%;
width: 100vw;
display: flex;
flex-direction: column;
align-items: center;
/* justify-content: center; */
z-index: 100;
gap: 10%;
padding-top: 130px;
backdrop-filter: blur(5px);
overflow: hidden;
}
#sec4 {
/* transform: translateY(60px); */
gap: 22px;
padding-left: 20px;
padding-right: 20px;
}
#sec4 h1 {
margin-bottom: 30px;
}
.abt-sec h1 {
text-align: center;
transform: translateY(20px);
font-weight: 700;
}
.abt-sec p {
text-align: center;
font-weight: 700;
text-transform: capitalize;
font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
}
.links {
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
}
.links button {
width: 350px;
height: 50px;
border-radius: 6px;
border: none;
background: linear-gradient(to top, rgba(46, 46, 46, 0.365), rgba(46, 46, 46, 0.443));
font-size: 15px;
font-weight: 550;
transition: all 0.4s ease;
/* opacity: 0; */
}
.links a {
opacity: 0;
}
button {
transition: all 1s ease;
/* opacity: 0; */
/* animation: linksBtnAn 2s ease 0.3s infinite, strtLoad 4s ease 0.5s forwards; */
position: relative;
overflow: hidden;
}
.links button::before,
.downloadBtn button::before {
opacity: 0;
left: -10px;
top: -20px;
content: "";
width: 20%;
height: 200%;
position: absolute;
background-color: #ffffff18;
box-shadow: 2px 2px 30px 30px #ffffff18;
rotate: 20deg;
animation: var(--beforestyl);
filter: contrast(100);
}
.links button:hover {
scale: 1.05;
}
button:active {
scale: 0.7;
}
.box {
margin-bottom: 60px;
}
.box h3 {
margin-bottom: 15px;
position: relative;
}
.box a {
margin-top: 15px;
}
.box p {
margin-top: 5px;
}
.box h3::after {
content: "";
position: absolute;
height: 1.5px;
width: 90%;
background-color: var(--mycol);
bottom: -3px;
left: 0%;
border-radius: 30px;
transition: all 0.4s ease;
}
/* middle part */
.mid {
font-size: 40px;
font-weight: 600;
text-align: center;
padding: 10%;
}
.last-text {
text-align: center;
padding: 10%;
}
.movie-cont {
height: fit-content;
width: 100vw;
display: flex;
flex-direction: column;
align-items: center;
gap: 30px;
}
.movieSug {
height: 500px;
width: 95vw;
border-radius: 2%;
position: relative;
display: flex;
align-items: center;
justify-content: space-around;
/* background-image: url(https://image.tmdb.org/t/p/w1280//8Gxv8gSFCU0XGDykEGv7zR1n2ua.jpg); */
background-size: cover;
background-position: center;
overflow: hidden;
}
.movieSug::before {
content: '';
height: 110%;
width: 110%;
position: absolute;
background: linear-gradient(to right, black 20%, rgba(0, 0, 0, 0.322) 75%, rgba(0, 0, 0, 0));
top: 0%;
left: -10px;
}
.movieDets {
padding: 5%;
height: 100%;
width: 45vw;
display: flex;
flex-direction: column;
text-align: start;
justify-content: center;
gap: 10px;
z-index: 100;
}
.movieDets h3:first-child {
font-size: 32px;
font-weight: 600;
}
.movieimg {
/* height: 100%; */
width: 45vw;
/* background-color: #100206; */
display: flex;
justify-content: center;
align-items: center;
gap: 10px;
}
.movieimg img {
max-height: 400px;
box-shadow: 2px 2px 100px 70px rgba(0, 0, 0, 0.566);
}
.movieDets span {
font-weight: 700;
font-size: 20px;
}
.movieDets h4:nth-child(2) {
margin-top: 20px;
font-size: 23px;
font-weight: 700;
}
.movieDets h4:nth-child(3) {
font-size: 15px;
font-weight: 700;
}
.movieStsBar {
display: none;
}
.ranMovBtn {
border-radius: 6px;
background: linear-gradient(to bottom, rgba(247, 247, 247, 0.187), rgba(240, 240, 240, 0.105));
height: 50px;
width: 300px;
display: flex;
align-items: center;
font-weight: 700;
gap: 10px;
padding-left: 50px;
border: none;
}
.copyright {
margin: 30px;
gap: 10px;
display: flex;
flex-direction: column;
align-items: center;
}
.copyright h5 {
font-size: 13px;
}
@keyframes linksBtnAn {
from {
scale: 1;
}
50% {
scale: 1.02;
}
to {
scale: 1;
}
}
@keyframes strtLoad {
from {
opacity: 0;
transform: translateX(-200px);
}
to {
opacity: 1;
transform: translateX(0px);
}
}
@keyframes button_shine {
from {
opacity: .9;
left: -100px;
}
to {
opacity: 1;
left: 400px;
}
}
@media (max-width : 1029px) {
.movieDets h3:first-child {
font-size: 25px;
}
}
@media (max-width : 992px) {
.movieSug {
scale: 0.9;
}
.movie-cont {
scale: 0.9;
}
}
@media (max-width : 800px) {
.movie-cont {
scale: 0.9;
}
.movieSug {
height: 400px;
}
.movieimg img {
max-height: 300px;
}
.movieDets {
scale: 0.8;
}
}
@media (max-width : 637px) {
.movieSug {
background-position: right;
padding: 5%;
scale: 1;
width: 90vw;
}
.movie-cont {
width: 90vw;
padding: 5%;
scale: 1;
}
.movieDets {
display: none;
}
.movieStsBar {
display: block;
border-radius: 6%;
}
.movieDets-mini {
position: absolute;
display: flex;
flex-direction: column;
text-align: start;
width: 80%;
left: 50px;
transform: translate(-35px, -120px);
}
.movieSug::before {
content: '';
height: 100%;
width: 100%;
position: absolute;
background: linear-gradient(to top, black 20%, rgba(0, 0, 0, 0.322) 75%, rgba(0, 0, 0, 0));
top: 10%;
left: 0px;
}
.movieimg img {
transform: translate(75px, -40px);
}
}
</style>
</head>
<body>
<video id="stream-media" controls preload="auto">
<source src="" type="">
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video
</p>
</video>
<div class="file-name">
<h4 style="display: inline;">File Name: </h4>
<p style="display: inline;" id="myDiv">{{file_name}}</p><br>
<h4 style="display: inline;">File Size: </h4>
<p style="display: inline;">{{file_size}}</p>
</div>
<div class="downloadBtn">
<button class="magnet" onclick="copyStreamLink()">
<img src="https://i.ibb.co/CM4Y586/link.png" alt="Copy Link">copy link
</button>
<button class="magnet share" onclick="link_share()">
<img src="https://i.ibb.co/vx5D2g5/share.png" alt="">share link
</button>
<button class="magnet" onclick="vlc_player()">
<img src="https://i.ibb.co/px6fQs1/vlc.png" alt="">watch in VLC PLAYER
</button>
<button class="magnet" onclick="mx_player()">
<img src="https://i.ibb.co/41WvtQ3/mx.png" alt="">watch in MX PLAYER
</button>
</div>
<div id="error-message"></div>
<script>
var player = new Plyr('#stream-media', {
controls:['play-large', 'rewind', 'play', 'fast-forward', 'progress', 'current-time', 'mute', 'settings','download', 'pip', 'fullscreen'],
settings:['speed','loop'],
speed:{selected:1,options:[0.25,0.5,0.75,1,1.25,1.5,1.75,2]},
seek: 10,
keyboard: { focused: true, global: true },
});
var mediaLink = "{{ mediaLink }}";
if (mediaLink) {
document.querySelector('#stream-media source').setAttribute('src', mediaLink);
player.restart();
/*var downloadButton = document.createElement('div');
downloadButton.className = 'plyr-download-button';
downloadButton.onclick = function() {
event.stopPropagation();
var link = document.createElement('a');
link.href = mediaLink;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
};
player.elements.container.querySelector('.plyr__video-wrapper').appendChild(downloadButton);
var shareButton = document.createElement('div');
shareButton.className = 'plyr-share-button';
shareButton.onclick = function() {
event.stopPropagation();
if (navigator.share) {
navigator.share({
title: "Play",
url: window.location.href
});
}
};
player.elements.container.querySelector('.plyr__video-wrapper').appendChild(shareButton);
*/
} else {
document.getElementById('error-message').textContent = 'Error: Media URL not provided';
}
function link_share() {
if (navigator.share) {
navigator.share({
title: mediaLink,
url: window.location.href
});
}
}
function vlc_player() {
const openstreamlink = mediaLink;
const openVlc = `vlc://${openstreamlink}`;
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
// Try opening VLC first, then MX Player if VLC is unavailable
window.location.href = openVlc;
} else {
alert("This feature is currently only supported on Android devices.");
}
//window.location.href = openVlc;
}
function mx_player() {
const openstreamlink = mediaLink;
const openMx = `intent:${openstreamlink}#Intent;package=com.mxtech.videoplayer.ad;end`;
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
// Try opening VLC first, then MX Player if VLC is unavailable
window.location.href = openMx;;
} else {
alert("This feature is currently only supported on Android devices.");
}
}
function copyStreamLink() {
const linkToCopy = mediaLink.toLowerCase();
if (!navigator.clipboard) {
navigator.clipboard = {
writeText: function(text) {
return new Promise((resolve, reject) => {
try {
const textArea = document.createElement("textarea");
textArea.value = text;
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
document.execCommand('copy');
document.body.removeChild(textArea);
resolve();
} catch (err) {
reject(err);
}
});
}
};
}
navigator.clipboard.writeText(linkToCopy)
.then(() => {
console.log('Stream link copied to clipboard!');
alert('Stream link copied successfully!');
})
.catch(err => {
console.error('Failed to copy link: ', err);
alert('Failed to copy link. Please try manually.');
});
}
</script>
</body>
</html>