{"id":36216,"date":"2025-12-11T13:04:31","date_gmt":"2025-12-11T13:04:31","guid":{"rendered":"https:\/\/metaverseplanet.net\/blog\/?p=36216"},"modified":"2025-12-31T07:15:16","modified_gmt":"2025-12-31T07:15:16","slug":"what-to-watch-random-sci-fi-movie-picker-suggestions","status":"publish","type":"post","link":"https:\/\/metaverseplanet.net\/blog\/what-to-watch-random-sci-fi-movie-picker-suggestions\/","title":{"rendered":"Random Sci-Fi Movie Picker &amp; Suggestions"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\" \/>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n    <title>Sci-Fi Roulette | Quality Selection<\/title>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Bebas+Neue&#038;family=Montserrat:wght@300;400;600&#038;display=swap\" rel=\"stylesheet\">\n    <style>\n        :root {\n            --primary-color: #e50914;\n            --dark-bg: #141414;\n        }\n\n        body {\n            font-family: 'Montserrat', sans-serif;\n            background-color: var(--dark-bg);\n            color: #fff;\n            margin: 0;\n            padding: 0;\n            min-height: 100vh;\n            overflow-x: hidden;\n            background-image: url('https:\/\/images.unsplash.com\/photo-1462331940025-496dfbfc7564?q=80&w=2048&auto=format&fit=crop'); \n            background-size: cover;\n            background-position: center;\n            background-attachment: fixed;\n            transition: background-image 0.8s ease-in-out;\n        }\n\n        .overlay {\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: radial-gradient(circle, rgba(0,0,0,0.3) 0%, rgba(20,20,20,0.95) 100%);\n            z-index: -1;\n        }\n\n        nav { padding: 20px; text-align: center; }\n        .logo {\n            font-family: 'Bebas Neue', sans-serif;\n            font-size: 3rem;\n            color: var(--primary-color);\n            letter-spacing: 2px;\n            text-shadow: 2px 2px 10px rgba(0,0,0,0.8);\n            cursor: pointer;\n        }\n\n        \/* HERO B\u00d6L\u00dcM\u00dc *\/\n        .hero-container {\n            min-height: 70vh;\n            display: flex;\n            flex-direction: column;\n            justify-content: center;\n            align-items: center;\n            text-align: center;\n            padding: 0 20px;\n            position: relative;\n        }\n\n        .hero-title {\n            font-family: 'Bebas Neue', sans-serif;\n            font-size: 5rem;\n            line-height: 0.9;\n            margin: 0;\n            text-shadow: 0 5px 20px rgba(0,0,0,0.9);\n        }\n\n        .hero-subtitle {\n            font-size: 1.2rem;\n            margin-top: 20px;\n            font-weight: 300;\n            max-width: 600px;\n            color: #ddd;\n        }\n\n        \/* ETK\u0130LE\u015e\u0130M ALANI *\/\n        .interaction-area {\n            margin-top: 40px;\n            width: 100%;\n            max-width: 800px;\n            height: 250px;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            position: relative;\n        }\n\n        .primary-btn {\n            background-color: var(--primary-color);\n            color: white;\n            padding: 18px 50px;\n            font-size: 1.5rem;\n            font-family: 'Bebas Neue', sans-serif;\n            letter-spacing: 1px;\n            border: none;\n            border-radius: 4px;\n            cursor: pointer;\n            transition: transform 0.2s, background-color 0.2s, box-shadow 0.2s;\n            box-shadow: 0 0 20px rgba(229, 9, 20, 0.5);\n            z-index: 10;\n        }\n\n        .primary-btn:hover {\n            background-color: #f40612;\n            transform: scale(1.05);\n            box-shadow: 0 0 30px rgba(229, 9, 20, 0.8);\n        }\n\n        .status-text {\n            font-family: 'Courier New', monospace;\n            color: #00e676;\n            font-weight: bold;\n            margin-top: 15px;\n            height: 20px;\n        }\n\n        \/* F\u0130LM \u015eER\u0130D\u0130 *\/\n        .film-strip-window {\n            width: 100%;\n            height: 220px;\n            overflow: hidden;\n            position: absolute;\n            top: 0;\n            left: 0;\n            display: none;\n            border-radius: 10px;\n            border: 1px solid rgba(255,255,255,0.2);\n            background: rgba(0,0,0,0.6);\n            mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);\n            -webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);\n        }\n\n        .film-track {\n            display: flex;\n            height: 100%;\n            align-items: center;\n            animation: scrollStrip 10s linear infinite; \n            width: max-content;\n        }\n\n        .strip-poster {\n            height: 180px;\n            border-radius: 8px;\n            margin: 0 10px;\n            box-shadow: 0 4px 10px rgba(0,0,0,0.5);\n            flex-shrink: 0;\n        }\n\n        @keyframes scrollStrip {\n            0% { transform: translateX(0); }\n            100% { transform: translateX(-50%); } \n        }\n\n        \/* SONU\u00c7 KARTI *\/\n        #result-section {\n            padding: 20px;\n            display: none;\n            width: 100%;\n            box-sizing: border-box;\n            background: linear-gradient(to top, #141414, transparent);\n            padding-bottom: 50px;\n        }\n\n        .movie-card {\n            background: rgba(20, 20, 20, 0.85);\n            backdrop-filter: blur(15px);\n            border-radius: 15px;\n            overflow: hidden;\n            display: flex;\n            flex-wrap: wrap;\n            max-width: 900px;\n            margin: 0 auto;\n            box-shadow: 0 20px 60px rgba(0,0,0,0.8);\n            border: 1px solid rgba(255,255,255,0.1);\n            animation: popIn 0.8s cubic-bezier(0.16, 1, 0.3, 1);\n        }\n\n        .poster-wrapper { flex: 1; min-width: 250px; }\n        .poster-img { width: 100%; height: 100%; object-fit: cover; display: block; }\n        .info-wrapper { flex: 2; padding: 30px; display: flex; flex-direction: column; justify-content: center; text-align: left; }\n        \n        .movie-header h2 { font-family: 'Bebas Neue', sans-serif; font-size: 3.5rem; margin: 0; line-height: 1; color: #fff; }\n        .meta-data { display: flex; gap: 15px; margin: 15px 0; font-size: 1rem; color: #ccc; align-items: center; flex-wrap: wrap; }\n        .rating-badge { background: #46d369; color: #000; font-weight: bold; padding: 2px 8px; border-radius: 4px; }\n        \n        \/* Modal *\/\n        .modal { display: none; position: fixed; z-index: 9999; left: 0; top: 0; width: 100%; height: 100%; background-color: black; }\n        .modal-content { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 90%; max-width: 1200px; aspect-ratio: 16\/9; }\n        .close-modal { position: absolute; top: 20px; right: 40px; color: #fff; font-size: 50px; cursor: pointer; }\n\n        @keyframes popIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }\n\n        @media (max-width: 768px) {\n            .hero-title { font-size: 3.5rem; }\n            .movie-card { flex-direction: column; }\n            .interaction-area { max-width: 100%; }\n            .poster-wrapper { min-height: 400px; }\n        }\n    <\/style>\n<\/head>\n<body>\n\n    <div class=\"overlay\"><\/div>\n\n    <nav>\n        <div class=\"logo\">SCI-FI FLIX<\/div>\n    <\/nav>\n\n    <div class=\"hero-container\" id=\"hero\">\n        <h1 class=\"hero-title\">UNLIMITED SCI-FI<br>QUALITY ONLY.<\/h1>\n        <p class=\"hero-subtitle\">No trash movies. Only highly rated (7-9\/10) sci-fi masterpieces.<\/p>\n        \n        <div class=\"interaction-area\">\n            \n            <button id=\"start-btn\" class=\"primary-btn\" onclick=\"startRoulette()\">\n                FIND MOVIE\n            <\/button>\n            <div id=\"status-display\" class=\"status-text\"><\/div>\n\n            <div id=\"film-strip-window\" class=\"film-strip-window\">\n                <div class=\"film-track\" id=\"film-track\">\n                    <\/div>\n            <\/div>\n\n        <\/div>\n    <\/div>\n\n    <div id=\"result-section\">\n        <div id=\"card-container\"><\/div>\n    <\/div>\n\n    <div id=\"modal\" class=\"modal\">\n        <span class=\"close-modal\" onclick=\"closeTrailer()\">&times;<\/span>\n        <div class=\"modal-content\" id=\"video-frame\"><\/div>\n    <\/div>\n\n    <script>\n        \/\/ API Key (Deneme anahtar\u0131d\u0131r, \u00e7ok sorguda hata verirse kendinizinkini almal\u0131s\u0131n\u0131z)\n        const apiKey = '25ec2c68c8aa9357786e0be45ac80de3';\n        let currentTrailerKey = null;\n\n        window.onload = async function() {\n            await prepareFilmStrip();\n        };\n\n        \/\/ Arka plan \u015feridi i\u00e7in rastgele pop\u00fcler filmler\n        async function prepareFilmStrip() {\n            const url = `https:\/\/api.themoviedb.org\/3\/discover\/movie?api_key=${apiKey}&with_genres=878&sort_by=popularity.desc&page=1`;\n            try {\n                const res = await fetch(url);\n                const data = await res.json();\n                \n                const track = document.getElementById('film-track');\n                let postersHtml = '';\n\n                const movies = data.results.slice(0, 15);\n                \n                movies.forEach(movie => {\n                    if(movie.poster_path) {\n                        postersHtml += `<img decoding=\"async\" class=\"strip-poster\" src=\"https:\/\/image.tmdb.org\/t\/p\/w200${movie.poster_path}\">`;\n                    }\n                });\n\n                \/\/ Sonsuz d\u00f6ng\u00fc i\u00e7in i\u00e7eri\u011fi 3 kez kopyala\n                track.innerHTML = postersHtml + postersHtml + postersHtml; \n\n            } catch (e) {\n                console.error(\"\u015eerit hatas\u0131:\", e);\n            }\n        }\n\n        async function startRoulette() {\n            const startBtn = document.getElementById('start-btn');\n            const statusDisplay = document.getElementById('status-display');\n            const stripWindow = document.getElementById('film-strip-window');\n            const resultSection = document.getElementById('result-section');\n\n            \/\/ 1. Aray\u00fcz\u00fc Haz\u0131rla\n            startBtn.style.display = 'none';\n            resultSection.style.display = 'none';\n            stripWindow.style.display = 'block'; \n            \n            \/\/ Mesajlar\n            const messages = [\"Scanning Database...\", \"Filtering Low Rated Movies...\", \"Checking 7.0+ Quality...\", \"Target Locked...\"];\n            let msgIndex = 0;\n            statusDisplay.innerText = messages[0];\n            let msgInterval = setInterval(() => {\n                msgIndex++;\n                statusDisplay.innerText = messages[msgIndex % messages.length];\n            }, 700);\n\n            try {\n                \/\/ 2. KR\u0130T\u0130K ADIM: \u00d6nce ka\u00e7 sayfa \"Kaliteli Film\" var onu buluyoruz.\n                \/\/ Filtreler: Bilim Kurgu (878), Puan en az 7, Puan en \u00e7ok 9, Oy say\u0131s\u0131 en az 300\n                const baseParams = `&with_genres=878&vote_average.gte=7&vote_average.lte=9&vote_count.gte=300&include_adult=false`;\n                \n                \/\/ \u0130lk sorguyu sayfa belirtmeden yap\u0131yoruz (default page 1)\n                const initUrl = `https:\/\/api.themoviedb.org\/3\/discover\/movie?api_key=${apiKey}${baseParams}`;\n                const initRes = await fetch(initUrl);\n                const initData = await initRes.json();\n\n                if (!initData.results || initData.total_results === 0) {\n                    throw new Error(\"Kriterlere uygun film yok.\");\n                }\n\n                \/\/ Toplam sayfa say\u0131s\u0131n\u0131 al (TMDB max 500'e izin verir)\n                const maxPage = Math.min(initData.total_pages, 500);\n                \n                \/\/ Rastgele bir sayfa se\u00e7 (\u00d6rn: Toplam 34 sayfa varsa, 1-34 aras\u0131 se\u00e7er)\n                const randomPage = Math.floor(Math.random() * maxPage) + 1;\n                \n                \/\/ \u015eimdi o rastgele sayfay\u0131 \u00e7ek\n                const discoverUrl = `https:\/\/api.themoviedb.org\/3\/discover\/movie?api_key=${apiKey}${baseParams}&page=${randomPage}`;\n                const response = await fetch(discoverUrl);\n                const data = await response.json();\n                \n                \/\/ O sayfadan rastgele bir film se\u00e7\n                const randomMovie = data.results[Math.floor(Math.random() * data.results.length)];\n                \n                \/\/ Filmin detaylar\u0131n\u0131 (y\u00f6netmen, oyuncular, trailer) \u00e7ek\n                const detailUrl = `https:\/\/api.themoviedb.org\/3\/movie\/${randomMovie.id}?api_key=${apiKey}&append_to_response=videos,credits,release_dates`;\n                const finalMovie = await fetch(detailUrl).then(r => r.json());\n\n                \/\/ 3. Bekleme s\u00fcresi bitince sonucu g\u00f6ster\n                setTimeout(() => {\n                    clearInterval(msgInterval);\n                    statusDisplay.innerText = \"\";\n                    stripWindow.style.display = 'none';\n                    startBtn.style.display = 'block';\n                    startBtn.innerText = \"SPIN AGAIN\"; \n\n                    displayMovie(finalMovie);\n                }, 3000); \/\/ 3 saniye heyecan\n\n            } catch (error) {\n                console.error(error);\n                stripWindow.style.display = 'none';\n                startBtn.style.display = 'block';\n                statusDisplay.innerText = \"Connection Error. Try Again.\";\n                clearInterval(msgInterval);\n            }\n        }\n\n        function displayMovie(movie) {\n            const resultSection = document.getElementById('result-section');\n            const cardContainer = document.getElementById('card-container');\n\n            \/\/ Arkaplan\n            if(movie.backdrop_path) {\n                document.body.style.backgroundImage = `url('https:\/\/image.tmdb.org\/t\/p\/original${movie.backdrop_path}')`;\n            }\n\n            const director = movie.credits.crew.find(c => c.job === 'Director')?.name || 'Unknown';\n            const cast = movie.credits.cast.slice(0, 4).map(c => c.name).join(', ');\n            const year = movie.release_date ? movie.release_date.split('-')[0] : '';\n            \n            \/\/ Youtube Trailer Bul\n            const trailer = movie.videos.results.find(v => v.site === 'YouTube' && (v.type === 'Trailer' || v.type === 'Teaser'));\n            currentTrailerKey = trailer ? trailer.key : null;\n            \n            const cert = movie.release_dates?.results.find(r => r.iso_3166_1 === 'US')?.release_dates[0]?.certification || 'PG-13';\n            const rating = movie.vote_average.toFixed(1);\n\n            cardContainer.innerHTML = `\n                <div class=\"movie-card\">\n                    <div class=\"poster-wrapper\">\n                        <img decoding=\"async\" class=\"poster-img\" src=\"https:\/\/image.tmdb.org\/t\/p\/w780${movie.poster_path}\" alt=\"${movie.title}\">\n                    <\/div>\n                    <div class=\"info-wrapper\">\n                        <div class=\"movie-header\">\n                            <h2>${movie.title}<\/h2>\n                        <\/div>\n                        \n                        <div class=\"meta-data\">\n                            <span class=\"rating-badge\">IMDB ${rating}<\/span>\n                            <span>${year}<\/span>\n                            <span style=\"border:1px solid #777; padding:0 5px; border-radius:3px;\">${cert}<\/span>\n                            <span>${movie.runtime}m<\/span>\n                        <\/div>\n\n                        <p class=\"overview\">${movie.overview}<\/p>\n\n                        <div style=\"margin-top:20px;\">\n                            ${currentTrailerKey ? \n                                `<button onclick=\"playTrailer()\" class=\"primary-btn\" style=\"padding:10px 30px; font-size:1.2rem;\">\n                                    \u25b6 Play Trailer\n                                <\/button>` : \n                                `<button class=\"primary-btn\" style=\"background:#555; cursor:default;\">No Trailer<\/button>`\n                            }\n                        <\/div>\n\n                        <div style=\"margin-top:auto; padding-top:20px; color:#999; font-size: 0.9rem;\">\n                            <p><strong>Director:<\/strong> <span style=\"color:#fff\">${director}<\/span><\/p>\n                            <p><strong>Starring:<\/strong> <span style=\"color:#fff\">${cast}<\/span><\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            `;\n            \n            resultSection.style.display = 'block';\n            setTimeout(() => {\n                resultSection.scrollIntoView({ behavior: 'smooth', block: 'start' });\n            }, 100);\n        }\n\n        function playTrailer() {\n            if(!currentTrailerKey) return;\n            document.getElementById('video-frame').innerHTML = `<iframe width=\"100%\" height=\"100%\" src=\"https:\/\/www.youtube.com\/embed\/${currentTrailerKey}?autoplay=1\" frameborder=\"0\" allowfullscreen><\/iframe>`;\n            document.getElementById('modal').style.display = 'block';\n        }\n\n        function closeTrailer() {\n            document.getElementById('modal').style.display = 'none';\n            document.getElementById('video-frame').innerHTML = '';\n        }\n        \n        window.onclick = function(e) {\n            if(e.target == document.getElementById('modal')) closeTrailer();\n        }\n    <\/script>\n<\/body>\n<\/html>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Discover the Future of Cinema: Why We Focus on Sci-Fi, AI, and the Metaverse<\/strong><\/h2>\n\n\n\n<p><strong>Stop Doomscrolling, Start Exploring.<\/strong> We\u2019ve all been there: staring at the screen, scrolling endlessly through streaming platforms, paralyzed by choice. The <strong>Random Sci-Fi Movie Generator<\/strong> is designed to solve decision fatigue. With one click, we cut through the noise and deliver a curated selection of the best science fiction films in history\u2014from blockbuster hits to cult classics.<\/p>\n\n\n\n<p><strong>Why Only Science Fiction?<\/strong> We believe Sci-Fi is the most important genre of the 21st century. It is no longer just imagination; it is a preview of our reality.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Artificial Intelligence (AI):<\/strong> From <em><strong><a href=\"https:\/\/metaverseplanet.net\/blog\/ex-machina-2014\/\" data-type=\"post\" data-id=\"25426\">Ex Machina<\/a><\/strong><\/em> to <em><a href=\"https:\/\/metaverseplanet.net\/blog\/2001-a-space-odyssey-1968\/\" data-type=\"post\" data-id=\"25984\">2001: A Space Odyssey<\/a><\/em>, movies explore the ethics of sentient machines long before ChatGPT became reality.<\/li>\n\n\n\n<li><strong>The Metaverse &amp; Virtual Reality:<\/strong> Movies like <em>Ready Player One<\/em> and <em>The Matrix<\/em> predicted our digital immersion decades ago.<\/li>\n\n\n\n<li><strong>Space Exploration:<\/strong> As humanity looks to <em><a href=\"https:\/\/metaverseplanet.net\/blog\/tag\/mars\/\" data-type=\"post_tag\" data-id=\"269\">Mars<\/a><\/em>, films like <em>Interstellar<\/em> and <em>The Martian<\/em> inspire the next generation of explorers.<\/li>\n<\/ul>\n\n\n\n<p><strong>What Does Our Algorithm Pick?<\/strong> Our tool doesn&#8217;t just pick random videos. It filters through the vast TMDb database to find high-quality cinema across distinct sub-genres:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cyberpunk &amp; Dystopia:<\/strong> Neon-soaked streets, high-tech low-life, and corporate futures.<\/li>\n\n\n\n<li><strong>Space Operas:<\/strong> Epic intergalactic battles and deep-space voyages.<\/li>\n\n\n\n<li><strong>Time Travel &amp; Parallel Universes:<\/strong> Mind-bending narratives that challenge your perception of reality.<\/li>\n\n\n\n<li><strong>Post-Apocalyptic:<\/strong> Tales of survival after the fall of civilization.<\/li>\n<\/ul>\n\n\n\n<p><strong>Powered by Data, Driven by Passion<\/strong> Whether you are looking for a philosophical masterpiece about the singularity or an action-packed alien invasion thriller, our <strong>Random Sci-Fi Picker<\/strong> is your gateway to the unknown. The future is waiting. click the button and take the leap.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sci-Fi Roulette | Quality Selection SCI-FI FLIX UNLIMITED SCI-FIQUALITY ONLY. No trash movies. Only highly rated (7-9\/10) sci-fi masterpieces. FIND MOVIE &times; Discover the Future of Cinema: Why We Focus on Sci-Fi, AI, and the Metaverse Stop Doomscrolling, Start Exploring. We\u2019ve all been there: staring at the screen, scrolling endlessly through streaming platforms, paralyzed by &hellip;<\/p>\n","protected":false},"author":1,"featured_media":36241,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"googlesitekit_rrm_CAown96uCw:productID":"","footnotes":""},"categories":[323],"tags":[206,330,307],"class_list":["post-36216","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cyberculture","tag-movie-lists","tag-movies","tag-tools"],"amp_enabled":false,"_links":{"self":[{"href":"https:\/\/metaverseplanet.net\/blog\/wp-json\/wp\/v2\/posts\/36216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/metaverseplanet.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/metaverseplanet.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/metaverseplanet.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/metaverseplanet.net\/blog\/wp-json\/wp\/v2\/comments?post=36216"}],"version-history":[{"count":0,"href":"https:\/\/metaverseplanet.net\/blog\/wp-json\/wp\/v2\/posts\/36216\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/metaverseplanet.net\/blog\/wp-json\/wp\/v2\/media\/36241"}],"wp:attachment":[{"href":"https:\/\/metaverseplanet.net\/blog\/wp-json\/wp\/v2\/media?parent=36216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/metaverseplanet.net\/blog\/wp-json\/wp\/v2\/categories?post=36216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/metaverseplanet.net\/blog\/wp-json\/wp\/v2\/tags?post=36216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}