Commit Graph
22 Commits
Author SHA1 Message Date
Shinei Nouzen c9acfc6131 Implement ScraperAPI and FlareSolverr proxy support
- Add proxy.helper.js with unified proxy support
- Add ScraperAPI integration (premium residential IPs)
- Add FlareSolverr integration (self-hosted browser)
- Add proxy fallback to fetchWithMirror()
- Add Cloudflare challenge detection
- Add GET /api/proxy/status endpoint
- Update mirror.helper.js with proxy integration
2026-08-14 07:46:27 +05:30
Shinei Nouzen 8f423bf39c docs: Complete documentation overhaul with live API data + bug fixes
Documentation (5800+ lines total):
- endpoints.md: All 43 endpoints documented with real response examples,
  param tables, response patterns, common workflows, error formats
- streaming.md: Complete streaming workflow guide with HLS.js/Plyr/Video.js
  integration, M3U8 proxy explanation, error handling
- examples.md: Working code examples in cURL, JS fetch, Python requests,
  Node.js axios, HTML/JS player integration (2240 lines)
- architecture.md: Full project structure, request flow diagrams, caching
  strategy, mirror failover, security, deployment notes
- index.md: Overview with quick start, feature highlights, endpoint tables

Bug fixes:
- episodeList.extractor: Parse JSON response before Cheerio (was passing
  raw JSON string as HTML, causing escaped quotes in IDs)
- episodeListAjax.extractor: Same JSON parsing fix
- topAnimeRankings.controller: Fix JSDoc and default sort from top to day
  (actual values are day/week/month, not top/newest)
- apiRoutes.js: Fix OpenAPI spec sort description for top-rankings

Tests: 35/35 passing
2026-07-30 08:28:51 +05:30
Shinei Nouzen 996cead3b1 fix: Full diagnostic sweep — bugs, dead code, unused imports, docs accuracy
Code fixes:
- seasons/watchOrder: Remove dead ternary (both branches identical)
- mirror.helper: Remove redundant ternary (both branches identical)
- topAnimeRankings: Fix JSDoc (day/week/month, not top/newest)
- apiRoutes: Fix proxy domain validation (exact match, not includes)
- apiRoutes: Fix proxy .m3u8 check (pathname, not hostname)
- pagination: Fix totalItems calculation (was overestimating)
- server.js: Remove dead has404File variable
- server.js: Remove duplicate /api/cache/stats route
- server.js: Remove unused getCacheStats import

Unused imports removed:
- animeInfo: URLS from dataUrl.js
- episodeList: headers from header.config.js
- episodeListAjax: axios
- trending: URLS from dataUrl.js
- trendingSidebar: URLS from dataUrl.js
- upcomingAnime: parseListItems
- watchPage: URLS, BASE_URL from dataUrl.js

Docs fixes:
- README: 33->38 endpoints, 24->28 controllers, 26->28 extractors
- README: Cache TTL 5min->per-endpoint, Timeout 15s->30s
- docs/index.md: 33->38 endpoints
- architecture.md: LRU cache strategy, remove stale cookie-parser
- agents: compression version, extractor/controller counts
- agents: domain typo, stale CORS dep, version badge
2026-07-30 00:50:18 +05:30
Shinei Nouzen d9f490d36e fix: OpenAPI response missing success field, Episodes Ajax test, 404 endpoint list, agent docs 2026-07-29 01:55:43 +05:30
Shinei Nouzen d391908467 feat: Add M3U8/TS proxy, fix mirror fallback, fix seasons/watch-order
New endpoints:
- GET /api/stream/proxy?url= — M3U8 playlist proxy with URL rewriting
  Rewrites relative .m3u8 and .ts URLs to proxy endpoints
  Adds CORS headers for cross-origin playback
  Validates allowed streaming domains
- GET /api/stream/ts-proxy?url= — TS video segment proxy
  Proxies .ts segments with proper Content-Type and caching

Fixes:
- seasons.extractor.js: Now extracts from watch page sidebar instead of broken AJAX endpoint
- watchOrder.extractor.js: Now extracts from watch page sidebar (trending/related)
- mirror.helper.js: 404 responses no longer mark mirrors as failed
  Only connection errors trigger mirror failover
  Endpoint-specific 404s break immediately without retry

38 total endpoints, 34/34 passing with 0 errors
2026-07-28 20:52:49 +05:30
Shinei Nouzen bdf7e96ce9 feat: Add streaming URL resolver, quality detection, and server normalization
New endpoints:
- GET /api/stream/resolve — Resolves actual m3u8/mp4 URLs from embed player URLs
  Follows chain: vidtube.site → megaplay API → m3u8 playlist
  Returns url, type, qualities, subtitles, skipData
- GET /api/stream/qualities — Parses M3U8 playlists for available quality options
  Returns sorted quality list with resolution, bandwidth, URLs

New extractors:
- streamResolver.extractor.js — Full stream resolution pipeline
  - resolveStreamUrl(): Resolves embed → actual video URL
  - parseM3u8Qualities(): Parses master playlists for qualities
  - normalizeServerName(): Maps VidPlay-1 → vidplay, HD-1 → hd
  - extractSubtitles(): Extracts subtitle tracks from API responses

Enhancements:
- streamInfo.extractor.js: Added session establishment before AJAX calls
- Server list now includes normalizedName field for each server
- Stream info now includes type (hls/mp4) and backup URL
- Server list includes typeLabel (SUB/HSUB/DUB)
- Session cookies properly maintained for AJAX stream endpoints

Architecture:
- Embed API domain mapping (vidtube.site → megaplay-1.buzz)
- M3U8 parser supports master and media playlists
- Subtitle extraction from multiple API response formats
- 36 total endpoints (was 34)
2026-07-28 20:40:17 +05:30
Shinei Nouzen d0432e1654 fix: Bug fixes from full API diagnostic sweep — all 33 endpoints now 200 OK
- Fix /api/watch 500: correct URL path format (slug/ep-N -> slug/ep-N)
- Fix /api/info: accept both ?id= and ?slug= query params
- Fix /api/status/airing 500: map short status names (ongoing/airing/completed) to correct slugs
- Fix /api/top-rankings: correct selectors (#top-anime .scaff.side.items a.item) + extract rank from rankN class
- Fix /api/completed: correct selectors (section.top-table[data-name='completed'] a.item)
- Fix /api/recently-updated: correct selectors (#recent-update .ani.items .item) + client-side tab filtering
- Fix parseListItem: detect self-as-anchor (<a> elements) + fallback slug extraction
- Fix category extractor: add status name mapping (ongoing->currently-airing, etc.)
- Add /api/cache/stats endpoint for LRU cache diagnostics
- 33 endpoints verified: 0 errors, 0 timeouts
2026-07-28 20:17:58 +05:30
Shinei Nouzen fd29b02158 feat: Add new endpoints and enhance filter — v2.2.0
New Endpoints (4 new routes):
- GET /api/upcoming — upcoming anime releases from homepage
- GET /api/top-rankings?sort=top|newest — ranked anime with sort modes
- GET /api/recently-updated?tab=all|dub|sub — filtered recent updates
- GET /api/completed — finished anime series from homepage

Enhanced Filter (/api/filter):
- Added source parameter (18 source material types)
- Added epMin/epMax for episode range filtering
- Added excludeWatchlist parameter for logged-in users
- Added season parameter (spring/summer/fall/winter)

New Config IDs:
- SOURCE_IDS: 18 source material type mappings
- SEASON_IDS: 4 broadcast season mappings
- EXTENDED_TYPE_IDS: Added tv-short and tv-special types

Total endpoints: 34 (was 30)
OpenAPI spec updated with new endpoints
CHANGELOG.md updated with comprehensive change history
2026-07-28 19:45:25 +05:30
Shinei Nouzen fe51275db0 feat: upgrade to v2.0.0 with multi-mirror fallback, new endpoints, and LRU cache
- Add multi-mirror fallback system with 5 mirror domains
- Add LRU cache with configurable TTL per endpoint
- Add response compression (gzip)
- Add Seasons endpoint (/api/seasons/:id)
- Add Watch Order endpoint (/api/watch-order/:id)
- Add Latest Updated endpoint (/api/latest-updated)
- Add Download endpoint (/api/download)
- Add cache stats endpoint (/api/cache/stats)
- Add mirror status/reset endpoints (/api/mirrors, /api/mirrors/reset)
- Add configurable rate limiting with X-RateLimit headers
- Add request timeouts and entity too large handling
- Update documentation with all new endpoints
- Update CHANGELOG.md with v2.0.0 entry
- Update package.json version to 2.0.0
- Add 6 AI agent prompts for development
2026-07-04 15:07:07 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ f43522c4d5 v1.9.1: Fix require path for package.json
require('../package.json') resolved to src/package.json (wrong).
Changed to require('../../package.json') to reach project root.
2026-06-09 06:13:21 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ cc145c9acc v1.9.1: Fix 4 critical bugs from sed operations
- apiRoutes.js: Moved imports outside comment block (caused 500 on all endpoints)
- test.js: Deleted orphaned duplicate code after function close
- random.controller.js: Removed stray closing brace breaking try/catch
- cache.helper.js: Added missing MAX_CACHE_SIZE constant

These bugs were introduced by sed insert commands placing code in wrong positions.
The API was returning 500 FUNCTION_INVOCATION_FAILED on all endpoints.
2026-06-09 06:11:51 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 100b9f9414 v1.9.0: Full diagnostic sweep - 42 issues fixed
Critical fixes (7):
- Added global Express error handler (returns JSON instead of HTML)
- Removed caching from random endpoint (defeated purpose)
- Renamed share.jpg to share.png (MIME type mismatch)
- Fixed OG image dimensions (630 → 601)
- Fixed manifest.json icon sizes (192x192 → 512x512)
- Fixed implicit global event variable in console
- Added 9 missing endpoints to docs/endpoints.md

High fixes (12):
- Imported version from package.json (no hardcoded drift)
- Added dynamic endpoint count in stats
- Added input sanitization for mapper API (SSRF prevention)
- Added homepage caching (reduced 5 duplicate HTTP requests)
- Added rate limiting (100 requests/minute per IP)
- Added rel="noopener noreferrer" to all target="_blank" links
- Fixed trailing slash inconsistency in console
- Added noindex meta to 404.html
- Fixed docs/architecture.md controller filenames and dependency versions
- Fixed README.md dependency versions
- Added 12 missing endpoint tests

Medium fixes (22):
- Added escapeHtml helper for error messages
- Consistent favicon across all pages
- Added meta descriptions to privacy.html and tos.html
- Added OG/Twitter meta tags to privacy.html and tos.html
- Added aria-label to playground inputs
- Added aria-hidden to decorative SVGs
- Synced Twitter description with OG description
- Fixed robots.txt to disallow /api
- Added PWA fields to manifest.json
- Removed 5 unused imports
- Removed unused cookie-parser dependency
- Fixed inconsistent error handling in extractors
- Fixed resolvedSlug returning numeric ID
- Added /watch endpoint to streaming docs
- Improved test assertions and status code validation
- Deleted orphaned og-image.svg and logo.png

Low fixes (11):
- Removed redundant try/catch from extractPages
- Added max size eviction to cache
- Added cache key sorting in filter controller
- Added author meta tag
- Fixed favicon.svg font

Version bumped to 1.9.0
2026-06-09 06:00:37 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 5ad3189b8a v1.8.0: Full diagnostic sweep - 20 bugs fixed
Critical fixes:
- extractPages.helper.js: Pagination URL bug (?page → &page)
- package.json: Fixed invalid dep versions (axios, dotenv, express)
- privacy.html + tos.html: Broken footer links (//tos → /tos)
- manifest.json: Invalid icon purpose (any maskable → maskable)

High fixes:
- server.js: Removed duplicate CORS middleware (triple → single)
- search.controller.js: Cache key collision with suggestion controller
- apiRoutes.js: Dynamic endpoint count (was hardcoded 27)
- vercel.json: Removed duplicate CORS header

Medium fixes:
- header.config.js: Updated User-Agent to Chrome 130
- dataUrl.js: Removed redundant domain from ALT_DOMAINS
- category.extractor.js: Removed unused cheerio import
- server.js: Added __dirname, removed unused cors import

Documentation:
- CHANGELOG.md: Added v1.8.0 entry
- README.md: Updated version badges (1.8.0, Express 4.21)
- test.js: Fixed status endpoint (currently-airing → airing)
2026-06-09 05:14:56 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ e203761789 chore: bump version to 1.7.3 2026-06-09 04:52:07 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 0015e779ea fix: health endpoint typo and request counter middleware order 2026-06-09 04:51:26 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ e9b0fba22b feat: add health, stats, OpenAPI, security headers, tests
- /api/health — uptime, version, memory usage
- /api/stats — request count, error rate, cache info
- /api/openapi — OpenAPI 3.0.3 specification
- Security headers: X-Frame-Options, X-Content-Type-Options, X-XSS-Protection
- Request counter middleware
- CONTRIBUTING.md — contribution guidelines
- test.js — integration test suite (18 endpoints)
2026-06-08 22:08:38 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ b1eb899aa9 v1.7.0: Rebrand AniKatoAPI → AniKotoAPI
BREAKING: Complete project rebrand across 66 files
- AniKatoAPI → AniKotoAPI (project name)
- AniKato → AniKoto (brand references)
- anikato.vercel.app → anikoto.vercel.app (URLs)
- anikototv.to preserved (source website domain)
- Updated: README, package.json, server.js, all controllers,
  extractors, configs, routes, public pages, legal docs
2026-06-08 19:41:00 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 0034617c3b v1.5.0: Complete documentation rewrite - 50+ files with AlisaReactionBot style
- Box-style header comments (Project, Author, License) on every file
- Section headers using double-line box decorators
- Feature markers (// ---- FEATURE: XYZ ----) before every major function
- JSDoc comments for EVERY function with @param, @returns, @example
- Inline notes (NOTE, WARNING, TIP) for non-obvious logic
- Footer END markers on every module
- Matched code style to AlisaReactionBot repository
- All files now searchable by feature name via grep

Author: Shinei Nouzen <157171073+Shineii86@users.noreply.github.com>
2026-06-08 16:14:01 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 8269dcea8b fix: critical fixes for 14 broken endpoints
- Fixed ALL CSS selectors to match actual anikototv.to HTML
- Fixed search results returning empty data array
- Fixed anime info returning empty fields
- Fixed episode list returning 0 episodes
- Fixed most-popular returning empty data
- Fixed random endpoint 500 error
- Fixed filter endpoint 500 error
- Fixed suggestions returning empty array
- Added /api/genre/:name and /api/type/:name routes
- Fixed watch page server/episode extraction
- Fixed rating field to return clean value
2026-06-08 15:54:22 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 8e201ccb10 feat: complete streaming and AJAX endpoint support
- Add stream URL extraction via /ajax/server?get={linkId}
- Add mapper API integration for gogoanime/anivibe servers
- Add /api/seasons/:id endpoint
- Add /api/watch-order/:id endpoint
- Add /api/episodes-ajax/:id endpoint
- Add /api/servers endpoint
- Add genre/type/status/rating ID mappings
- Fix filter to use correct numeric IDs
- Fix watch page data attribute extraction
2026-06-08 15:44:30 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 47789b2444 feat: add complete API endpoints for full website
- Add /api/watch endpoint for watch page data
- Add /api/az-list for alphabetical browsing
- Add /api/new-release and /api/newly-added
- Add /api/status for ongoing/completed lists
- Add /api/trending-sidebar for sidebar data
- Update README with all new endpoints
- Update CHANGELOG
2026-06-08 15:34:37 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 3815521b0d feat: initial project setup for AniKatoAPI
- Express.js server with Vercel deployment support
- Complete API endpoints for anikototv.to anime data
- Home, search, info, episodes, stream, schedule endpoints
- Category filtering and genre support
- Caching system with 5-minute TTL
- CORS configuration
- Public documentation page
- Docker and Render deployment configs
- MIT License
2026-06-08 15:08:22 +05:30