Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Samehadaku Scraper

Scraper lengkap v2.samehadaku.how memakai Node.js + Axios + Cheerio. Semua halaman, selector, dan parser sudah dipetakan dari HTML live (tema EastPlay).

Halaman yang didukung

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

Pemakaian

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"],
  });
})();

CLI

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 selectors

Selector (ringkas)

Semua selector ada di src/selectors.js. Ringkasan:

Home / Latest

.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)

Kartu katalog (daftar, search, genre, season, studio, movie)

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

Detail anime

.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, …

Episode

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

Jadwal

#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

Player AJAX

POST /wp-admin/admin-ajax.php
  action=player_ajax
  post={data-post}
  nume={data-nume}
  type=schtml

Filter daftar

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)

Struktur project

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

Catatan

  • Situs WordPress + cache. Selector mengikuti tema eastplay dipake 1aaa.
  • Streaming di-load via AJAX; episode() hanya mengembalikan daftar server. Panggil player() atau players() 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.

Lisensi

Apache License 2.0

About

REST API scraper dari Samehadaku

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages