Scraper lengkap v2.samehadaku.how memakai Node.js + Axios + Cheerio. Semua halaman, selector, dan parser sudah dipetakan dari HTML live (tema EastPlay).
| Method | URL | Isi |
|---|---|---|
home() |
/ |
Top 10 minggu ini + Latest Episode |
latest(page) |
/anime-terbaru/page/{n} |
Episode terbaru + paginasi |
top10() |
/top10 |
Ranking mingguan |
daftar(query) |
/daftar-anime-2/ |
Grid anime + filter + paginasi |
daftarList() |
/daftar-anime-2/?list |
Mode teks A–Z |
search(q, page) |
/?s= |
Hasil pencarian |
genre(slug, page) |
/genre/{slug}/ |
Filter genre |
season(slug, page) |
/season/{slug}/ |
Filter season |
studio(slug, page) |
/studio/{slug}/ |
Filter studio |
producers(slug, page) |
/producers/{slug}/ |
Filter producers |
movies(page) |
/anime-movie/ |
Project movie |
jadwal(day?) |
/jadwal-rilis/ + REST |
Jadwal Senin–Minggu |
anime(slug) |
/anime/{slug}/ |
Detail + list episode + batch |
episode(slug) |
/{slug}/ |
Server, download, navigasi |
player(post, nume) |
admin-ajax.php |
Iframe streaming |
batch(slug) |
/batch/{slug}/ |
Paket download batch |
genres() |
form filter | Daftar genre |
const Samehadaku = require("./src");
const sh = new Samehadaku({
baseUrl: "https://v2.samehadaku.how",
delay: 300, // jeda antar request (ms)
transport: "curl", // curl | axios | auto
// Cloudflare memblokir TLS Node, jadi default-nya curl
});
(async () => {
const home = await sh.home();
console.log(home.top10[0], home.latest[0]);
const anime = await sh.anime("one-piece");
console.log(anime.info, anime.episodes[0]);
const ep = await sh.episode("one-piece-episode-1173");
const embed = await sh.player(ep.servers[0].post, ep.servers[0].nume);
console.log(embed.src);
const jadwal = await sh.jadwal("monday");
const cari = await sh.search("slime");
const daftar = await sh.daftar({
page: 1,
type: "TV",
status: "Currently Airing",
order: "popular",
genre: ["action", "fantasy"],
});
})();node examples/demo.js home
node examples/demo.js latest 1
node examples/demo.js search "one piece"
node examples/demo.js anime one-piece
node examples/demo.js episode one-piece-episode-1173
node examples/demo.js jadwal monday
node examples/demo.js daftar 1 popular
node examples/demo.js genre action 1
node examples/demo.js selectorsSemua selector ada di src/selectors.js. Ringkasan:
.topten-animesu ul li > a.series
span.rating | img | b.is-topten | span.judul
.post-show > ul > li
.thumb a img.npws
h2.entry-title a
.dtla span author → episode / posted by
.dtla span:has(.dashicons-calendar)
article.animpost .animepost
.animposx > a[rel][href]
.content-thumb img.anmsa
.content-thumb .type → TV / Movie / …
.content-thumb .score
.data .title h2
.data > .type → Completed / Ongoing
.stooltip
.metadata span.skor | type | views
.ttls → sinopsis singkat
.genres .mta a
.infoanime
h2.entry-title
.thumb img.anmsa
[itemprop=ratingValue] / [itemprop=ratingCount]
.desc .entry-content
.genre-info a[itemprop=genre]
a.play-new-episode
.listbatch a
.lstepsiode.listeps ul li
.epsright span.eps a → nomor
.epsleft span.lchx a → judul + url
.epsleft span.date
.spe > span → Japanese, Status, Type, Studio, …
h1.entry-title
[itemprop=episodeNumber] span.lg span.time-post
.naveps .nvs a | .nvs.nvsc a | .nvs.rght a
#server .east_player_option[data-post][data-nume][data-type]
#player_embed
.download-eps > p > b → MKV / MP4 / x265
.download-eps ul li strong → 360p / 480p / 720p / 1080p
.download-eps ul li span a → host + url
.lstepsiode.listeps ul li → episode lain
#the-days .east_days_option[data-day]
.result-schedule .animepost
.data .title | .content-thumb .score | .data_tw a.ltseps
REST: GET /wp-json/custom/v1/all-schedule?day=monday&perpage=50
POST /wp-admin/admin-ajax.php
action=player_ajax
post={data-post}
nume={data-nume}
type=schtml
| Field | Nilai |
|---|---|
status |
"", Currently Airing, Finished Airing |
type |
"", TV, OVA, ONA, Special, Movie |
order |
title, titlereverse, update, latest, popular |
genre[] |
action, fantasy, isekai, shounen, … (20+ slug) |
samehadaku-scraper/
├── package.json
├── README.md
├── src/
│ ├── index.js API publik (class Samehadaku)
│ ├── client.js Axios wrapper
│ ├── selectors.js Semua selector + path
│ ├── parsers.js Parser Cheerio per halaman
│ └── utils.js
└── examples/demo.js
- Situs WordPress + cache. Selector mengikuti tema
eastplay dipake 1aaa. - Streaming di-load via AJAX;
episode()hanya mengembalikan daftar server. Panggilplayer()atauplayers()untuk iframe. - Jadwal hari selain yang aktif di-load dari REST
custom/v1/all-schedule. - Batch listing lengkap ada di subdomain v1 (
v1.samehadaku.how/daftar-batch/). Halaman/batch/{slug}/di v2 tetap di-parse. - Hormati situs: pakai
delay, jangan flood request.
Apache License 2.0