Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

hakuneko

Package Overview
Dependencies
Maintainers
1
Versions
142
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hakuneko

Scraper for manga and anime websites

  • 0.2.120
  • npm
  • Socket score

Version published
Weekly downloads
240
increased by1100%
Maintainers
1
Weekly downloads
 
Created
Source

Table of Content

  • General
  • KissManga
  • KissAnime

General

HakuNeko provides parsers to access mangas/animes from some selected websites.

Include the module:

var hakuneko = require( 'hakuneko' );

Mangas and animes sharing the same structures, but are slightly different in their meanings. Chapters in a manga are equivalent to episodes in an anime. Some fields will be left blank, because they are not necessary for an anime episode. Pages in a chapter are equivalent to resolutions (qualities) for an anime episode.

Creating structures:

manga = hakuneko.base.createManga( 'Title', '/Manga/Mirai-Nikki' );
chapter = hakuneko.base.createChapter( '[VOL]', '[NR]', 'Title', 'lang', 'scanlator', '/Manga/Mirai-Nikki/0?id=53068', [] );
// add page to chapter
chapter.p.push( 'http://s.imgur.com/images/imgur-logo.svg' );
// dump manga and chapter
console.log( manga, chapter );

anime = hakuneko.base.createAnime( 'Title', '/Anime/Mirai-Nikki' );
episode = hakuneko.base.createEpisode( '', '[NR]', 'Title', 'lang', '', '/Anime/Mirai-Nikki/0?id=53068', [] );
// add quality/resolution to episode
episode.p.push( 'http://s.imgur.com/images/imgur-logo.mp4?q=720p' );
// dump anime and episode
console.log( anime, episode );

Manga Structure:

MemberDescription (If Manga)Description (If Anime)
manga.tTitleTitle
manga.uURL of originURL of origin

Chapter Structure:

MemberDescription (If Manga)Description (If Anime)
chapter.vChapter volume-
chapter.nChapter numberEpisode number
chapter.tChapter titleEpisode title
chapter.gChapter Scanlator group-
chapter.lChapter language-
chapter.uURL of originURL of origin
chapter.pPage list (array)Resolution list (array)
page.nPage numberEpisode resolution identifier (e.g. '480p')
page.uURL to imageURL to video

JSON Example (Manga/Anime):

{
  "t": "Title",
  "u": "/Manga/Mirai-Nikki"
}

JSON Example (Chapter/Episode):

{
  "v": "[VOL]",
  "n": "[NR]",
  "t": "Title",
  "l": "lang",
  "g": "scanlator",
  "u": "/Manga/Mirai-Nikki/0?id=53068",
  "p": [
    "http://s.imgur.com/images/imgur-logo.svg"
  ]
}

back to top


KissManga

Get Mangas

Function to parse mangas from the website. Manga list is scattered over multiple website pages, where each page contains roughly 50 mangas.

  1. Parameter is a callback function, that will be executed after all mangas have been acquired (error and mangas array will be relayed as parameters).
  2. Parameter is optional, the start page (website) that should be used [default=1].
  3. Parameter is optional, the end page (website) that should be used [default=9999].
  4. Parameter is internal, the manga list stack that will be filled incrementally while parsing pages.
hakuneko.kissmanga.getMangas( function( error, mangas ) {
    console.log( error, mangas );
}, 1, 1 );

Get Chapters

Function to parse chapters from the website for the given manga. The manga could be a result from the getMangas function.

  1. Parameter is a callback function, that will be executed after all chapters have been acquired (error and chapters array will be relayed as parameters).
manga = hakuneko.base.createManga( 'Title', '/Manga/Mirai-Nikki' );
hakuneko.kissmanga.getChapters( manga, function( error, chapters ) {
    if( !error ) {
        // do something with the chapters ...
    }
    console.log( error, chapters );
});

Get Pages

Function to parse pages from the website for the given chapter. The chapter could be a result from the getChapters function.

NOTE: Aggressive downloads will trigger a re-captcha riddle for your IP, so add a delay between multiple calls!

  1. Parameter is a callback function, that will be executed after all pages have been acquired (error and pages array will be relayed as parameters).
chapter = hakuneko.base.createChapter( '[VOL]', '[NR]', 'Title', 'lang', 'scanlator', '/Manga/Mirai-Nikki/0?id=53068', [] );
hakuneko.kissmanga.getPages( chapter, function( error, pages ){
    if( !error ) {
        chapter.p = pages; // assign pages to chapter
    }
    console.log( error, pages );
});

back to top


KissAnime

NOTE: Website is region blocked, HakuNeko module will not work within blocked countries!

Get Animes

Function to parse animes from the website. Anime list is scattered over multiple website pages, where each page contains roughly 50 animes.

  1. Parameter is a callback function, that will be executed after all animes have been acquired (error and animes array will be relayed as parameters).
  2. Parameter is optional, the start page (website) that should be used [default=1].
  3. Parameter is optional, the end page (website) that should be used [default=9999].
  4. Parameter is internal, the anime list stack that will be filled incrementally while parsing pages.
hakuneko.kissanime.getAnimes( function( error, animes ) {
    console.log( error, animes );
}, 1, 1 );

Get Episodes

Function to parse episodes from the website for the given anime. The anime could be a result from the getAnimes function.

  1. Parameter is a callback function, that will be executed after all episodes have been acquired (error and episodes array will be relayed as parameters).
anime = hakuneko.base.createAnime( 'Title', '/Anime/RWBY' );
hakuneko.kissanime.getEpisodes( anime, function( error, episodes ) {
    if( !error ) {
        // do something with episodes ...
    }
    console.log( error, episodes );
});

Get Resolutions

Function to parse different resolutions (quality) from the website for the given episode. The episode could be a result from the getEpisodes function.

NOTE: Aggressive downloads will trigger a re-captcha riddle for your IP, so add a delay between multiple calls!

NOTE: Video links may require 'http://kissanime.ru' as referer in HTTP header or a 404 error may occur!

  1. Parameter is a callback function, that will be executed after all resolutions have been acquired (error and resolutions array will be relayed as parameters).
episode = hakuneko.base.createEpisode( '', '[NR]', 'Title', '', '', '/Anime/RWBY/Episode-001?id=52422', [] );
hakuneko.kissanime.getResolutions( episode, function( error, resolutions ){
    if( !error ) {
        epsiode.p = resolutions; // assign resolutions to episode
    }
    console.log( error, resolutions );
});

back to top


Keywords

FAQs

Package last updated on 18 Jul 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc