Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta name="description"
- content="Explore a curated collection of classic and modern films on UwU Movies. Search and filter movies by platform, year, genre, and title.">
- <title>UwU Movies - Explore Your Favorite Movies</title>
- <style>
- :root {
- --base: #282c34;
- --surface0: #3a3f4b;
- --surface1: #4b5263;
- --text: #abb2bf;
- --subtext0: #8b93a7;
- --accent: #61afef;
- --pink: #c678dd;
- --red: #e06c75;
- --orange: #d19a66;
- --yellow: #e5c07b;
- --green: #98c379;
- --blue: #61afef;
- }
- body.light-mode {
- --base: #fafafa;
- --surface0: #eaeaeb;
- --surface1: #d4d4d5;
- --text: #383a42;
- --subtext0: #696c77;
- --accent: #4078f2;
- --pink: #a626a4;
- --red: #e45649;
- --orange: #c18401;
- --yellow: #986801;
- --green: #50a14f;
- --blue: #4078f2;
- }
- body {
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
- background-color: var(--base);
- color: var(--text);
- line-height: 1.6;
- margin: 0;
- padding: 0;
- transition: background-color 0.3s, color 0.3s;
- }
- #container {
- max-width: 1200px;
- margin: 0 auto;
- padding: 1rem;
- }
- h1 {
- color: var(--accent);
- font-size: clamp(2rem, 5vw, 3rem);
- margin-bottom: 1.5rem;
- text-align: center;
- letter-spacing: 2px;
- font-weight: 800;
- text-shadow: 2px 2px var(--surface1);
- animation: float 3s ease-in-out infinite;
- }
- @keyframes float {
- 0%,
- 100% {
- transform: translateY(0);
- }
- 50% {
- transform: translateY(-10px);
- }
- }
- .subtitle-container {
- display: flex;
- justify-content: center;
- align-items: center;
- gap: 1rem;
- margin-top: -1rem;
- margin-bottom: 1.5rem;
- flex-wrap: wrap;
- }
- .subtitle {
- text-align: center;
- color: var(--subtext0);
- font-size: 1rem;
- font-style: italic;
- margin: 0;
- }
- #inline-donation-button {
- background-color: var(--accent);
- color: var(--base);
- border: none;
- padding: 0.5rem 1rem;
- border-radius: 20px;
- cursor: pointer;
- font-size: 0.9rem;
- transition: background-color 0.2s ease;
- }
- #inline-donation-button:hover {
- background-color: var(--blue);
- }
- #search-bar {
- width: 100%;
- padding: 0.8rem;
- margin-bottom: 1.5rem;
- border: none;
- border-radius: 4px;
- background-color: var(--surface0);
- color: var(--text);
- font-size: 1rem;
- }
- .filters {
- display: flex;
- justify-content: space-between;
- margin-bottom: 1.5rem;
- flex-wrap: wrap;
- gap: 0.5rem;
- }
- .filter {
- flex: 1;
- min-width: 120px;
- background-color: var(--surface0);
- border: none;
- color: var(--text);
- padding: 0.5rem 1rem;
- border-radius: 4px;
- cursor: pointer;
- transition: background-color 0.2s ease;
- }
- .filter:hover {
- background-color: var(--surface1);
- }
- #movie-list {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
- gap: 1.5rem;
- }
- .movie-card {
- background-color: var(--surface1);
- border-radius: 8px;
- overflow: hidden;
- transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
- cursor: pointer;
- }
- .movie-card:hover {
- transform: translateY(-5px);
- box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
- }
- .movie-card img {
- width: 100%;
- height: 300px;
- object-fit: cover;
- }
- .modal-info pre a {
- color: var(--blue);
- text-decoration: none;
- }
- .modal-info pre a:hover {
- text-decoration: underline;
- }
- .movie-info {
- padding: 1rem;
- }
- .movie-title {
- font-size: 1.1rem;
- font-weight: bold;
- margin-bottom: 0.5rem;
- color: var(--blue);
- }
- .movie-year {
- color: var(--orange);
- }
- .movie-platform {
- color: var(--green);
- font-size: 0.9rem;
- }
- #theme-toggle {
- position: fixed;
- top: 20px;
- right: 20px;
- background-color: var(--surface0);
- border: none;
- color: var(--text);
- padding: 10px;
- border-radius: 50%;
- cursor: pointer;
- font-size: 1.2rem;
- transition: background-color 0.2s ease;
- z-index: 1000;
- }
- #theme-toggle:hover {
- background-color: var(--surface1);
- }
- .modal {
- display: none;
- position: fixed;
- z-index: 1001;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- overflow: auto;
- background-color: rgba(0, 0, 0, 0.4);
- }
- .modal-content {
- background-color: var(--base);
- margin: 15% auto;
- padding: 20px;
- border: 1px solid var(--surface1);
- width: 90%;
- max-width: 800px;
- border-radius: 8px;
- }
- .close {
- color: var(--text);
- float: right;
- font-size: 28px;
- font-weight: bold;
- cursor: pointer;
- }
- .close:hover,
- .close:focus {
- color: var(--accent);
- text-decoration: none;
- }
- .modal-body {
- display: flex;
- flex-wrap: wrap;
- gap: 20px;
- }
- .modal-poster {
- flex: 0 0 200px;
- }
- .modal-info {
- flex: 1 1 300px;
- }
- .modal-info pre {
- white-space: pre-wrap;
- word-wrap: break-word;
- background-color: var(--surface0);
- padding: 10px;
- border-radius: 4px;
- max-height: 300px;
- overflow-y: auto;
- }
- @media (max-width: 768px) {
- .subtitle-container {
- flex-direction: column;
- gap: 0.5rem;
- }
- .filters {
- flex-direction: column;
- }
- .filter {
- width: 100%;
- margin-bottom: 0.5rem;
- }
- #movie-list {
- grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
- }
- .movie-card img {
- height: 225px;
- }
- .movie-info {
- padding: 0.5rem;
- }
- .movie-title {
- font-size: 1rem;
- }
- #theme-toggle {
- padding: 8px;
- font-size: 1rem;
- }
- }
- </style>
- </head>
- <body>
- <div id="container">
- <h1>UwU Movies</h1>
- <div class="subtitle-container">
- <p class="subtitle">Curating cinematic experiences. Your support keeps us sailing.</p>
- <button id="inline-donation-button" aria-label="Donate">Support Johan ❤️</button>
- </div>
- <input type="text" id="search-bar" placeholder="Search movies by title, year, platform, or genre..."
- aria-label="Search movies">
- <div class="filters">
- <select id="platform-filter" class="filter" aria-label="Filter by platform">
- <option value="">All Platforms 🎬</option>
- </select>
- <select id="year-filter" class="filter" aria-label="Filter by year">
- <option value="">All Years 📅</option>
- </select>
- <select id="genre-filter" class="filter" aria-label="Filter by genre">
- <option value="">All Genres 🍿</option>
- </select>
- </div>
- <div id="movie-list"></div>
- </div>
- <button id="theme-toggle" aria-label="Toggle dark/light mode">🌓</button>
- <div id="donation-modal" class="modal">
- <div class="modal-content">
- <span class="close">×</span>
- <h2>Support UwU Movies</h2>
- <p>If you enjoy our service, please consider supporting us with a donation.</p>
- <!-- Add donation information here -->
- </div>
- </div>
- <div id="movieModal" class="modal">
- <div class="modal-content">
- <span class="close">×</span>
- <div class="modal-body"></div>
- </div>
- </div>
- <script>
- const movies = [{
- title: "Terror Tuesday Extreme",
- year: 2024,
- platform: "Netflix",
- image: "https://www.themoviedb.org/t/p/w1280/qnaIFI2CkH1UQrGtVbSUqlSNFwX.jpg",
- genre: "Horror, Thriller",
- downloadInfo: `Terror.Tuesday.Extreme.S01E01.Our.Little.Sister.1080p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.264-XEBEC.mkv [1.87 GB]
- https://new3.gdflix.cfd/file/HkJAmFcJhn
- Terror.Tuesday.Extreme.S01E02.Wedding.Dress.1080p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.264-XEBEC.mkv [2.59 GB]
- https://new3.gdflix.cfd/file/vJ795g2GjK
- Terror.Tuesday.Extreme.S01E03.Ode.to.My.Family.1080p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.264-XEBEC.mkv [2.01 GB]
- https://new3.gdflix.cfd/file/qxRPc8okrs
- Terror.Tuesday.Extreme.S01E04.The.Vow.1080p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.264-XEBEC.mkv [1.88 GB]
- https://new3.gdflix.cfd/file/Qk0Y8SZyzp
- Terror.Tuesday.Extreme.S01E05.Spectral.Class.1080p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.264-XEBEC.mkv [2.16 GB]
- https://new3.gdflix.cfd/file/tpYDJNOdSs
- Terror.Tuesday.Extreme.S01E06.Girl.Next.Door.1080p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.264-XEBEC.mkv [2.37 GB]
- https://new3.gdflix.cfd/file/v9jugoBBZl
- Terror.Tuesday.Extreme.S01E07.Dear.Granny.1080p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.264-XEBEC.mkv [2.66 GB]
- https://new3.gdflix.cfd/file/Zu8el3x8eK
- Terror.Tuesday.Extreme.S01E08.Viral.Curse.1080p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.264-XEBEC.mkv [2.39 GB]
- https://new3.gdflix.cfd/file/gNPB5ytZ8r
- PACK
- Terror.Tuesday.Extreme.S01.1080p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.264-XEBEC [17.93GB]
- https://new3.gdflix.cfd/pack/2Tzqr7wIgk
- ENG | THAI | MULTI SUBS`
- }, {
- title: "Kingdom of the Planet",
- year: 2024,
- platform: "Apple TV",
- image: "https://www.themoviedb.org/t/p/w1280/gKkl37BQuKTanygYQG1pyYgLVgf.jpg",
- genre: "Action, Science Fiction, Adventure",
- downloadInfo: `🔥Kingdom of the Planet of the Apes (2024) 2160p MA WEB-DL DV HDR [Hindi DDP5.1 + English DDPA 5.1] H.265 (HHWEB-Ionicboy).mkv [25.72 GB]
- ➡️https://new3.gdflix.cfd/file/VJRsusdwcc
- 🔥Kingdom of the Planet of the Apes (2024) 2160p MA WEB-DL SDR [Hindi DDP5.1 + English DDPA 5.1] H.265 (HHWEB-Ionicboy).mkv [25.6 GB]
- ➡️https://new3.gdflix.cfd/file/cwIu7LSB7f
- 🔥Kingdom of the Planet of the Apes (2024) 1080p MA WEB-DL [Hindi DDP5.1 + English DDPA 5.1] H.264 (HHWEB-Ionicboy).mkv [8.66 GB]
- ➡️https://new3.gdflix.cfd/file/258nQNwF65
- 🎵 Audio:
- 1. हिन्दी | Dolby Digital Plus 5.1 @ 192kb/s
- 2. English | Dolby Digital Plus 5.1 Atmos @ 768kb/s
- `
- }, {title: "Drawing Closer",
- year: 2024,
- platform: "Netflix",
- image: "https://www.themoviedb.org/t/p/w1280/173FD4a0rpSF30z4CoWx6qdx8Ry.jpg",
- genre:"Romance, Drama",
- downloadInfo: `
- Drawing.Closer.2024.2160p.NF.WEB-DL.DDP5.1.H.265-HHWEB.mkv [10.98 GB]
- https://new3.gdflix.cfd/file/rfv7uBKNFt
- Drawing.Closer.2024.2160p.NF.WEB-DL.DDP5.1.HDR.H.265-HHWEB.mkv [6.16 GB]
- https://new3.gdflix.cfd/file/lxe0PDo9S1
- JAPANESE | ESUBS`
- }
- // Add more movies here...
- ];
- const movieList = document.getElementById('movie-list');
- const searchBar = document.getElementById('search-bar');
- const platformFilter = document.getElementById('platform-filter');
- const yearFilter = document.getElementById('year-filter');
- const genreFilter = document.getElementById('genre-filter');
- const themeToggle = document.getElementById('theme-toggle');
- const inlineDonationButton = document.getElementById('inline-donation-button');
- const donationModal = document.getElementById('donation-modal');
- const movieModal = document.getElementById('movieModal');
- const closeButtons = document.querySelectorAll('.close');
- function displayMovies(moviesToShow) {
- movieList.innerHTML = moviesToShow.map(movie => `
- <div class="movie-card" data-movie='${JSON.stringify(movie)}'>
- <img src="${movie.image}"
- alt="${movie.title}"
- loading="lazy"
- onerror="this.onerror=null; this.src='https://via.placeholder.com/300x450?text=Image+Not+Available';">
- <div class="movie-info">
- <div class="movie-title">${movie.title}</div>
- <div class="movie-year">${movie.year}</div>
- <div class="movie-platform">${movie.platform}</div>
- <div class="movie-genre">${movie.genre}</div>
- </div>
- </div>
- `).join('');
- document.querySelectorAll('.movie-card').forEach(card => {
- card.addEventListener('click', () => showMovieDetails(JSON.parse(card.dataset.movie)));
- });
- }
- function showMovieDetails(movie) {
- const modalBody = movieModal.querySelector('.modal-body');
- // Function to convert URLs to clickable links
- function linkify(text) {
- const urlRegex = /(https?:\/\/[^\s]+)/g;
- return text.replace(urlRegex, function (url) {
- return `<a href="${url}" target="_blank" rel="noopener noreferrer">${url}</a>`;
- });
- }
- modalBody.innerHTML = `
- <div class="modal-poster">
- <img src="${movie.image}" alt="${movie.title}" style="width: 100%;" onerror="this.onerror=null; this.src='https://via.placeholder.com/300x450?text=Image+Not+Available';">
- </div>
- <div class="modal-info">
- <h2>${movie.title}</h2>
- <p>Year: ${movie.year}</p>
- <p>Platform: ${movie.platform}</p>
- <p>Genre: ${movie.genre}</p>
- <div class="movie-links">
- <h3>Download Links:</h3>
- <pre>${movie.downloadInfo ? linkify(movie.downloadInfo) : 'No download information available.'}</pre>
- </div>
- </div>
- `;
- movieModal.style.display = 'block';
- }
- function populateFilters() {
- const platforms = [...new Set(movies.map(movie => movie.platform))];
- const years = [...new Set(movies.map(movie => movie.year))].sort((a, b) => b - a);
- const genres = [...new Set(movies.flatMap(movie => movie.genre.split(', ')))];
- [
- { element: platformFilter, options: platforms },
- { element: yearFilter, options: years },
- { element: genreFilter, options: genres }
- ].forEach(({ element, options }) => {
- element.innerHTML += options.map(option => `<option value="${option}">${option}</option>`).join('');
- });
- }
- function filterMovies() {
- const searchString = searchBar.value.toLowerCase();
- const platform = platformFilter.value;
- const year = yearFilter.value;
- const genre = genreFilter.value;
- return movies.filter(movie =>
- (movie.title.toLowerCase().includes(searchString) ||
- movie.year.toString().includes(searchString) ||
- movie.platform.toLowerCase().includes(searchString) ||
- movie.genre.toLowerCase().includes(searchString)) &&
- (platform === '' || movie.platform === platform) &&
- (year === '' || movie.year.toString() === year) &&
- (genre === '' || movie.genre.includes(genre))
- );
- }
- function debounce(func, wait) {
- let timeout;
- return function executedFunction(...args) {
- const later = () => {
- clearTimeout(timeout);
- func(...args);
- };
- clearTimeout(timeout);
- timeout = setTimeout(later, wait);
- };
- }
- const debouncedFilter = debounce(() => displayMovies(filterMovies()), 300);
- [searchBar, platformFilter, yearFilter, genreFilter].forEach(element => {
- element.addEventListener('input', debouncedFilter);
- });
- themeToggle.addEventListener('click', () => document.body.classList.toggle('light-mode'));
- inlineDonationButton.onclick = () => donationModal.style.display = "block";
- closeButtons.forEach(button => {
- button.onclick = () => {
- donationModal.style.display = "none";
- movieModal.style.display = "none";
- };
- });
- window.onclick = (event) => {
- if (event.target === donationModal || event.target === movieModal) {
- donationModal.style.display = "none";
- movieModal.style.display = "none";
- }
- };
- // Initialize the page
- populateFilters();
- displayMovies(movies);
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment