node-hitomi
API Hitomi untuk Node
Instalasi
Penting: Karena seringnya perubahan di Hitomi, sangat disarankan untuk menggunakan versi terbaru.
Node 10.20 atau lebih baru diperlukan.
npm install node-hitomiyarn add node-hitomipnpm add node-hitomibun add node-hitomiFitur
- Pencarian Galeri: Filter berdasarkan tag dan judul, pilih urutan, dan hasil halaman.
- Pengambilan Galeri: Muat metadata galeri lengkap, termasuk judul, tipe, bahasa, seniman, dan relasi.
- Manajemen Tag: Buat, parse, cari, dan daftarkan tag. Juga daftarkan bahasa yang tersedia untuk suatu tag.
- Unduhan Gambar: Selesaikan URL dan ambil gambar dalam AVIF/WebP/JXL (jika tersedia), dengan ukuran thumbnail opsional.
- Unduhan Video: Ambil video galeri dan gambar poster.
Penggunaan
Paket mengekspor instance klien default, tetapi Anda juga dapat membuat klien sendiri untuk konfigurasi kustom.
import { Hitomi } from 'node-hitomi';import { Agent } from 'https';const agent = new Agent({ keepAlive: true, // Bypass server name indication field blocking servername: '', rejectUnauthorized: false});const hitomi = new Hitomi({ agent: agent, indexMaximumAge: 300000, imageContextMaximumAge: 1800000});Jika Anda menggunakan modul CommonJS:
const { hitomi, SortType /* and more... */ } = require('node-hitomi');Galeri
GalleryManager memungkinkan Anda mengambil galeri individu dan mendaftarkan referensi galeri yang cocok.
GalleryManagerve(id)
Mengambil galeri lengkap berdasarkan id dan mengembalikan instance Gallery.
import hitomi from 'node-hitomi';// Ambil galeri berdasarkan idconst gallery = await galleriesve(123456);console(`Judul: ${titley}`);console(`Tipe: ${gallery}`);console(`Bahasa: ${galleryge?.name}`);GalleryManager(options?)
Mendaftarkan galeri yang cocok dengan kriteria yang diberikan. Anda dapat melewatkan tag, kueri judul, opsi urutan, dan opsi halaman. Metode mengembalikan GalleryReference[].
import hitomi, { SortType } from 'node-hitomi';// Parse ekspresi pencarian menjadi objek tag terstrukturconst tags = tags('male:sole_male -female:netorare series:blue_archive');// Daftarkan referensi galeri yang cocokconst references = await galleries({ tags: tags, title: 'serina', orderBy: SortTyperityMonth});// Selesaikan referensi pertama menjadi galeri lengkapif(references > 0) { const firstGallery = await references[0].retrieve(); console(titley);}Peringatan: Tidak setiap penggunaan options valid. Ini harus memenuhi batasan di bawah.
- Hanya satu tag non-bahasa yang diizinkan (opsional digabungkan dengan tag bahasa).
- Tag negatif dan judul tidak didukung.
const simpleTags = tags('type:manga language:english');// Daftarkan referensi galeri yang cocok dengan halamanconst pagedReferences = await galleries({ tags: simpleTags, orderBy: SortTypeblished, page: { index: 0, size: 25 }});console(pagedReferences, `(${pagedReferences['length']} galeri)`);Tag
TagManager membantu Anda membuat, memparse, mencari, dan mendaftarkan tag.
TagManager(type, name, isNegative?)
Membuat instance Tag dengan tipe, nama, dan flag negasi opsional.
import hitomi from 'node-hitomi';// Buat tag seri dan daftarkan bahasa yang tersedia untuk tag tersebutconst tag = tags('series', 'trickcal_revive', false);const languages = await tagnguages();console(languages);TagManager(expression)
Memparse ekspresi yang dapat dibaca manusia menjadi instance Tag unik. Format yang diharapkan adalah [-]type:name, di mana spasi diwakili oleh garis bawah.
import hitomi from 'node-hitomi';// Parse ekspresi string menjadi instance Tagconst parsedTags = tags('female:yandere male:sole_male -tag:group');console(parsedTags);TagManager(term)
Mencari tag berdasarkan istilah parsial dan mengembalikan tupel [Tag, count], di mana count adalah jumlah galeri yang terkait dengan setiap tag.
import hitomi from 'node-hitomi';// Cari tag dan cetak jumlah galericonst tagAndCounts = await tags('character:agnes');for(const [tag, count] of tagAndCounts) { console(`${String(tag)} (${count} galeri)`);}TagManager(type, startsWith?)
Mendaftarkan tag dari tipe tertentu, secara opsional difilter oleh karakter awal.
import hitomi, { NameInitial } from 'node-hitomi';// Daftarkan tag female yang dimulai dengan 'a'const femaleATags = await tags('female', NameInitial.A);for(const tag of femaleATags) { console(String(tag));}Media
ImageeUrl(extension, thumbnailSize?)
Menyelesaikan URL gambar dalam format yang diminta dan ukuran thumbnail opsional.
Peringatan: Tidak setiap kombinasi extension dan thumbnailSize valid. Ini harus memenuhi batasan di bawah.
| Ukuran Thumbnail | Ekstensi | Persyaratan (harus benar) |
|---|---|---|
| (tidak ada) | (semua) | has{Extension} |
Small | (semua) | has{Extension} |
Medium | Avif | hasThumbnail && has{Extension} |
Big | (semua) | hasThumbnail && has{Extension} |
import hitomi, { Extension, ThumbnailSize } from 'node-hitomi';// Ambil galeri berdasarkan id dan dapatkan gambar thumbnail yang tersediaconst gallery = await galleriesve(123456);const thumbnails = gallerymbnails();// URL WebP ukuran penuhconst imageUrl = await thumbnails[0].resolveUrl(Extension);console(`URL Gambar: ${imageUrl}`);// URL thumbnail medium AVIFconst thumbnailUrl = await thumbnails[1].resolveUrl(Extension, ThumbnailSize);console(`URL Thumbnail: ${thumbnailUrl}`);Image(extension, thumbnailSize?)
Mengambil gambar sebagai Buffer. Batasan ekstensi dan thumbnail yang sama seperti ImageeUrl berlaku.
import hitomi, { Extension, ThumbnailSize } from 'node-hitomi';import { writeFileSync } from 'fs';// Ambil galeri berdasarkan id dan dapatkan gambar thumbnail yang tersediaconst gallery = await galleriesve(123456);const thumbnails = gallerymbnails();// Ambil dan simpan gambar ukuran penuhconst imageBuffer = await thumbnails[0].fetch(Extension);writeFileSync('image', imageBuffer);// Ambil dan simpan thumbnail mediumconst thumbnailBuffer = await thumbnails[1].fetch(Extension, ThumbnailSize);writeFileSync('thumbnail', thumbnailBuffer);Video()
Mengambil video galeri sebagai Buffer MP4.
import hitomi from 'node-hitomi';import { writeFileSync } from 'fs';const gallery = await galleriesve(123456);if(gallery) { // Ambil dan simpan video MP4 const videoBuffer = await video(); writeFileSync('video4', videoBuffer);}Videooster()
Mengambil poster video sebagai Buffer WebP.
import hitomi from 'node-hitomi';import { writeFileSync } from 'fs';const gallery = await galleriesve(123456);if(gallery) { // Ambil dan simpan gambar poster WebP const posterBuffer = await videooster(); writeFileSync('poster', posterBuffer);}Kontribusi
Kontribusi sangat diterima. Jangan ragu untuk membuka isu untuk bug atau mengirimkan pull request dengan perbaikan.
Platform Lainnya
Berita Piala Dunia
Jika Anda memiliki pertanyaan, silakan kirim email ke [email protected]