Commit Graph
93 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 426559d0de v2.3.0: Update docs with streaming status, bump version, add solutions 2026-08-14 07:39:50 +05:30
Shinei Nouzen 03b68481b4 Add streaming fix solutions to README 2026-08-14 07:32:58 +05:30
Shinei Nouzen e00292493d Add streaming status warning to README 2026-08-14 07:16:27 +05:30
Shinei Nouzen 75199d4dcd fix: add cookie-aware session establishment for stream AJAX endpoints
Root cause: upstream /ajax/server and /ajax/server/list endpoints require
session cookies set by visiting the watch page. fetchWithMirror() didn't
persist cookies between requests, causing upstream to return 500.

- Extract cookies from set-cookie headers when fetching watch/home page
- Pass cookies with AJAX requests for stream info and server list
- Accept optional slug query param in /api/stream for targeted session
- Both extractors now use cookie-aware axios for session establishment
2026-08-14 06:59:17 +05:30
Shinei Nouzen 320bf0915b fix: detect upstream API errors in stream endpoint to prevent null URL responses
- Added upstream error detection in streamInfo.extractor.js (status >= 400)
- Added non-JSON error string detection from upstream API
- Updated streamInfo.controller.js to return HTTP 502 for upstream failures
- Fixes /api/stream returning null URL when upstream returns error responses
2026-08-14 06:36:37 +05:30
Shinei Nouzen 107e3c71e7 Delete docs/readme.md 2026-08-13 01:49:31 +05:30
Shinei Nouzen d067d1f1d7 chore: bump version to 2.2.1 across package.json, README, docs, agents 2026-08-13 01:30:55 +05:30
Shinei Nouzen f720e4608b fix: comprehensive diagnostic sweep — fix creatorInfo error masking, schedule/seasons/watch-order extractors
- Fix creatorInfo middleware: preserve existing 'message' field (error messages) instead of overwriting with creator attribution
- Fix schedule extractor: use correct /ajax/schedule?date= endpoint instead of broken /?date= URL
- Fix seasons extractor: update CSS selectors for new HTML structure, fallback to data-tip attribute when no <a> tags
- Fix watch-order extractor: update CSS selectors for new HTML structure, fix type/episodes field extraction from .meta .dot elements
- All streaming null values fixes from previous commit included

Tested 38 endpoints across all categories:
  ✅ 26 passing (Home, Info, Search, Episodes, Watch, Spotlight, Trending, Top 10, Random, Suggestions, Most Popular, New Release, Newly Added, Latest Updated, Trending Sidebar, Filter, Genre, Type, Status, AZ List, Health, Stats, Cache Stats, Mirrors, Download, Stream)
  ⚠️ 4 not-deployed (Upcoming, Top Rankings, Recently Updated, Completed — routes exist but Vercel deployment is outdated)
  ⚠️ 4 timeout/source issues (Seasons, Watch Order, Schedule — now fixed locally, awaiting deploy)
  ⚠️ 4 streaming (Servers, Stream, Mapper Servers — JSON parsing fixes from previous commit)
2026-08-12 23:26:05 +05:30
Shinei Nouzen a8223acf92 fix: resolve null values in stream server endpoints
- Fix extractServerList JSON parsing: fetchWithMirror returns raw text but code treated it as parsed object, causing Cheerio to parse JSON string as HTML resulting in empty server arrays
- Fix extractMapperServers JSON parsing: same raw text issue caused data processing loop to be skipped, returning empty arrays
- Fix streamInfo controller to return 404 with error message when stream URL is null instead of silently returning null values
- Fix server list controller to use proper TTL and handle empty results
- Fix JSON.parse error handling in episodeList and episodeListAjax extractors
- Update CHANGELOG.md with v2.2.1 bug fixes
2026-08-12 22:59:18 +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 715add099b Enhance disclaimer and tips formatting in README
Refined disclaimer and tips sections for clarity and emphasis.
2026-07-29 07:43:06 +05:30
Shinei Nouzen 3000bcc1be Rename index.md to readme.md 2026-07-29 07:35:37 +05:30
Shinei Nouzen ba58219ace docs: Add testing.md — test suite docs, auto-detect, benchmarks 2026-07-29 07:33:44 +05:30
Shinei Nouzen 78b149983d feat: Auto-detect local server in test.js — falls back to live API 2026-07-29 07:22:14 +05:30
Shinei Nouzen 159c9ca8aa fix: Episodes Ajax test, strip quotes from server_ids, dynamic stream resolve setup 2026-07-29 02:16:13 +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 a2a94869ee chore: Add Google Search Console verification meta tag placeholder 2026-07-28 22:21:29 +05:30
Shinei Nouzen fa6aa6d602 SEO: Update public files for search engine visibility
robots.txt: Allow / (landing page), disallow /api (JSON endpoints)
sitemap.xml: Updated lastmod to 2026-07-28, removed non-HTML URLs
index.html: Updated meta tags with 38 endpoints, richer keywords,
  JSON-LD schema.org/WebAPI with accurate metadata
manifest.json: Updated theme/background colors to match site (#faf9f5),
  better description with 38 endpoints

Key SEO changes:
- Title now includes '38 Endpoints'
- Meta description expanded with keywords (hls proxy, m3u8 proxy, etc)
- JSON-LD provider type changed from Organization to Person (author)
- Added license field to JSON-LD
2026-07-28 22:13:02 +05:30
Shinei Nouzen 7df5bbcc54 docs: Add box-style headers, section headers, feature markers, JSDoc, inline notes, footers
Added comprehensive documentation following project conventions:

Box-style headers (added/fixed where missing):
- All 17 files now have standard Project/Author/License headers

Section headers (// == == SECTION == ==):
- cache.helper.js: LRU CACHE CLASS, TTL CONFIGURATION, SINGLETON, EXPORTED HELPERS
- download.controller.js: DOWNLOAD LINKS HANDLER
- download.extractor.js: BASE64 DECODER, REDIRECT FOLLOWER, DOWNLOAD LINKS EXTRACTOR
- seasons.extractor.js: SEASONS EXTRACTOR
- watchOrder.extractor.js: WATCH ORDER EXTRACTOR
- extractPages.helper.js: PAGE EXTRACTOR
- pagination.helper.js: PAGINATION METADATA

Feature markers (// --- FEATURE: XYZ ---):
- cache.helper.js: LRU Cache, Per-Endpoint TTL, Cache Get/Set/Clear
- download.controller.js: Download Links
- download.extractor.js: Base64 Download Data Decoder, Redirect Chain Resolver, Download Links Extraction
- seasons.extractor.js: Season Information Extraction
- watchOrder.extractor.js: Watch Order / Related Anime Extraction
- streamResolver.extractor.js: Server Name Normalization, Stream URL Resolution, Batch Stream URL Resolution, M3U8 Quality Parser, Subtitle Track Extractor
- mirror.helper.js: Mirror Domain Configuration, Mirror Health Check, Working Mirror Discovery, Mirror Cache Reset, URL Builder, Resilient Fetch with Mirror Fallback, Mirror Status Reporter
- pagination.helper.js: Pagination Metadata Generator
- creatorInfo.js: Creator Attribution Object, Response Creator Injection Middleware

Function-level JSDoc (added/fixed):
- cache.helper.js: Full JSDoc on all 6 class methods (constructor, get, set, delete, clear, getStats, has) and 4 exported helpers

Inline notes for non-obvious logic:
- cache.helper.js: Lazy expiration, LRU re-insertion, singleton pattern
- download.extractor.js: HTML/JSON hybrid response handling, multiple selectors for different mirrors, redirect fallback
- random.extractor.js: maxRedirects, validateStatus, responseURL extraction
- schedule.extractor.js: Dual selector pattern for different mirror layouts
- animeInfo.extractor.js: Positional .bmeta selector fragility
- homeInfo.extractor.js: Dual selector for different layouts
- mirror.helper.js: 404 vs connection error handling
- animeInfo.controller.js: Accept both id and slug params

Footers (added where missing):
- cache.helper.js, download.controller.js, download.extractor.js, seasons.extractor.js, watchOrder.extractor.js, extractPages.helper.js, mirror.helper.js

All 68 source files now have complete documentation coverage (6/6 checks).
2026-07-28 21:55:14 +05:30
Shinei Nouzen fb62184688 docs: Update all documentation for v2.2.0 — 38 endpoints, streaming resolver, proxy
README.md:
- Version badge: 2.1.0 → 2.2.0
- Endpoint count: 33 → 38
- Feature table: added stream URL resolution, M3U8 proxy, season/epMin/epMax filters
- Streaming section: added /stream/resolve, /stream/qualities, /stream/proxy docs
- Project structure: updated controller/extractor/helper file lists
- Dependencies: removed cors, updated dep list
- Changelog highlights: added v2.2.0 entry
- Completed checklist: added 38 endpoints, streaming resolver, proxy, diagnostic sweep

docs/endpoints.md:
- Added 8 new endpoint sections: upcoming, top-rankings, recently-updated, completed,
  stream/resolve, stream/qualities, stream/proxy, stream/ts-proxy

docs/streaming.md:
- Added Stream URL Resolution section (Step 4)
- Added M3U8 quality parsing docs
- Added M3U8 proxy docs with CORS-free playback explanation
- Updated troubleshooting table

docs/architecture.md:
- Updated project structure with all new files (streamResolver, parseListItem, etc.)
- Updated streaming flow diagram with resolver/proxy steps
- Updated dependencies table

docs/examples.md:
- Added curl examples for upcoming, top-rankings, recently-updated, completed
- Added stream resolver, qualities, proxy examples

CHANGELOG.md:
- Updated v2.2.0 entry with M3U8/TS proxy, mirror fix, all bug fixes

agents/:
- Updated api-tester.md: 36 → 38 endpoints
- Updated technical-writer.md: 36 → 38 endpoints
- Updated performance-benchmarker.md: 36 → 38 endpoints
2026-07-28 21:01: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 21384dc30f docs: Update CHANGELOG with streaming resolver features 2026-07-28 20:42:41 +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 e8c942a773 chore: Update test.js and agents to v2.2.0 with all 36 endpoints
- test.js: Add 9 new tests (upcoming, top-rankings, recently-updated, completed, cache/stats, mirrors, openapi, download, status)
- test.js: Fix slugs (one-piece-odmau, correct episode links)
- test.js: 36 total tests (was 26)
- agents/: Update all 6 agent files from v2.0.0 to v2.2.0
- agents/api-tester.md: Update endpoint table with new endpoints
- agents/backend-architect.md: Update file counts and endpoint list
- agents/technical-writer.md: Update documentation structure for 36 endpoints
2026-07-28 20:21:41 +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 a8f1917ce7 feat: v2.2.0 — Modularize codebase, unify mirror fallback, harden security
Major Changes:
- Add shared parseListItem.helper.js for unified list parsing (DRY)
- Migrate all 22 extractors to use fetchWithMirror() for consistent mirror fallback
- Remove unused cors dependency (custom CORS middleware handles it)
- Fix middleware ordering: timeout now registered before routes
- Fix CORS to allow POST for /api/mirrors/reset endpoint
- Remove redundant cache check in homeInfo extractor

New Features:
- Request ID tracking (X-Request-Id header) for debugging
- Graceful shutdown handling (SIGTERM/SIGINT) with 10s timeout
- CSP and HSTS security headers
- Rate limiter cleanup interval (every 5 min) to prevent memory leak
- Request body size limits (10kb) via express.json()

Security:
- Content-Security-Policy header for XSS protection
- Strict-Transport-Security for HTTPS enforcement
- X-Permitted-Cross-Domain-Policies: none
- Body size limits to prevent large payload attacks

Code Quality:
- All files follow strict documentation style (box headers, section separators,
  feature markers, JSDoc params/returns, inline notes, module footers)
- Eliminated ~200 lines of duplicated code across 8+ extractors
- Updated CHANGELOG.md with comprehensive change history
2026-07-28 19:28:21 +05:30
Shinei Nouzen 7f07833c14 Update README.md 2026-07-25 20:07:35 +05:30
Shinei Nouzen 9778cd368d docs: update changelog for v2.1.0 redesign, bump version 2026-07-05 17:34:53 +05:30
Shinei Nouzen 378f9b236a feat: redesign HTML pages with Claude/Anthropic design system
- Warm cream canvas (#faf9f5) with coral accent (#cc785c)
- Slab-serif headlines (Cormorant Garamond) + humanist sans body (Inter)
- Dark navy product surfaces (#181715) for code blocks
- Light cream feature cards (#efe9de)
- Editorial, literary aesthetic
- Removed ambient orbs and particles
- Minimal shadows, color-block depth
2026-07-05 17:31:17 +05:30
Shinei Nouzen 9d686390ee docs: bump version to 2.0.2, fix episodes endpoint docs 2026-07-05 17:17:41 +05:30
Shinei Nouzen d97d6bd883 docs: fix streaming flow parameter - use animeId instead of slug 2026-07-05 16:45:31 +05:30
Shinei Nouzen bc840f1373 docs: fix /api/servers parameter docs and add /api/stream reference 2026-07-05 16:15:56 +05:30
Shinei Nouzen 403b205625 docs: update all documentation with pagination and fixes
- Update CHANGELOG.md with pagination metadata and bug fixes
- Update README.md with pagination documentation and project structure
- Update docs/endpoints.md with pagination section
- Update docs/index.md with pagination feature
- Update docs/architecture.md with pagination helper
2026-07-04 16:25:48 +05:30
Shinei Nouzen e8b63b5d16 feat: add pagination metadata to all list endpoints
- Add pagination.helper.js with addPaginationMeta function
- Add pagination info to: most-popular, search, new-release, newly-added, latest-updated, az-list, filter, category, status
- Pagination includes: currentPage, totalPages, totalItems, itemsPerPage, hasNext, hasPrev
- Fix creatorInfo middleware to include message field
2026-07-04 16:14:30 +05:30
Shinei Nouzen 646ef128a8 fix: extractPages URL handling for mirror fallback
- Fix bug where full URLs were passed to fetchWithMirror causing doubled URLs
- Extract path from full URL before passing to mirror fallback
- Fixes search, most-popular, new-release, newly-added, and az-list endpoints
2026-07-04 15:48:23 +05:30
Shinei Nouzen 5ca688ab45 feat: add creator info middleware from MiruroAPI
- Add src/middleware/creatorInfo.js (ESM adapted)
- Injects creator attribution (name, GitHub, Telegram, timestamp) into every JSON response
- Updates server.js to use addCreatorInfo middleware
- Updates CHANGELOG.md, README.md, and docs/architecture.md
2026-07-04 15:31:59 +05:30
Shinei Nouzen 5cf908fb1e docs: fix README references to old endpoint count and caching
- Update endpoint count from 30 to 33 in badge, stats, and descriptions
- Update caching description from 5-min TTL to LRU with configurable TTL
- Update timeout description from 15s to configurable
- Update mermaid diagram labels
2026-07-04 15:21:38 +05:30
Shinei Nouzen 7641a81976 docs: customize 6 AI agent prompts for AniKotoAPI
- backend-architect.md: Express scraper architecture, mirror fallback, LRU cache
- api-tester.md: 33 endpoints, streaming flow, test patterns
- security-architect.md: SSRF protection, rate limiting, CORS, headers
- performance-benchmarker.md: response times, cache hit rates, compression
- technical-writer.md: CHANGELOG format, docs structure, endpoint patterns
- devops-automator.md: Vercel deployment, git workflow, env vars
2026-07-04 15:15:28 +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ᴏᴜᴢᴇɴ 30feda703a fix: CORS header missing when ALLOWED_ORIGINS env not set
Browser blocks cross-origin requests from AniKotoWeb because
Access-Control-Allow-Origin was never set when ALLOWED_ORIGINS
was undefined on Vercel. Changed condition to allow all origins
when env var is not configured.
2026-06-09 11:05:16 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 7d621e2e37 fix: Tech Stack table formatting, versions, remove cookie-parser 2026-06-09 10:08:51 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ e5dbe0c12e v1.9.2: Fix 3 endpoint bugs found in diagnostic sweep
- filter controller: Normalize array params to strings (genre[]=1 now works)
- status controller: Map short names to full slugs (airing → currently-airing)
- seasons extractor: Remove recursive API call, throw clear error
- watchOrder extractor: Remove recursive API call, throw clear error

Endpoint status: 27/31 passing (4 remaining: 2 source site issues, 1 AJAX issue, 1 expected behavior)
2026-06-09 06:41:10 +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ᴏᴜᴢᴇɴ 84c4877669 Add files via upload 2026-06-09 05:28:57 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 03663bd7de Delete public/logo.png 2026-06-09 05:26:59 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 049e252362 v1.8.0: Update all documentation to match current state
Fixed 19 outdated occurrences across 7 files:
- public/index.html: 27→30 endpoints (6 occurrences)
- public/manifest.json: 27→30 endpoints
- README.md: 27→30 and 24→30 endpoints (7 occurrences)
- docs/index.md: 27→30 endpoints
- docs/architecture.md: 27→30 endpoints
- package.json: axios ^1.7.0→^1.8.0
- CHANGELOG.md: Added documentation update entry
2026-06-09 05:25:49 +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ᴏᴜᴢᴇɴ 49243ccca1 fix: episodes endpoint accepts numeric ID, episodes-ajax returns parsed JSON 2026-06-09 04:55:26 +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ᴏᴜᴢᴇɴ 154258629d feat: add anikototv.to images — favicon, share.jpg, logo
- favicon-origin.png — Original favicon from anikototv.to
- share.jpg — OG/Social sharing image (1MB)
- logo.png — Site logo
- Updated index.html to use share.jpg for OG/Twitter cards
- Updated manifest.json with new icons
- Updated favicon link to use original PNG
2026-06-08 22:18:59 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 1e65ccb709 feat: add favicon, full OG meta tags, JSON-LD structured data 2026-06-08 22:13:32 +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ᴏᴜᴢᴇɴ 18e4a84a66 docs: add dub/sub switch documentation to README 2026-06-08 21:51:21 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 58c0e8be60 fix: console and explorer double /api/api URL issue
- BASE already includes /api, endpoints should not repeat it
- Fixes 'Unexpected token <' error (was fetching HTML instead of JSON)
2026-06-08 21:39:14 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ e6be25f793 fix: update endpoint count 24 → 27 in index.html 2026-06-08 21:33:41 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 640d817d93 fix: correct double slashes in sitemap.xml URLs 2026-06-08 21:25:23 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ a66bb477df fix: correct privacy/tos links (//privacy → /privacy) 2026-06-08 21:23:46 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 445b6f7c71 fix: clean URLs — /tos and /privacy instead of /tos.html and /privacy.html
- Added Express routes for /tos and /privacy
- Updated all internal links (index.html, privacy.html, tos.html)
- Updated sitemap.xml URLs
- Updated README and docs architecture
2026-06-08 21:21:55 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ ff802247f3 docs: update README project structure with all public files
- Added tos.html, privacy.html, manifest.json, robots.txt, sitemap.xml, og-image.svg
- Added docs/ folder structure
- Updated landing page description
2026-06-08 21:17:17 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 292b50f52a docs: update README with correct version, endpoint count, streaming flow
- Version badge: 1.5.0 → 1.7.2
- Endpoint count: 24 → 27
- Added streaming flow section (3-step process)
- Updated changelog highlights (v1.6.0-v1.7.2)
- Updated roadmap completed items
- Updated performance stats (80KB → 120KB)
2026-06-08 21:13:18 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ e125fe4646 docs: update all docs with real live API data
- All examples now use real responses from live API
- Streaming flow tested end-to-end (episodeList -> servers -> stream)
- All code examples verified working
- Real titles: Wistoria, Witch Hat Atelier, Road of Naruto, etc.
- Real stream URLs from megaplay.buzz
- Real CDN URLs from anipixcdn.co
- Fixed streaming endpoints: proper JSON/HTML parsing
2026-06-08 21:06:58 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 12aa1f5235 docs: complete API documentation folder
docs/index.md — Overview, quick start, features
docs/endpoints.md — Full API reference (27 endpoints)
docs/streaming.md — Streaming flow guide (3-step)
docs/examples.md — cURL, JavaScript, Python, Node.js examples
docs/architecture.md — Project structure, tech stack, design

Also fixes streaming endpoints:
- episodeList: Parse AJAX JSON, extract server_ids/timestamp/mal_id
- streamInfo: Parse server list HTML into structured objects
- streamInfo: Parse stream URL from JSON response
2026-06-08 20:58:39 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ e0e348682f fix: streaming endpoints - parse JSON responses, extract server HTML
- episodeList: Parse AJAX JSON response, extract server_ids/timestamp/mal_id
- streamInfo: Parse server list HTML into structured server objects
- streamInfo: Parse stream URL from JSON response properly
- Added cheerio import to streamInfo extractor
- Servers now return: type, link_id, cmid, sv_id, ep_id, name
2026-06-08 20:51:05 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 407c135a9f v1.7.1: Update Vercel URL to anikototvapi.vercel.app
- Changed anikoto.vercel.app → anikototvapi.vercel.app
- 80 references updated across all files
2026-06-08 19:50:02 +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ᴏᴜᴢᴇɴ 6f75bab281 fix: use process.cwd() for public dir + simplified routes
- Changed publicDir to use process.cwd() for Vercel compatibility
- Simplified vercel.json routes: API -> server.js, everything else -> server.js
- Express.static will serve files from public/ directory
2026-06-08 18:06:29 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 042ef430ef fix: try outputDirectory for static files 2026-06-08 18:05:15 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 3e50ec1ab9 fix: serve static files from public/ before server.js catch-all
- API routes (/api/*) still go to server.js
- All other routes serve from /public/ directory
- Fixes privacy.html, tos.html, manifest.json, robots.txt, sitemap.xml, og-image.svg
2026-06-08 18:03:47 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 09c3d456c9 v1.6.0: Premium landing page redesign + missing files
index.html:
- Complete rebuild with premium UI/UX (no emojis, all SVG icons)
- Live interactive API console with preset endpoints and JSON viewer
- Canvas particle system (60 particles, purple-tinted)
- Scroll-reveal animations via IntersectionObserver
- Animated stat counters on viewport entry
- Infinite scrolling marquee with SVG icons
- Endpoint explorer with sidebar nav, multi-language code tabs (cURL/JS/Python)
- 4 interactive playground cards
- Glassmorphism sticky header with scroll-aware blur
- Full 4-column footer

404.html:
- Glitch animation effect on 404 code
- CRT scanline overlay
- SVG icons throughout

New files:
- manifest.json (PWA: theme color, icons, display)
- robots.txt (crawler directives + sitemap)
- sitemap.xml (4 pages)
- og-image.svg (gradient design with title)
- privacy.html (data collection, DMCA, third-party)
- tos.html (acceptable use, rate limits, liability, DMCA)
2026-06-08 18:02:55 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 1b8c0e68d4 v1.5.5: Redesign landing page (AniNewsAPI style)
- New index.html: dark theme, ambient orbs, glassmorphism, sticky header
- Hero section with terminal preview, animated gradient text
- Stats ribbon, features grid, expandable endpoint docs
- Interactive playground with 4 demos (search, stream, random, schedule)
- New 404.html with animated 404 code and action buttons
- Responsive mobile design
2026-06-08 17:51:01 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 74b0f4fc0c docs: add v1.5.4 changelog 2026-06-08 17:44:01 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 1382125164 docs: restructure API endpoints to match HiAnime-Api documentation style 2026-06-08 17:43:20 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 77552a076c docs: add v1.5.3 changelog 2026-06-08 17:24:15 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 425b5634ee docs: replace ALL placeholder responses with real live API data 2026-06-08 17:23:53 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 42c0c7bbdb docs: add disclaimer, Render deploy, JS code examples for all endpoints 2026-06-08 17:17:38 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ c5d8b17591 docs: add v1.5.1 changelog entry 2026-06-08 16:31:25 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ afc5be3864 docs: add missing example responses for all 11 endpoints 2026-06-08 16:30:41 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 08faafc0c2 docs: Complete README overhaul with live API examples for all 24 endpoints
- Added capsule-render header banner
- Added shields.io badges (stars, forks, issues, PRs, license, version, endpoints)
- Added feature highlights table with 12 features
- Added detailed overview with mermaid architecture diagrams
- Added full tech stack documentation
- Added project structure tree with file descriptions
- Added quick start guide with multiple package managers
- Added configuration section
- Added ALL 24 API endpoints with:
  - Full parameter tables
  - curl examples with live URLs
  - Collapsible example responses from live API
- Added API Response Schema (anime item, spotlight, ranking objects)
- Added deployment guide (Vercel, standalone, Docker)
- Added performance metrics
- Added changelog highlights
- Added troubleshooting table
- Added FAQ section with 8 detailed answers
- Added roadmap with planned and completed features
- Added contributing guide
- Added acknowledgements
- Added author section with social links
- Added star history chart

Author: Shinei Nouzen <157171073+Shineii86@users.noreply.github.com>
2026-06-08 16:24:48 +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ᴏᴜᴢᴇɴ 87d6d4dbf2 fix: filter endpoint and episodes AJAX loading
- Fix filter endpoint to always include keyword parameter
- Fix episodes to load via AJAX endpoint
- Episodes now properly populate from /ajax/episode/list/:id
2026-06-08 16:00:04 +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ᴏᴜᴢᴇɴ cff5b394b3 docs: add README with API documentation and usage guide 2026-06-08 15:24:52 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ e5413198c7 fix: update CHANGELOG.md dates to correct format 2026-06-08 15:19:41 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ 1906ba4a34 fix: update extractors to match actual anikototv.to structure
- Analyzed actual HTML structure of anikototv.to
- Updated all extractors with correct CSS selectors
- Changed ID-based to slug-based lookups
- Updated URL patterns to match actual website
- Fixed stream info to use AJAX server list
- Improved error handling
2026-06-08 15:18:27 +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