From 18dbdd60dbfbd8503cd1e46ed0fbbaae4a63fb6a Mon Sep 17 00:00:00 2001 From: Mr4x3 Date: Sun, 10 Sep 2023 14:02:02 +0530 Subject: [PATCH 001/109] INIT --- .eslintrc.json | 4 + .gitignore | 35 + .prettierrc | 9 + Common/Card.js | 57 + Common/CardCompact.js | 56 + Common/CardExpanded.js | 51 + Common/CardGrid.js | 56 + Common/Header.js | 112 + Common/Loader.js | 43 + Common/SideBar.js | 15 + Common/ToastMsg.js | 24 + Common/TorrentList.js | 95 + Common/loader.scss | 136 + LICENSE | 21 + README.md | 24 + SVG/listing.js | 28 + SVG/search.js | 19 + assets/icon-tmdb-long.svg | 1 + assets/icon-tmdb-short.svg | 1 + assets/logo.svg | 1 + components/CardGenre.js | 19 + components/CardImage.js | 32 + components/CardInfo.js | 85 + components/CardNormal.js | 30 + components/CardTrending.js | 36 + components/Collection.js | 57 + components/CollectionSearch.js | 22 + components/FilmCasts.js | 29 + components/FilmGenres.js | 27 + components/FilmHeading.js | 10 + components/FilmImage.js | 19 + components/FilmInfo.js | 53 + components/FilmRating.js | 17 + components/FilmResources.js | 57 + components/FilmSynopsis.js | 8 + components/Footer.js | 9 + components/Genres.js | 17 + components/Heading.js | 34 + components/Layout.js | 15 + components/Loading.js | 7 + components/Navigation.js | 157 + components/NavigationIcon.js | 9 + components/PageTitle.js | 7 + components/Pagination.js | 47 + components/PaginationImproved.js | 40 + components/SearchBar.js | 36 + components/SearchButton.js | 9 + components/icons/AppIcon.js | 22 + components/icons/IconBookmarkEmpty.js | 17 + components/icons/IconBookmarkFull.js | 10 + components/icons/IconCategoryMovie.js | 17 + components/icons/IconCategoryTv.js | 17 + components/icons/IconNavBookmark.js | 18 + components/icons/IconNavHome.js | 20 + components/icons/IconNavMovie.js | 20 + components/icons/IconNavTv.js | 20 + components/icons/IconPlay.js | 10 + components/icons/IconSearch.js | 14 + lib/recoil-atoms.js | 1 + lib/tmdb.js | 91 + next.config.js | 14 + package-lock.json | 5705 +++++++++++++++++++++++++ package.json | 42 + pages/404.js | 18 + pages/500.js | 3 + pages/_app.js | 23 + pages/_document.js | 26 + pages/api/certification.js | 13 + pages/api/movie/[id].js | 28 + pages/api/movie/now/[id].js | 18 + pages/api/movie/popular/[id].js | 18 + pages/api/movie/top/[id].js | 18 + pages/api/movie/trending/[id].js | 18 + pages/api/movie/upcoming/[id].js | 18 + pages/api/tv/[id].js | 18 + pages/api/tv/airing/[id].js | 18 + pages/api/tv/onair/[id].js | 18 + pages/api/tv/popular/[id].js | 18 + pages/api/tv/top/[id].js | 18 + pages/api/tv/trending/[id].js | 18 + pages/bookmark.js | 12 + pages/dashboard.js | 76 + pages/get-posts/[category].js | 185 + pages/index.js | 107 + pages/latest-top-10.js | 314 ++ pages/login.js | 90 + pages/movie/[id].js | 141 + pages/movie/genre/[id].js | 56 + pages/movie/index.js | 36 + pages/movie/now/[id].js | 49 + pages/movie/popular/[id].js | 49 + pages/movie/top/[id].js | 49 + pages/movie/trending/[id].js | 49 + pages/movie/upcoming.js | 52 + pages/movie/upcoming/[id].js | 49 + pages/post-detail/[id]/[slug].js | 278 ++ pages/register.js | 93 + pages/search.js | 138 + pages/search/[id].js | 66 + pages/search/movie/[id].js | 62 + pages/search/tv/[id].js | 63 + pages/tv/[id].js | 61 + pages/tv/airing/[id].js | 49 + pages/tv/genre/[id].js | 65 + pages/tv/index.js | 32 + pages/tv/onair.js | 52 + pages/tv/onair/[id].js | 49 + pages/tv/popular/[id].js | 49 + pages/tv/top.js | 52 + pages/tv/top/[id].js | 49 + pages/tv/trending/[id].js | 49 + pages/upload.js | 499 +++ postcss.config.js | 6 + prettier.config.js | 4 + public/favicon.ico | 1 + public/logo.svg | 1 + public/vercel.svg | 4 + service/service.js | 112 + styles/globals.css | 547 +++ styles/nprogress.css | 80 + tailwind.config.js | 83 + utils/index.js | 62 + 122 files changed, 11943 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 .prettierrc create mode 100644 Common/Card.js create mode 100644 Common/CardCompact.js create mode 100644 Common/CardExpanded.js create mode 100644 Common/CardGrid.js create mode 100644 Common/Header.js create mode 100644 Common/Loader.js create mode 100644 Common/SideBar.js create mode 100644 Common/ToastMsg.js create mode 100644 Common/TorrentList.js create mode 100644 Common/loader.scss create mode 100644 LICENSE create mode 100644 README.md create mode 100644 SVG/listing.js create mode 100644 SVG/search.js create mode 100644 assets/icon-tmdb-long.svg create mode 100644 assets/icon-tmdb-short.svg create mode 100644 assets/logo.svg create mode 100644 components/CardGenre.js create mode 100644 components/CardImage.js create mode 100644 components/CardInfo.js create mode 100644 components/CardNormal.js create mode 100644 components/CardTrending.js create mode 100644 components/Collection.js create mode 100644 components/CollectionSearch.js create mode 100644 components/FilmCasts.js create mode 100644 components/FilmGenres.js create mode 100644 components/FilmHeading.js create mode 100644 components/FilmImage.js create mode 100644 components/FilmInfo.js create mode 100644 components/FilmRating.js create mode 100644 components/FilmResources.js create mode 100644 components/FilmSynopsis.js create mode 100644 components/Footer.js create mode 100644 components/Genres.js create mode 100644 components/Heading.js create mode 100644 components/Layout.js create mode 100644 components/Loading.js create mode 100644 components/Navigation.js create mode 100644 components/NavigationIcon.js create mode 100644 components/PageTitle.js create mode 100644 components/Pagination.js create mode 100644 components/PaginationImproved.js create mode 100644 components/SearchBar.js create mode 100644 components/SearchButton.js create mode 100644 components/icons/AppIcon.js create mode 100644 components/icons/IconBookmarkEmpty.js create mode 100644 components/icons/IconBookmarkFull.js create mode 100644 components/icons/IconCategoryMovie.js create mode 100644 components/icons/IconCategoryTv.js create mode 100644 components/icons/IconNavBookmark.js create mode 100644 components/icons/IconNavHome.js create mode 100644 components/icons/IconNavMovie.js create mode 100644 components/icons/IconNavTv.js create mode 100644 components/icons/IconPlay.js create mode 100644 components/icons/IconSearch.js create mode 100644 lib/recoil-atoms.js create mode 100644 lib/tmdb.js create mode 100644 next.config.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pages/404.js create mode 100644 pages/500.js create mode 100644 pages/_app.js create mode 100644 pages/_document.js create mode 100644 pages/api/certification.js create mode 100644 pages/api/movie/[id].js create mode 100644 pages/api/movie/now/[id].js create mode 100644 pages/api/movie/popular/[id].js create mode 100644 pages/api/movie/top/[id].js create mode 100644 pages/api/movie/trending/[id].js create mode 100644 pages/api/movie/upcoming/[id].js create mode 100644 pages/api/tv/[id].js create mode 100644 pages/api/tv/airing/[id].js create mode 100644 pages/api/tv/onair/[id].js create mode 100644 pages/api/tv/popular/[id].js create mode 100644 pages/api/tv/top/[id].js create mode 100644 pages/api/tv/trending/[id].js create mode 100644 pages/bookmark.js create mode 100644 pages/dashboard.js create mode 100644 pages/get-posts/[category].js create mode 100644 pages/index.js create mode 100644 pages/latest-top-10.js create mode 100644 pages/login.js create mode 100644 pages/movie/[id].js create mode 100644 pages/movie/genre/[id].js create mode 100644 pages/movie/index.js create mode 100644 pages/movie/now/[id].js create mode 100644 pages/movie/popular/[id].js create mode 100644 pages/movie/top/[id].js create mode 100644 pages/movie/trending/[id].js create mode 100644 pages/movie/upcoming.js create mode 100644 pages/movie/upcoming/[id].js create mode 100644 pages/post-detail/[id]/[slug].js create mode 100644 pages/register.js create mode 100644 pages/search.js create mode 100644 pages/search/[id].js create mode 100644 pages/search/movie/[id].js create mode 100644 pages/search/tv/[id].js create mode 100644 pages/tv/[id].js create mode 100644 pages/tv/airing/[id].js create mode 100644 pages/tv/genre/[id].js create mode 100644 pages/tv/index.js create mode 100644 pages/tv/onair.js create mode 100644 pages/tv/onair/[id].js create mode 100644 pages/tv/popular/[id].js create mode 100644 pages/tv/top.js create mode 100644 pages/tv/top/[id].js create mode 100644 pages/tv/trending/[id].js create mode 100644 pages/upload.js create mode 100644 postcss.config.js create mode 100644 prettier.config.js create mode 100644 public/favicon.ico create mode 100644 public/logo.svg create mode 100644 public/vercel.svg create mode 100644 service/service.js create mode 100644 styles/globals.css create mode 100644 styles/nprogress.css create mode 100644 tailwind.config.js create mode 100644 utils/index.js diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..dfa8f73 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,4 @@ +{ + "extends": "next/core-web-vitals", + "rules": { "react/no-unescaped-entities": 0 } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a54bf7c --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env +.env.development.local +.env.test.local +.env.production.local + +# vercel +.vercel diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..fd0d55e --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "arrowParens": "avoid", + "jsxBracketSameLine": true, + "jsxSingleQuote": true, + "printWidth": 80, + "semi": false, + "singleQuote": true, + "tabWidth": 2 +} diff --git a/Common/Card.js b/Common/Card.js new file mode 100644 index 0000000..59ab42d --- /dev/null +++ b/Common/Card.js @@ -0,0 +1,57 @@ +import React from 'react'; +import {useRouter } from 'next/router'; + +function formatBytes(bytes, decimals = 1) { + if (!+bytes) return '0 Bytes' + + const k = 1024 + const dm = decimals < 0 ? 0 : decimals + const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + + const i = Math.floor(Math.log(bytes) / Math.log(k)) + + return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}` +} + + +const Card = (props) => { + const router = useRouter(); + let name = props.item[`name`]; + let time = new Date(props.item[`timestamp`]); + return ( +
{ + if(props?.page ==="dashboard" || props?.blur){ + return; + } + let slug = name.toLowerCase().trim().replace(/[^\w\s-]/g, '').replace(/[\s_-]+/g, '-').replace(/^-+|-+$/g, ''); + router.push(`/post-detail/${props.item?.eid}/${slug}/`) + }} key={props.index} style={{marginBottom:"10px"}} className={`my-2 overflow-hidden w-full ${props?.page ==="dashboard"?"":"cursor-pointer"} py-2 bg-card rounded-md flex justify-center hover:bg-primary/10 border border-off-white/10 hover:border-primary/50 flex-col md:flex-row `}> +
+
+
+ +
+ + {props?.item?.name} + +
+
+ +
+ + {props.item['c'] || props.categoryId} + + + + {time.getDate()||""}-{time.getMonth()+1||""}-{time.getFullYear()||""} + + + + {formatBytes(props.item['size'])} + + {props?.page ==="dashboard"? {router.push(`/upload?data=${JSON.stringify(props?.item)}`)}} className='font-medium cursor-pointer text-primary' >Edit:null} +
+
); +}; + +export default Card; diff --git a/Common/CardCompact.js b/Common/CardCompact.js new file mode 100644 index 0000000..3901b26 --- /dev/null +++ b/Common/CardCompact.js @@ -0,0 +1,56 @@ +import React from 'react'; +import {useRouter } from 'next/router'; + +function formatBytes(bytes, decimals = 1) { + if (!+bytes) return '0 Bytes' + + const k = 1024 + const dm = decimals < 0 ? 0 : decimals + const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + + const i = Math.floor(Math.log(bytes) / Math.log(k)) + + return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}` +} + + +const CardCompact = (props) => { + const router = useRouter(); + let name = props.item[`n`]; + let time = new Date(props.item[`a`]*1000); + return ( +
{ + let slug = name.toLowerCase().trim().replace(/[^\w\s-]/g, '').replace(/[\s_-]+/g, '-').replace(/^-+|-+$/g, ''); + router.push(`/post-detail/${props.item?.pk}/${slug}/`) + }} key={props.index} style={{marginBottom:"10px"}} className={`my-2 overflow-hidden w-full ${props?.page ==="dashboard"?"":"cursor-pointer"} py-2 bg-card rounded-md flex justify-center hover:bg-primary/10 border border-off-white/10 hover:border-primary/50 flex-col md:flex-row`}> + +
+
+
+ +
+ + {name} + +
+
+ + +
+ + {props.item['c'] || props.categoryId} + + + + {time.getDate()}-{time.getMonth()+1}-{time.getFullYear()} + + + + {formatBytes(props.item['s'])} + +
+
+ ); +}; + +export default CardCompact; diff --git a/Common/CardExpanded.js b/Common/CardExpanded.js new file mode 100644 index 0000000..2a71661 --- /dev/null +++ b/Common/CardExpanded.js @@ -0,0 +1,51 @@ +import React from 'react'; +import {useRouter } from 'next/router'; + +export function formatBytes(bytes, decimals = 1) { + if (!+bytes) return '0 Bytes' + + const k = 1024 + const dm = decimals < 0 ? 0 : decimals + const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + + const i = Math.floor(Math.log(bytes) / Math.log(k)) + + return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}` +} + + + +const CardExpanded = (props) => { + const router = useRouter(); + let name = props.item[`n`]; + let time = new Date(props.item[`a`]*1000); + return ( +
{ + let slug = name.toLowerCase().trim().replace(/[^\w\s-]/g, '').replace(/[\s_-]+/g, '-').replace(/^-+|-+$/g, ''); + router.push(`/post-detail/${props.item?.pk}/${slug}/`) + }} key={props.index} className="my-3 overflow-hidden mt-6 cursor-pointer py-2 bg-card rounded-md flex-col justify-center inline-flex hover:bg-primary/10 border border-off-white/10 hover:border-primary/50 zoomcss" style={{width:"200px"}}> +
+
+
+
+ + {name} + +
+
+ + {props.item['c'] || props.categoryId} + + + + {time.getDate()}-{time.getMonth()+1}-{time.getFullYear()} + + + + {formatBytes(props.item['s'])} + +
+
); +}; + +export default CardExpanded; diff --git a/Common/CardGrid.js b/Common/CardGrid.js new file mode 100644 index 0000000..65f6ac9 --- /dev/null +++ b/Common/CardGrid.js @@ -0,0 +1,56 @@ +import React from 'react'; +import {useRouter } from 'next/router'; +export function formatBytes(bytes, decimals = 1) { + if (!+bytes) return '0 Bytes' + + const k = 1024 + const dm = decimals < 0 ? 0 : decimals + const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + + const i = Math.floor(Math.log(bytes) / Math.log(k)) + + return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}` +} + + + +const CardExpanded = (props) => { + console.log("pp",props?.blur) + const router = useRouter(); + let name = props.item[`name`]; + let time = new Date(props.item[`timestamp`]); + return ( +
{ + + if( props?.blur==true){ + props?.setBlur(false) + return; + } + let slug = name.toLowerCase().trim().replace(/[^\w\s-]/g, '').replace(/[\s_-]+/g, '-').replace(/^-+|-+$/g, ''); + router.push(`/post-detail/${props.item?.eid}/${slug}/`) + }} key={props.index} className="my-3 mt-6 zoom overflow-hidden cursor-pointer py-2 bg-card rounded-md flex-col justify-center inline-flex hover:bg-primary/10 border border-off-white/10 hover:border-primary/50 zoomcss" style={{width:"200px"}}> +
+
+
+
+ + {props?.item?.name} + +
+
+ + {props.item['c'] || props.categoryId} + + + + {time.getDate()}-{time.getMonth()+1}-{time.getFullYear()} + + + + {formatBytes(props.item['size']||props.item['s'])} + +
+
); +}; + +export default CardExpanded; diff --git a/Common/Header.js b/Common/Header.js new file mode 100644 index 0000000..ca70bb1 --- /dev/null +++ b/Common/Header.js @@ -0,0 +1,112 @@ +/* eslint-disable @next/next/no-img-element */ +import React, { useEffect, useState } from 'react'; +import {useRouter} from 'next/router'; + + +const cRoutes = [ + { + path: [""], + route: "/", + title: "Home", + }, + { + path: ["search"], + route: "/search", + title: "Search", + }, + { + path: ["get-posts"], + route: "/get-posts/category:Movies/", + title: "Browse", + }, + { + path: ["upload"], + route: "/upload/", + title: "Upload", + }, + { + path: ["dashboard"], + route: "/dashboard/", + title: "Dashboard", + } +]; + + +const Header = () => { + const [showNav,setShowNav] = useState(false); + + const route = useRouter(); + const router = route.pathname; + const[token,setToken]=useState(false) + + let cRouter = router?.split("/") ?? []; +useEffect(()=>{ + let temp = localStorage.getItem("access_token") || false + setToken(temp) +},[]) + return ( +
+
+ + + + + route.push("/")}>theRARBG + +
+ {cRoutes.map((obj, i) => ( +
+ { + let temp = token?false:true + if(i===3&&temp){ + window.location.href=`/login`; + } + + else{ + route.push(`${obj.route}`); + } + }} key={i}> +

{obj.title}

+
+ ))} +
+ +
+ {/*Mobile Hamburger Menu */} +
+
+ route.push("/")}>theRARBG + The Navigation Icon setShowNav(!showNav)}/> +
+
+ {cRoutes.map((obj, i) => ( +
{ + if(i===3&&!token){ + route.push(`/login`); + } + else{ + route.push(`${obj.route}`); + } + setShowNav(false)} + } + key={i}> +

{obj.title}

+
+ ))} +
+
+ +
+ ); +}; + +export default Header diff --git a/Common/Loader.js b/Common/Loader.js new file mode 100644 index 0000000..cc317a9 --- /dev/null +++ b/Common/Loader.js @@ -0,0 +1,43 @@ +import React from "react"; +import { Spinner } from "react-bootstrap"; +import Loading from "../components/Loading"; + +//Whole page loader +export const Loader = (props) => { + return ( +
+ + {" "} + {/*
+
+
+
+
+
+
+
+
+
+
+ +
+
{props.loadingText||"Loading..."}
*/} +
+ ); +}; + +//Button spinner +export const BtnSpinner = () => { + return ( + <> +