diff options
| -rw-r--r-- | components/Details.vue | 43 | ||||
| -rw-r--r-- | components/Footer.vue | 5 | ||||
| -rw-r--r-- | components/Popular.vue | 4 | ||||
| -rw-r--r-- | components/Recommendations.vue | 2 | ||||
| -rw-r--r-- | components/Trending.vue | 4 | ||||
| -rw-r--r-- | nuxt.config.ts | 2 | ||||
| -rw-r--r-- | package-lock.json | 4 | ||||
| -rw-r--r-- | package.json | 2 | ||||
| -rw-r--r-- | pages/dmca/index.vue | 31 | ||||
| -rw-r--r-- | pages/i/[id].vue | 39 | ||||
| -rw-r--r-- | public/robots.txt | 2 | ||||
| -rw-r--r-- | public/sitemap.xml | 15 | ||||
| -rw-r--r-- | public/sitemap_index.xml | 15 | ||||
| -rw-r--r-- | server/tsconfig.json | 3 |
14 files changed, 123 insertions, 48 deletions
diff --git a/components/Details.vue b/components/Details.vue new file mode 100644 index 0000000..2983bab --- /dev/null +++ b/components/Details.vue @@ -0,0 +1,43 @@ +<template> + <section v-show="data" class="space-y-4"> + <section v-show="data.bannerImage" class="flex justify-center items-center"> + <NuxtImg :src="data.bannerImage" class="w-full h-20 md:h-40 object-cover rounded-sm opacity-75" /> + </section> + <section class="flex flex-col"> + <h2 v-show="data.title.romaji" class="text-secondary text-2xl font-semibold">{{ data.title?.romaji }}</h2> + <p v-show="data.title.native" class="text-primary">{{ data.title.native }}</p> + </section> + <section class="grid grid-cols-[auto,1fr] gap-4"> + <div class="hidden md:flex"> + <NuxtImg v-show="data.coverImage && data.coverImage.large" :src="data.coverImage.large" + class="w-full h-72 object-cover rounded-sm" /> + </div> + <div class="flex flex-col gap-2"> + <div class="flex items-center gap-1"> + <p v-show="data.season" class="text-primary">{{ data.season }}</p> + <p v-show="data.year" class="text-primary">{{ data.year }}</p> + </div> + <div class="flex flex-wrap items-center gap-1"> + <p v-show="data.episodes" class="text-primary bg-secondary rounded-sm px-2">{{ data.episodes }} Episodes + </p> + <p v-show="data.score && data.score.averageScore" class="text-primary bg-secondary rounded-sm px-2">{{ + data.score.averageScore }}%</p> + <p v-show="data.format" class="text-primary bg-secondary rounded-sm px-2">{{ data.format }}</p> + <p v-show="data.status" class="text-primary bg-secondary rounded-sm px-2">{{ data.status }}</p> + </div> + <div class="flex flex-wrap items-center gap-1"> + <div v-show="data.genres" v-for="(genre, index) in data.genres" :key="index"> + <p class="text-secondary bg-primary rounded-sm px-2">{{ genre }}</p> + </div> + </div> + <div v-show="data.description" v-html="data.description" + class="text-primary w-full h-48 overflow-y-auto pr-2" /> + </div> + </section> + </section> +</template> + +<script setup> +const { id } = defineProps(["id"]); +const { data } = await useFetch("https://api.amvstr.me/api/v2/info/" + id, { key: id }); +</script>
\ No newline at end of file diff --git a/components/Footer.vue b/components/Footer.vue index 0989c00..5bd4016 100644 --- a/components/Footer.vue +++ b/components/Footer.vue @@ -2,10 +2,11 @@ <section class="flex justify-between items-center py-4 px-8"> <p class="text-primary">©{{ currentYear }}. Hiruki</p> <div class="flex items-center gap-2"> - <NuxtLink class="text-primary bg-secondary text-xl rounded-sm pb-1 px-1.5 hover:bg-opacity-75"> + <NuxtLink to="https://github.com/Kenimarru/hiruki" target="_blank" + class="text-primary bg-secondary text-xl rounded-sm pb-1 px-1.5 hover:bg-opacity-75"> <Icon name="eva:github-fill" /> </NuxtLink> - <NuxtLink class="text-primary bg-secondary text-xl rounded-sm pb-1 px-1.5 hover:bg-opacity-75"> + <NuxtLink to="/dmca" class="text-primary bg-secondary text-xl rounded-sm pb-1 px-1.5 hover:bg-opacity-75"> <Icon name="fa-solid:dharmachakra" /> </NuxtLink> </div> diff --git a/components/Popular.vue b/components/Popular.vue index 8e1a707..215fbfb 100644 --- a/components/Popular.vue +++ b/components/Popular.vue @@ -1,13 +1,13 @@ <template> <section class="space-y-4"> <section class="flex flex-col"> - <h2 class="text-secondary text-xl font-semibold">All Time Popular</h2> + <h1 class="text-secondary text-xl font-semibold">All Time Popular</h1> <p class="text-primary text-sm">Most Popular Anime</p> </section> <section class="grid grid-cols-2 md:grid-cols-8 gap-2"> <NuxtLink :to="`/i/${item.id}`" class="w-full space-y-1" v-for="item in data.results"> <NuxtImg :src="item.coverImage.large" class="w-full h-44 md:h-56 object-cover rounded-sm" /> - <h2 class="text-primary text-sm truncate">{{ item.title.romaji }}</h2> + <h6 class="text-primary text-sm truncate">{{ item.title.romaji }}</h6> <div class="flex items-center gap-1"> <p class="text-primary bg-secondary text-sm rounded-sm px-1.5">{{ item.format }}</p> <p class="text-secondary bg-primary text-sm rounded-sm px-1.5">{{ item.seasonYear }}</p> diff --git a/components/Recommendations.vue b/components/Recommendations.vue index 34f548f..238e300 100644 --- a/components/Recommendations.vue +++ b/components/Recommendations.vue @@ -7,7 +7,7 @@ <section class="grid grid-cols-2 md:grid-cols-8 gap-2"> <NuxtLink :to="`/i/${item.id}`" class="w-full space-y-1" v-for="item in data.results.slice(0, 8)"> <NuxtImg :src="item.coverImage.large" class="w-full h-44 md:h-56 object-cover rounded-sm" /> - <h2 class="text-primary text-sm truncate">{{ item.title.romaji }}</h2> + <h6 class="text-primary text-sm truncate">{{ item.title.romaji }}</h6> <div class="flex items-center gap-1"> <p class="text-primary bg-secondary text-sm rounded-sm px-1.5">{{ item.format }}</p> <p class="text-secondary bg-primary text-sm rounded-sm px-1.5">{{ item.status }}</p> diff --git a/components/Trending.vue b/components/Trending.vue index d16beae..efeb050 100644 --- a/components/Trending.vue +++ b/components/Trending.vue @@ -1,13 +1,13 @@ <template> <section class="space-y-4"> <section class="flex flex-col"> - <h2 class="text-secondary text-xl font-semibold">Trending Now</h2> + <h1 class="text-secondary text-xl font-semibold">Trending Now</h1> <p class="text-primary text-sm">Currently Trending Anime</p> </section> <section class="grid grid-cols-2 md:grid-cols-8 gap-2"> <NuxtLink :to="`/i/${item.id}`" class="w-full space-y-1" v-for="item in data.results"> <NuxtImg :src="item.coverImage.large" class="w-full h-44 md:h-56 object-cover rounded-sm" /> - <h2 class="text-primary text-sm truncate">{{ item.title.romaji }}</h2> + <h6 class="text-primary text-sm truncate">{{ item.title.romaji }}</h6> <div class="flex items-center gap-1"> <p class="text-primary bg-secondary text-sm rounded-sm px-1.5">{{ item.format }}</p> <p class="text-secondary bg-primary text-sm rounded-sm px-1.5">{{ item.seasonYear }}</p> diff --git a/nuxt.config.ts b/nuxt.config.ts index 08d8088..896dbac 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -38,7 +38,7 @@ export default defineNuxtConfig({ }, { property: "og:image", - content: "/public/apple-touch-icon.png", + content: "/apple-touch-icon.png", }, { property: "og:url", diff --git a/package-lock.json b/package-lock.json index d528c5c..1cc890b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "hiruki", - "version": "0.1.0", + "version": "0.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "hiruki", - "version": "0.1.0", + "version": "0.2.0", "hasInstallScript": true, "devDependencies": { "@nuxt/image": "^1.1.0", diff --git a/package.json b/package.json index cc3a469..ecb8b59 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hiruki", - "version": "0.1.0", + "version": "0.2.0", "private": true, "type": "module", "scripts": { diff --git a/pages/dmca/index.vue b/pages/dmca/index.vue new file mode 100644 index 0000000..79732ca --- /dev/null +++ b/pages/dmca/index.vue @@ -0,0 +1,31 @@ +<template> + <section class="space-y-4"> + <section class="flex flex-col gap-2"> + <h1 class="text-primary text-3xl font-semibold">Disclaimer</h1> + <p class="text-primary text-opacity-75">None of the files listed on hiruki.xyz are hosted on our servers. All + links point to content hosted on third-party websites. hiruki.xyz does not accept responsibility for content + hosted on third-party websites and has no involvement in the downloading/uploading of movies. We only post + links that are available on the internet. If you believe that any content on our website infringes upon your + intellectual property rights and you hold the copyright for that content, please report it to + [email protected] and the content will be immediately removed.</p> + </section> + <section class="flex flex-col gap-2"> + <h1 class="text-primary text-3xl font-semibold">DMCA</h1> + <p class="text-primary text-opacity-75">The Digital Millennium Copyright Act (DMCA) is a United States copyright + law that implements two 1996 treaties of the World Intellectual Property Organization (WIPO). + + The DMCA criminalizes the production and dissemination of technology, devices, or services that are + primarily designed or produced for the purpose of circumventing technological measures that effectively + control access to copyrighted works. + + The DMCA also provides a safe harbor for online service providers from copyright infringement liability, + provided that they meet certain conditions, such as promptly removing infringing material upon notification. + + If you believe that your copyright has been infringed, you can file a DMCA takedown notice with the online + service provider that is hosting the infringing material.</p> + </section> + </section> +</template> + +<script setup> +</script>
\ No newline at end of file diff --git a/pages/i/[id].vue b/pages/i/[id].vue index 4fff757..41b04c1 100644 --- a/pages/i/[id].vue +++ b/pages/i/[id].vue @@ -1,42 +1,7 @@ <template> - <section class="space-y-4"> - <section v-if="info.bannerImage" class="flex justify-center items-center"> - <NuxtImg :src="info.bannerImage" class="w-full h-20 md:h-40 object-cover rounded-sm opacity-75" /> - </section> - <section class="flex flex-col"> - <h2 v-if="info.title.romaji" class="text-secondary text-2xl font-semibold">{{ info.title.romaji }}</h2> - <p v-if="info.title.native" class="text-primary">{{ info.title.native }}</p> - </section> - <section class="grid grid-cols-[auto,1fr] gap-4"> - <div class="hidden md:flex"> - <NuxtImg :src="info.coverImage.large" class="w-full h-72 object-cover rounded-sm" /> - </div> - <div class="flex flex-col gap-2"> - <div class="flex items-center gap-1"> - <p v-if="info.season" class="text-primary">{{ info.season }}</p> - <p v-if="info.year" class="text-primary">{{ info.year }}</p> - </div> - <div class="flex flex-wrap items-center gap-1"> - <p v-if="info.episodes" class="text-primary bg-secondary rounded-sm px-2">{{ info.episodes }} Episodes - </p> - <p v-if="info.score.averageScore" class="text-primary bg-secondary rounded-sm px-2">{{ - info.score.averageScore }}%</p> - <p v-if="info.format" class="text-primary bg-secondary rounded-sm px-2">{{ info.format }}</p> - <p v-if="info.status" class="text-primary bg-secondary rounded-sm px-2">{{ info.status }}</p> - </div> - <div class="flex flex-wrap items-center gap-1"> - <div v-for="genre in info.genres"> - <p class="text-secondary bg-primary rounded-sm px-2">{{ genre }}</p> - </div> - </div> - <div v-html="info.description" class="text-primary w-full h-48 overflow-y-auto pr-2" /> - </div> - </section> - <Recommendations :id="id" /> - </section> -</template> + <Details :id="id" /> +</template> <script setup> const { id } = useRoute().params -const { data: info } = await useFetch("https://api.amvstr.me/api/v2/info/" + id, { key: id }); </script>
\ No newline at end of file diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..c4d793c --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: /i/*
\ No newline at end of file diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..c80692b --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> + <url> + <loc>https://hiruki.xyz</loc> + <lastmod>2024-01-06</lastmod> + <changefreq>always</changefreq> + <priority>1</priority> + </url> + <url> + <loc>https://hiruki.xyz/dmca</loc> + <lastmod>2024-01-06</lastmod> + <changefreq>always</changefreq> + <priority>0.8</priority> + </url> +</urlset>
\ No newline at end of file diff --git a/public/sitemap_index.xml b/public/sitemap_index.xml new file mode 100644 index 0000000..c80692b --- /dev/null +++ b/public/sitemap_index.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> + <url> + <loc>https://hiruki.xyz</loc> + <lastmod>2024-01-06</lastmod> + <changefreq>always</changefreq> + <priority>1</priority> + </url> + <url> + <loc>https://hiruki.xyz/dmca</loc> + <lastmod>2024-01-06</lastmod> + <changefreq>always</changefreq> + <priority>0.8</priority> + </url> +</urlset>
\ No newline at end of file diff --git a/server/tsconfig.json b/server/tsconfig.json new file mode 100644 index 0000000..a177e33 --- /dev/null +++ b/server/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../.nuxt/tsconfig.server.json" +}
\ No newline at end of file |