Help
RSS
API
Feed
Maltego
Contact
Domain > anihour.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2026-02-28
172.67.159.26
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Sat, 28 Feb 2026 19:38:43 GMTContent-Type: text/html; charsetutf-8Transfer-Encoding: chunkedConnection: keep-aliveServer: cloudflareAccess-Control-Allow-Origin: *X-Powered-By: Phusion Passenger(R) 6.1.2Status: 200 OKVary: Accept-Encoding,User-AgentNel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Report-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sDV4F%2FXFoc%2F3eqVNFlFT6vygyPZJ1k8zmU0wrdrrH9uf9fdJrz3EQFR6Wef7Pt3tBSbHeb6yjKu%2F0ZKX7BHnyl64l4hiSck%2BBQN6p}}cf-cache-status: DYNAMICCF-RAY: 9d5262430dd9b7b9-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langen>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>Anihour - Current Season Anime/title> !-- Meta Tags --> meta namedescription contentTrack ongoing anime, discover top-rated series, and stay updated with the latest anime news. Your ultimate anime tracking companion.> meta namekeywords contentanime, manga, MyAnimeList, anime tracker, ongoing anime, top anime, upcoming anime> meta nameauthor contentAnihour> !-- Preconnect to external domains for faster loading --> link relpreconnect hrefhttps://cdn.jsdelivr.net> link relpreconnect hrefhttps://cdnjs.cloudflare.com> link relpreconnect hrefhttps://api.jikan.moe> link relpreconnect hrefhttps://cdn.myanimelist.net> !-- Bootstrap 5 CSS with optimized loading --> link hrefhttps://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css relstylesheet crossoriginanonymous> !-- Font Awesome Icons with optimized loading --> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css crossoriginanonymous> !-- Custom CSS --> link relstylesheet href/static/css/style.css?v1.0> !-- Favicon --> link relicon typeimage/x-icon hrefdata:image/svg+xml,svg xmlnshttp://www.w3.org/2000/svg viewBox0 0 100 100>text y.9em font-size90>🎌/text>/svg>> /head>body> !-- Navigation --> nav classnavbar navbar-expand-lg navbar-dark fixed-top> div classcontainer> a classnavbar-brand href/> span classnavbar-logo me-2>🎌/span> Anihour /a> button classnavbar-toggler typebutton data-bs-togglecollapse data-bs-target#navbarNav> span classnavbar-toggler-icon>/span> /button> div classcollapse navbar-collapse idnavbarNav> ul classnavbar-nav ms-auto me-3> li classnav-item> a classnav-link href/> i classfas fa-home me-1>/i>Current Season /a> /li> li classnav-item> a classnav-link href/top> i classfas fa-trophy me-1>/i>Top Anime /a> /li> li classnav-item> a classnav-link href/upcoming> i classfas fa-clock me-1>/i>Upcoming /a> /li> li classnav-item> a classnav-link href/news> i classfas fa-newspaper me-1>/i>News /a> /li> /ul> !-- Search Form --> form classsearch-form idsearchForm> input typetext classform-control search-input idsearchInput placeholderSearch anime... autocompleteoff> button typesubmit classsearch-btn> i classfas fa-search>/i> /button> /form> /div> /div> /nav> !-- Main Content --> main classmain-content> !-- Hero Section -->div classhero-section> !-- Background Slideshow --> div classhero-slideshow idheroSlideshow> !-- Images will be loaded dynamically --> /div> div classcontainer> div classrow align-items-center> div classcol-lg-8 col-md-12> h1 classhero-title mb-4> Welcome to span classbrand-highlight stylecolor: #ff6b9d !important; -webkit-text-fill-color: #ff6b9d !important;>Anihour/span> /h1> p classhero-subtitle mb-4> Your ultimate destination for discovering amazing anime series, tracking favorites, and staying updated with the latest releases. /p> div classhero-buttons> a href/top classbtn btn-primary btn-lg me-3 mb-2> i classfas fa-trophy me-2>/i>Explore Top Anime /a> a href/upcoming classbtn btn-outline-light btn-lg mb-2> i classfas fa-clock me-2>/i>See Upcoming /a> /div> /div> div classcol-lg-4 col-md-12> div classhero-image-placeholder idheroImageBox> div classhero-current-anime idheroCurrentAnime> img idheroAnimeImage classhero-anime-img altCurrent Anime styledisplay: none;> div classhero-anime-overlay> i classfas fa-play-circle hero-icon>/i> div classhero-anime-info> h4 idheroAnimeTitle classhero-anime-title>/h4> p idheroAnimeType classhero-anime-type>/p> /div> /div> div classhero-loading> i classfas fa-play-circle hero-icon>/i> /div> /div> /div> /div> /div> /div>/div>!-- Quick Stats Section -->div classstats-section> div classcontainer> div classrow g-4> div classcol-lg-3 col-md-6> div classstat-card> div classstat-icon> i classfas fa-tv>/i> /div> div classstat-content> h3>Current Season/h3> p>Latest airing anime/p> /div> /div> /div> div classcol-lg-3 col-md-6> div classstat-card> div classstat-icon secondary> i classfas fa-trophy>/i> /div> div classstat-content> h3>Top Rated/h3> p>Best anime of all time/p> /div> /div> /div> div classcol-lg-3 col-md-6> div classstat-card> div classstat-icon accent> i classfas fa-clock>/i> /div> div classstat-content> h3>Upcoming/h3> p>Future releases/p> /div> /div> /div> div classcol-lg-3 col-md-6> div classstat-card> div classstat-icon warning> i classfas fa-fire>/i> /div> div classstat-content> h3>Trending/h3> p>Popular right now/p> /div> /div> /div> /div> /div>/div>div classcontainer> !-- Search Results Section (Hidden by default) --> div idsearchResults classsearch-results-section>/div> !-- Current Season Anime Section --> section classcontent-section> div classsection-header> h2 classsection-title> i classfas fa-tv me-3>/i>Current Season /h2> a href/ classbtn btn-outline-primary btn-sm>View All/a> /div> div idcurrentSeasonAnime> div classloading-state> div classloading-spinner>/div> p>Loading current season anime.../p> /div> /div> /section> !-- Top Anime Section --> section classcontent-section> div classsection-header> h2 classsection-title> i classfas fa-trophy me-3>/i>Top Rated Anime /h2> a href/top classbtn btn-outline-primary btn-sm>View All/a> /div> div idtopAnimeSection> div classloading-state> div classloading-spinner>/div> p>Loading top anime.../p> /div> /div> /section> !-- Upcoming Anime Section --> section classcontent-section> div classsection-header> h2 classsection-title> i classfas fa-clock me-3>/i>Upcoming Releases /h2> a href/upcoming classbtn btn-outline-primary btn-sm>View All/a> /div> div idupcomingAnimeSection> div classloading-state> div classloading-spinner>/div> p>Loading upcoming anime.../p> /div> /div> /section>/div>!-- Decorative Background Pattern -->div classposition-fixed w-100 h-100 styletop: 0; left: 0; z-index: -2; opacity: 0.03;> div classbg-pattern h-100>/div>/div> /main> !-- Footer --> footer classfooter mt-5> div classcontainer> div classrow py-5> div classcol-lg-4 col-md-6 mb-4> div classfooter-brand mb-3> i classfas fa-play-circle me-2>/i> span classfw-bold fs-4>Anihour/span> /div> p classfooter-description mb-3> Your ultimate destination for discovering amazing anime series, tracking your favorites, and staying updated with the latest industry news. /p> div classsocial-links> a href# classsocial-link me-3 aria-labelTwitter> i classfab fa-twitter>/i> /a> a href# classsocial-link me-3 aria-labelDiscord> i classfab fa-discord>/i> /a> a href# classsocial-link me-3 aria-labelReddit> i classfab fa-reddit>/i> /a> a href# classsocial-link aria-labelGitHub> i classfab fa-github>/i> /a> /div> /div> div classcol-lg-2 col-md-6 mb-4> h6 classfooter-title mb-3>Explore/h6> ul classfooter-links> li>a href/ classfooter-link>Current Season/a>/li> li>a href/top classfooter-link>Top Anime/a>/li> li>a href/upcoming classfooter-link>Upcoming/a>/li> li>a href/news classfooter-link>News/a>/li> /ul> /div> div classcol-lg-3 col-md-6 mb-4> h6 classfooter-title mb-3>Categories/h6> ul classfooter-links> li>a href/top?typetv classfooter-link>TV Series/a>/li> li>a href/top?typemovie classfooter-link>Movies/a>/li> li>a href/top?typeova classfooter-link>OVA/a>/li> li>a href/top?typespecial classfooter-link>Specials/a>/li> /ul> /div> div classcol-lg-3 col-md-6 mb-4> h6 classfooter-title mb-3>Data Sources/h6> p classfooter-text mb-2> Powered by a hrefhttps://myanimelist.net target_blank classfooter-external-link>MyAnimeList/a> /p> p classfooter-text mb-3> API by a hrefhttps://jikan.moe target_blank classfooter-external-link>Jikan/a> /p> div classfooter-badge> i classfas fa-shield-alt me-1>/i> small>Real-time Data/small> /div> /div> /div> hr classfooter-divider> div classrow py-3> div classcol-md-6> p classfooter-copyright mb-0> © 2025 Anihour. All rights reserved. /p> /div> div classcol-md-6 text-md-end> p classfooter-disclaimer mb-0> Anime data courtesy of MyAnimeList community /p> /div> /div> /div> /footer> !-- Back to Top Button --> button idbackToTop classbtn btn-primary position-fixed stylebottom: 20px; right: 20px; display: none; z-index: 1000; border-radius: 50%; width: 50px; height: 50px;> i classfas fa-arrow-up>/i> /button> !-- Bootstrap 5 JS with optimized loading --> script srchttps://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js crossoriginanonymous defer>/script> !-- Custom JS --> script src/static/js/main.js?v1.0 defer>/script> !-- Back to Top Script --> script> // Back to Top Button const backToTopBtn document.getElementById(backToTop); window.addEventListener(scroll, () > { if (window.pageYOffset > 300) { backToTopBtn.style.display block; } else { backToTopBtn.style.display none; } }); backToTopBtn.addEventListener(click, () > { window.scrollTo({ top: 0, behavior: smooth }); }); /script> script>document.addEventListener(DOMContentLoaded, function() { // Hero Background Slideshow let slideshowImages ; let currentSlideIndex 0; async function loadHeroSlideshow() { try { console.log(Loading hero slideshow images...); const response await fetch(/api/hero-slideshow-images); const data await response.json(); console.log(Slideshow API response:, data); if (data.images && data.images.length > 0) { slideshowImages data.images; console.log(`Found ${slideshowImages.length} images for slideshow`); initializeSlideshow(); } else { console.warn(No slideshow images found); } } catch (error) { console.error(Error loading slideshow images:, error); } } function initializeSlideshow() { const slideshowContainer document.getElementById(heroSlideshow); if (!slideshowContainer) { console.error(Slideshow container not found); return; } console.log(Initializing professional slideshow); // Create image elements and indicators slideshowImages.forEach((imageData, index) > { // Create image const img document.createElement(img); img.src `/api/image-proxy?url${encodeURIComponent(imageData.image_url)}`; img.alt imageData.title; img.className `hero-slideshow-image${index 0 ? active : }`; img.loading index 2 ? eager : lazy; img.decoding async; img.dataset.slideIndex index; // Handle image load img.onload function() { console.log(`Slideshow image ${index + 1} loaded:`, imageData.title); }; img.onerror function() { console.error(Failed to load slideshow image:, imageData.title); this.remove(); }; slideshowContainer.appendChild(img); }); console.log(`Initialized slideshow with ${slideshowImages.length} images`); // Initialize hero anime box initializeHeroAnimeBox(); // Start auto slideshow if (slideshowImages.length > 1) { startAutoSlide(); } } function initializeHeroAnimeBox() { // Show first anime in hero box if (slideshowImages.length > 0) { updateHeroAnimeBox(0); } // Make hero box clickable const heroBox document.getElementById(heroImageBox); if (heroBox) { heroBox.addEventListener(click, () > { const currentAnime slideshowImagescurrentSlideIndex; if (currentAnime) { // Try to get anime ID from API or search searchAnimeForDetails(currentAnime.title); } }); } } function updateHeroAnimeBox(index) { if (!slideshowImagesindex) { console.log(No slideshow image at index:, index); return; } const currentAnime slideshowImagesindex; const heroImg document.getElementById(heroAnimeImage); const heroTitle document.getElementById(heroAnimeTitle); const heroType document.getElementById(heroAnimeType); const heroLoading document.querySelector(.hero-loading); console.log(Updating hero anime box with:, currentAnime.title, at index:, index); if (heroImg && heroTitle && heroType) { // Reset image state heroImg.classList.remove(loaded); heroImg.style.display none; if (heroLoading) { heroLoading.style.display flex; } // Update image heroImg.src `/api/image-proxy?url${encodeURIComponent(currentAnime.image_url)}`; heroImg.alt currentAnime.title; // Update text heroTitle.textContent currentAnime.title; heroType.textContent currentAnime.type current ? Current Season : Top Anime; // Handle image loading heroImg.onload function() { console.log(Hero anime image loaded:, currentAnime.title); this.style.display block; this.classList.add(loaded); if (heroLoading) { heroLoading.style.display none; } }; heroImg.onerror function() { console.error(Hero anime image failed to load:, currentAnime.title); // Keep loading state if image fails if (heroLoading) { heroLoading.style.display flex; } }; } else { console.error(Hero anime box elements not found:, { heroImg: !!heroImg, heroTitle: !!heroTitle, heroType: !!heroType }); } } async function searchAnimeForDetails(title) { try { const response await fetch(`/api/search?q${encodeURIComponent(title)}&limit1`); const data await response.json(); if (data.data && data.data.length > 0) { const animeId data.data0.mal_id; window.location.href `/anime/${animeId}`; } else { // Fallback: search on MyAnimeList window.open(`https://myanimelist.net/search/all?q${encodeURIComponent(title)}`, _blank); } } catch (error) { console.error(Error searching anime:, error); // Fallback: search on MyAnimeList window.open(`https://myanimelist.net/search/all?q${encodeURIComponent(title)}`, _blank); } } let autoSlideInterval; function goToSlide(index) { const images document.querySelectorAll(.hero-slideshow-image); if (images.length 0 || index > images.length) return; // Remove active class from current slide imagescurrentSlideIndex?.classList.remove(active); // Set new active slide currentSlideIndex index; imagescurrentSlideIndex.classList.add(active); // Update hero anime box to match current slide updateHeroAnimeBox(currentSlideIndex); // Restart auto slide timer restartAutoSlide(); } function nextSlide() { goToSlide((currentSlideIndex + 1) % slideshowImages.length); } function startAutoSlide() { autoSlideInterval setInterval(nextSlide, 6000); // 6 seconds per slide console.log(Auto slideshow started); } function restartAutoSlide() { if (autoSlideInterval) { clearInterval(autoSlideInterval); startAutoSlide(); } } // Load slideshow immediately loadHeroSlideshow(); // Enhanced animations for the new homepage design // Animate stat cards on scroll const statCards document.querySelectorAll(.stat-card); const observer new IntersectionObserver((entries) > { entries.forEach(entry > { if (entry.isIntersecting) { entry.target.style.transform translateY(0); entry.target.style.opacity 1; } }); }, { threshold: 0.1 }); statCards.forEach((card, index) > { card.style.transform translateY(30px); card.style.opacity 0; card.style.transition `all 0.6s ease ${index * 0.15}s`; observer.observe(card); }); // Animate content sections on scroll const contentSections document.querySelectorAll(.content-section); const sectionObserver new IntersectionObserver((entries) > { entries.forEach(entry > { if (entry.isIntersecting) { entry.target.classList.add(animate-in); } }); }, { threshold: 0.1, rootMargin: 50px }); contentSections.forEach(section > { section.style.opacity 0; section.style.transform translateY(40px); section.style.transition all 0.8s ease; sectionObserver.observe(section); }); // Add CSS for animate-in class const style document.createElement(style); style.textContent ` .animate-in { opacity: 1 !important; transform: translateY(0) !important; } `; document.head.appendChild(style); // Enhanced button hover effects const buttons document.querySelectorAll(.btn); buttons.forEach(btn > { btn.addEventListener(mouseenter, function() { this.style.transform translateY(-3px) scale(1.02); }); btn.addEventListener(mouseleave, function() { this.style.transform translateY(0) scale(1); }); }); // Add click effects to stat cards (navigate to respective pages) statCards.forEach((card, index) > { card.style.cursor pointer; card.addEventListener(click, function() { const routes /, /top, /upcoming, /news; if (routesindex) { window.location.href routesindex; } }); }); // Parallax effect for hero section const hero document.querySelector(.hero-section); if (hero) { window.addEventListener(scroll, () > { const scrolled window.pageYOffset; const rate scrolled * -0.5; if (scrolled hero.offsetHeight) { hero.style.transform `translateY(${rate}px)`; } }); } // Staggered animation for anime cards when they load const observeAnimeCards () > { const animeCards document.querySelectorAll(.anime-card); animeCards.forEach((card, index) > { card.style.opacity 0; card.style.transform translateY(20px); setTimeout(() > { card.style.transition all 0.6s ease; card.style.opacity 1; card.style.transform translateY(0); }, index * 100); }); }; // Watch for content changes in sections const sectionContainers currentSeasonAnime, topAnimeSection, upcomingAnimeSection; sectionContainers.forEach(containerId > { const container document.getElementById(containerId); if (container) { const contentObserver new MutationObserver((mutations) > { mutations.forEach((mutation) > { if (mutation.type childList && mutation.addedNodes.length > 0) { const hasAnimeGrid Array.from(mutation.addedNodes).some(node > node.nodeType Node.ELEMENT_NODE && node.querySelector(.anime-grid) ); if (hasAnimeGrid) { setTimeout(observeAnimeCards, 200); } } }); }); contentObserver.observe(container, { childList: true, subtree: true }); } });});/script>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Sat, 28 Feb 2026 19:38:43 GMTContent-Type: text/html; charsetutf-8Transfer-Encoding: chunkedConnection: keep-aliveServer: cloudflareAccess-Control-Allow-Origin: *X-Powered-By: Phusion Passenger(R) 6.1.2Status: 200 OKVary: Accept-Encoding,User-AgentNel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Report-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?spXmgDTrutHBoWg0E3VLwulb3TGOVOAOsNkkS9Sp0xeLe1ZyG5QGikrFaFNZ08DjwYVTK1dAP9sX5DEJbfOgfSEky%2BM%2B2cqKUl%2FJw}}cf-cache-status: DYNAMICCF-RAY: 9d5262445d748d3a-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langen>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>Anihour - Current Season Anime/title> !-- Meta Tags --> meta namedescription contentTrack ongoing anime, discover top-rated series, and stay updated with the latest anime news. Your ultimate anime tracking companion.> meta namekeywords contentanime, manga, MyAnimeList, anime tracker, ongoing anime, top anime, upcoming anime> meta nameauthor contentAnihour> !-- Preconnect to external domains for faster loading --> link relpreconnect hrefhttps://cdn.jsdelivr.net> link relpreconnect hrefhttps://cdnjs.cloudflare.com> link relpreconnect hrefhttps://api.jikan.moe> link relpreconnect hrefhttps://cdn.myanimelist.net> !-- Bootstrap 5 CSS with optimized loading --> link hrefhttps://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css relstylesheet crossoriginanonymous> !-- Font Awesome Icons with optimized loading --> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css crossoriginanonymous> !-- Custom CSS --> link relstylesheet href/static/css/style.css?v1.0> !-- Favicon --> link relicon typeimage/x-icon hrefdata:image/svg+xml,svg xmlnshttp://www.w3.org/2000/svg viewBox0 0 100 100>text y.9em font-size90>🎌/text>/svg>> /head>body> !-- Navigation --> nav classnavbar navbar-expand-lg navbar-dark fixed-top> div classcontainer> a classnavbar-brand href/> span classnavbar-logo me-2>🎌/span> Anihour /a> button classnavbar-toggler typebutton data-bs-togglecollapse data-bs-target#navbarNav> span classnavbar-toggler-icon>/span> /button> div classcollapse navbar-collapse idnavbarNav> ul classnavbar-nav ms-auto me-3> li classnav-item> a classnav-link href/> i classfas fa-home me-1>/i>Current Season /a> /li> li classnav-item> a classnav-link href/top> i classfas fa-trophy me-1>/i>Top Anime /a> /li> li classnav-item> a classnav-link href/upcoming> i classfas fa-clock me-1>/i>Upcoming /a> /li> li classnav-item> a classnav-link href/news> i classfas fa-newspaper me-1>/i>News /a> /li> /ul> !-- Search Form --> form classsearch-form idsearchForm> input typetext classform-control search-input idsearchInput placeholderSearch anime... autocompleteoff> button typesubmit classsearch-btn> i classfas fa-search>/i> /button> /form> /div> /div> /nav> !-- Main Content --> main classmain-content> !-- Hero Section -->div classhero-section> !-- Background Slideshow --> div classhero-slideshow idheroSlideshow> !-- Images will be loaded dynamically --> /div> div classcontainer> div classrow align-items-center> div classcol-lg-8 col-md-12> h1 classhero-title mb-4> Welcome to span classbrand-highlight stylecolor: #ff6b9d !important; -webkit-text-fill-color: #ff6b9d !important;>Anihour/span> /h1> p classhero-subtitle mb-4> Your ultimate destination for discovering amazing anime series, tracking favorites, and staying updated with the latest releases. /p> div classhero-buttons> a href/top classbtn btn-primary btn-lg me-3 mb-2> i classfas fa-trophy me-2>/i>Explore Top Anime /a> a href/upcoming classbtn btn-outline-light btn-lg mb-2> i classfas fa-clock me-2>/i>See Upcoming /a> /div> /div> div classcol-lg-4 col-md-12> div classhero-image-placeholder idheroImageBox> div classhero-current-anime idheroCurrentAnime> img idheroAnimeImage classhero-anime-img altCurrent Anime styledisplay: none;> div classhero-anime-overlay> i classfas fa-play-circle hero-icon>/i> div classhero-anime-info> h4 idheroAnimeTitle classhero-anime-title>/h4> p idheroAnimeType classhero-anime-type>/p> /div> /div> div classhero-loading> i classfas fa-play-circle hero-icon>/i> /div> /div> /div> /div> /div> /div>/div>!-- Quick Stats Section -->div classstats-section> div classcontainer> div classrow g-4> div classcol-lg-3 col-md-6> div classstat-card> div classstat-icon> i classfas fa-tv>/i> /div> div classstat-content> h3>Current Season/h3> p>Latest airing anime/p> /div> /div> /div> div classcol-lg-3 col-md-6> div classstat-card> div classstat-icon secondary> i classfas fa-trophy>/i> /div> div classstat-content> h3>Top Rated/h3> p>Best anime of all time/p> /div> /div> /div> div classcol-lg-3 col-md-6> div classstat-card> div classstat-icon accent> i classfas fa-clock>/i> /div> div classstat-content> h3>Upcoming/h3> p>Future releases/p> /div> /div> /div> div classcol-lg-3 col-md-6> div classstat-card> div classstat-icon warning> i classfas fa-fire>/i> /div> div classstat-content> h3>Trending/h3> p>Popular right now/p> /div> /div> /div> /div> /div>/div>div classcontainer> !-- Search Results Section (Hidden by default) --> div idsearchResults classsearch-results-section>/div> !-- Current Season Anime Section --> section classcontent-section> div classsection-header> h2 classsection-title> i classfas fa-tv me-3>/i>Current Season /h2> a href/ classbtn btn-outline-primary btn-sm>View All/a> /div> div idcurrentSeasonAnime> div classloading-state> div classloading-spinner>/div> p>Loading current season anime.../p> /div> /div> /section> !-- Top Anime Section --> section classcontent-section> div classsection-header> h2 classsection-title> i classfas fa-trophy me-3>/i>Top Rated Anime /h2> a href/top classbtn btn-outline-primary btn-sm>View All/a> /div> div idtopAnimeSection> div classloading-state> div classloading-spinner>/div> p>Loading top anime.../p> /div> /div> /section> !-- Upcoming Anime Section --> section classcontent-section> div classsection-header> h2 classsection-title> i classfas fa-clock me-3>/i>Upcoming Releases /h2> a href/upcoming classbtn btn-outline-primary btn-sm>View All/a> /div> div idupcomingAnimeSection> div classloading-state> div classloading-spinner>/div> p>Loading upcoming anime.../p> /div> /div> /section>/div>!-- Decorative Background Pattern -->div classposition-fixed w-100 h-100 styletop: 0; left: 0; z-index: -2; opacity: 0.03;> div classbg-pattern h-100>/div>/div> /main> !-- Footer --> footer classfooter mt-5> div classcontainer> div classrow py-5> div classcol-lg-4 col-md-6 mb-4> div classfooter-brand mb-3> i classfas fa-play-circle me-2>/i> span classfw-bold fs-4>Anihour/span> /div> p classfooter-description mb-3> Your ultimate destination for discovering amazing anime series, tracking your favorites, and staying updated with the latest industry news. /p> div classsocial-links> a href# classsocial-link me-3 aria-labelTwitter> i classfab fa-twitter>/i> /a> a href# classsocial-link me-3 aria-labelDiscord> i classfab fa-discord>/i> /a> a href# classsocial-link me-3 aria-labelReddit> i classfab fa-reddit>/i> /a> a href# classsocial-link aria-labelGitHub> i classfab fa-github>/i> /a> /div> /div> div classcol-lg-2 col-md-6 mb-4> h6 classfooter-title mb-3>Explore/h6> ul classfooter-links> li>a href/ classfooter-link>Current Season/a>/li> li>a href/top classfooter-link>Top Anime/a>/li> li>a href/upcoming classfooter-link>Upcoming/a>/li> li>a href/news classfooter-link>News/a>/li> /ul> /div> div classcol-lg-3 col-md-6 mb-4> h6 classfooter-title mb-3>Categories/h6> ul classfooter-links> li>a href/top?typetv classfooter-link>TV Series/a>/li> li>a href/top?typemovie classfooter-link>Movies/a>/li> li>a href/top?typeova classfooter-link>OVA/a>/li> li>a href/top?typespecial classfooter-link>Specials/a>/li> /ul> /div> div classcol-lg-3 col-md-6 mb-4> h6 classfooter-title mb-3>Data Sources/h6> p classfooter-text mb-2> Powered by a hrefhttps://myanimelist.net target_blank classfooter-external-link>MyAnimeList/a> /p> p classfooter-text mb-3> API by a hrefhttps://jikan.moe target_blank classfooter-external-link>Jikan/a> /p> div classfooter-badge> i classfas fa-shield-alt me-1>/i> small>Real-time Data/small> /div> /div> /div> hr classfooter-divider> div classrow py-3> div classcol-md-6> p classfooter-copyright mb-0> © 2025 Anihour. All rights reserved. /p> /div> div classcol-md-6 text-md-end> p classfooter-disclaimer mb-0> Anime data courtesy of MyAnimeList community /p> /div> /div> /div> /footer> !-- Back to Top Button --> button idbackToTop classbtn btn-primary position-fixed stylebottom: 20px; right: 20px; display: none; z-index: 1000; border-radius: 50%; width: 50px; height: 50px;> i classfas fa-arrow-up>/i> /button> !-- Bootstrap 5 JS with optimized loading --> script srchttps://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js crossoriginanonymous defer>/script> !-- Custom JS --> script src/static/js/main.js?v1.0 defer>/script> !-- Back to Top Script --> script> // Back to Top Button const backToTopBtn document.getElementById(backToTop); window.addEventListener(scroll, () > { if (window.pageYOffset > 300) { backToTopBtn.style.display block; } else { backToTopBtn.style.display none; } }); backToTopBtn.addEventListener(click, () > { window.scrollTo({ top: 0, behavior: smooth }); }); /script> script>document.addEventListener(DOMContentLoaded, function() { // Hero Background Slideshow let slideshowImages ; let currentSlideIndex 0; async function loadHeroSlideshow() { try { console.log(Loading hero slideshow images...); const response await fetch(/api/hero-slideshow-images); const data await response.json(); console.log(Slideshow API response:, data); if (data.images && data.images.length > 0) { slideshowImages data.images; console.log(`Found ${slideshowImages.length} images for slideshow`); initializeSlideshow(); } else { console.warn(No slideshow images found); } } catch (error) { console.error(Error loading slideshow images:, error); } } function initializeSlideshow() { const slideshowContainer document.getElementById(heroSlideshow); if (!slideshowContainer) { console.error(Slideshow container not found); return; } console.log(Initializing professional slideshow); // Create image elements and indicators slideshowImages.forEach((imageData, index) > { // Create image const img document.createElement(img); img.src `/api/image-proxy?url${encodeURIComponent(imageData.image_url)}`; img.alt imageData.title; img.className `hero-slideshow-image${index 0 ? active : }`; img.loading index 2 ? eager : lazy; img.decoding async; img.dataset.slideIndex index; // Handle image load img.onload function() { console.log(`Slideshow image ${index + 1} loaded:`, imageData.title); }; img.onerror function() { console.error(Failed to load slideshow image:, imageData.title); this.remove(); }; slideshowContainer.appendChild(img); }); console.log(`Initialized slideshow with ${slideshowImages.length} images`); // Initialize hero anime box initializeHeroAnimeBox(); // Start auto slideshow if (slideshowImages.length > 1) { startAutoSlide(); } } function initializeHeroAnimeBox() { // Show first anime in hero box if (slideshowImages.length > 0) { updateHeroAnimeBox(0); } // Make hero box clickable const heroBox document.getElementById(heroImageBox); if (heroBox) { heroBox.addEventListener(click, () > { const currentAnime slideshowImagescurrentSlideIndex; if (currentAnime) { // Try to get anime ID from API or search searchAnimeForDetails(currentAnime.title); } }); } } function updateHeroAnimeBox(index) { if (!slideshowImagesindex) { console.log(No slideshow image at index:, index); return; } const currentAnime slideshowImagesindex; const heroImg document.getElementById(heroAnimeImage); const heroTitle document.getElementById(heroAnimeTitle); const heroType document.getElementById(heroAnimeType); const heroLoading document.querySelector(.hero-loading); console.log(Updating hero anime box with:, currentAnime.title, at index:, index); if (heroImg && heroTitle && heroType) { // Reset image state heroImg.classList.remove(loaded); heroImg.style.display none; if (heroLoading) { heroLoading.style.display flex; } // Update image heroImg.src `/api/image-proxy?url${encodeURIComponent(currentAnime.image_url)}`; heroImg.alt currentAnime.title; // Update text heroTitle.textContent currentAnime.title; heroType.textContent currentAnime.type current ? Current Season : Top Anime; // Handle image loading heroImg.onload function() { console.log(Hero anime image loaded:, currentAnime.title); this.style.display block; this.classList.add(loaded); if (heroLoading) { heroLoading.style.display none; } }; heroImg.onerror function() { console.error(Hero anime image failed to load:, currentAnime.title); // Keep loading state if image fails if (heroLoading) { heroLoading.style.display flex; } }; } else { console.error(Hero anime box elements not found:, { heroImg: !!heroImg, heroTitle: !!heroTitle, heroType: !!heroType }); } } async function searchAnimeForDetails(title) { try { const response await fetch(`/api/search?q${encodeURIComponent(title)}&limit1`); const data await response.json(); if (data.data && data.data.length > 0) { const animeId data.data0.mal_id; window.location.href `/anime/${animeId}`; } else { // Fallback: search on MyAnimeList window.open(`https://myanimelist.net/search/all?q${encodeURIComponent(title)}`, _blank); } } catch (error) { console.error(Error searching anime:, error); // Fallback: search on MyAnimeList window.open(`https://myanimelist.net/search/all?q${encodeURIComponent(title)}`, _blank); } } let autoSlideInterval; function goToSlide(index) { const images document.querySelectorAll(.hero-slideshow-image); if (images.length 0 || index > images.length) return; // Remove active class from current slide imagescurrentSlideIndex?.classList.remove(active); // Set new active slide currentSlideIndex index; imagescurrentSlideIndex.classList.add(active); // Update hero anime box to match current slide updateHeroAnimeBox(currentSlideIndex); // Restart auto slide timer restartAutoSlide(); } function nextSlide() { goToSlide((currentSlideIndex + 1) % slideshowImages.length); } function startAutoSlide() { autoSlideInterval setInterval(nextSlide, 6000); // 6 seconds per slide console.log(Auto slideshow started); } function restartAutoSlide() { if (autoSlideInterval) { clearInterval(autoSlideInterval); startAutoSlide(); } } // Load slideshow immediately loadHeroSlideshow(); // Enhanced animations for the new homepage design // Animate stat cards on scroll const statCards document.querySelectorAll(.stat-card); const observer new IntersectionObserver((entries) > { entries.forEach(entry > { if (entry.isIntersecting) { entry.target.style.transform translateY(0); entry.target.style.opacity 1; } }); }, { threshold: 0.1 }); statCards.forEach((card, index) > { card.style.transform translateY(30px); card.style.opacity 0; card.style.transition `all 0.6s ease ${index * 0.15}s`; observer.observe(card); }); // Animate content sections on scroll const contentSections document.querySelectorAll(.content-section); const sectionObserver new IntersectionObserver((entries) > { entries.forEach(entry > { if (entry.isIntersecting) { entry.target.classList.add(animate-in); } }); }, { threshold: 0.1, rootMargin: 50px }); contentSections.forEach(section > { section.style.opacity 0; section.style.transform translateY(40px); section.style.transition all 0.8s ease; sectionObserver.observe(section); }); // Add CSS for animate-in class const style document.createElement(style); style.textContent ` .animate-in { opacity: 1 !important; transform: translateY(0) !important; } `; document.head.appendChild(style); // Enhanced button hover effects const buttons document.querySelectorAll(.btn); buttons.forEach(btn > { btn.addEventListener(mouseenter, function() { this.style.transform translateY(-3px) scale(1.02); }); btn.addEventListener(mouseleave, function() { this.style.transform translateY(0) scale(1); }); }); // Add click effects to stat cards (navigate to respective pages) statCards.forEach((card, index) > { card.style.cursor pointer; card.addEventListener(click, function() { const routes /, /top, /upcoming, /news; if (routesindex) { window.location.href routesindex; } }); }); // Parallax effect for hero section const hero document.querySelector(.hero-section); if (hero) { window.addEventListener(scroll, () > { const scrolled window.pageYOffset; const rate scrolled * -0.5; if (scrolled hero.offsetHeight) { hero.style.transform `translateY(${rate}px)`; } }); } // Staggered animation for anime cards when they load const observeAnimeCards () > { const animeCards document.querySelectorAll(.anime-card); animeCards.forEach((card, index) > { card.style.opacity 0; card.style.transform translateY(20px); setTimeout(() > { card.style.transition all 0.6s ease; card.style.opacity 1; card.style.transform translateY(0); }, index * 100); }); }; // Watch for content changes in sections const sectionContainers currentSeasonAnime, topAnimeSection, upcomingAnimeSection; sectionContainers.forEach(containerId > { const container document.getElementById(containerId); if (container) { const contentObserver new MutationObserver((mutations) > { mutations.forEach((mutation) > { if (mutation.type childList && mutation.addedNodes.length > 0) { const hasAnimeGrid Array.from(mutation.addedNodes).some(node > node.nodeType Node.ELEMENT_NODE && node.querySelector(.anime-grid) ); if (hasAnimeGrid) { setTimeout(observeAnimeCards, 200); } } }); }); contentObserver.observe(container, { childList: true, subtree: true }); } });});/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]