Flibusta API
Unofficial Flibusta API based on website search engine.
NPM
Flibsta API is available as a npm packages
Use yarn add flibusta
or npm install flibusta
Examples
- Clone repository
- Use
yarn install
or npm install
- Use commands:
For simple search
```sh
yarn example-search-book-by-name [book name]
```
```sh
yarn example-search-authors [author name]
```
```sh
yarn example-search-book-by-series [series name]
```
For paginated search
```sh
yarn example-search-book-by-name-paginated [book name] [page number] [items limit count]
```
```sh
yarn example-search-authors-paginated [author name] [page number] [items limit count]
```
```sh
yarn example-search-book-by-series-paginated [series name] [page number] [items limit count]
```
API
getBooksByAuthorOpds(id)
Example
getBooksByAuthorOpds(6116)
Response
Response
```json
[
{
"author": [
{
"name": "Конан Дойль Артур",
"uri": "/a/6116"
}
],
"title": "«Глория Скотт»",
"updated": "2022-02-22T08:35:39+01:00",
"categories": [
"Классический детектив"
],
"cover": "/i/0/214600/cover.jpg",
"downloads": [
{
"link": "/b/214600/fb2",
"type": "application/fb2+zip"
},
{
"link": "/b/214600/html",
"type": "application/html+zip"
},
{
"link": "/b/214600/txt",
"type": "application/txt+zip"
},
{
"link": "/b/214600/rtf",
"type": "application/rtf+zip"
},
{
"link": "/b/214600/mobi",
"type": "application/x-mobipocket-ebook"
}
],
"description": "Куда исчез фаворит предстоящих скачек жеребец Серебряный и кто убил его тренера? Кто пытается разлучить счастливых супругов Мунро и что за ужасное лицо появляется в окне соседнего дома? В какую аферу оказался вовлечен незадачливый биржевой маклер? И что делали таинственные гости из России в комнате пациента доктора Тревельяна? На эти вопросы берется ответить знаменитый Шерлок Холмс...
\n
Перевод: Любимова Галина
Формат: fb2
Язык: ru
Размер: 62 Kb
Скачиваний: 8387
Серия: Рассказы о Шерлоке Холмсе — 2. Записки о Шерлоке Холмсе #4
"
},
...
]
```
getBooksByAuthorOpdsPaginated(id)
id
- The id of author
page?
- Optional to get books by name for page. By default 0
.
limit?
- Optional. Limit rows count in items
. By default 20
.
Example
getBooksByAuthorOpdsPaginated(6116)
Response
Response
```json
{
"items": [
{
"author": [
{
"name": "Конан Дойль Артур",
"uri": "/a/6116"
}
],
"title": "«Глория Скотт»",
"updated": "2022-02-22T08:35:39+01:00",
"categories": [
"Классический детектив"
],
"cover": "/i/0/214600/cover.jpg",
"downloads": [
{
"link": "/b/214600/fb2",
"type": "application/fb2+zip"
},
{
"link": "/b/214600/html",
"type": "application/html+zip"
},
{
"link": "/b/214600/txt",
"type": "application/txt+zip"
},
{
"link": "/b/214600/rtf",
"type": "application/rtf+zip"
},
{
"link": "/b/214600/mobi",
"type": "application/x-mobipocket-ebook"
}
],
"description": "Куда исчез фаворит предстоящих скачек жеребец Серебряный и кто убил его тренера? Кто пытается разлучить счастливых супругов Мунро и что за ужасное лицо появляется в окне соседнего дома? В какую аферу оказался вовлечен незадачливый биржевой маклер? И что делали таинственные гости из России в комнате пациента доктора Тревельяна? На эти вопросы берется ответить знаменитый Шерлок Холмс...
\n
Перевод: Любимова Галина
Формат: fb2
Язык: ru
Размер: 62 Kb
Скачиваний: 8387
Серия: Рассказы о Шерлоке Холмсе — 2. Записки о Шерлоке Холмсе #4
"
},
...
],
"currentPage": 0,
"hasNextPage": true,
"hasPreviousPage": false
}
```
getBooksByName(name)
name
- The name of searched books.
Example
getBooksByName('Шерлок')
Response
Response
```json
[
{
"book": {
"id": 402475,
"name": "Шерлок Холмс и дело о папирусе (сборник) [= Шерлок Холмс против графа Дракулы (сборник)]"
},
"authors": [
{
"id": 33441,
"name": "Дэвид Стюарт Дэвис"
}
]
},
...
]
```
getBooksByNameFromOpds(name)
name
- The name of searched books.
Example
getBooksByNameFromOpds('Шерлок')
Response
Response
```json
[
{
"author": [
{
"name": "Талышханов Адиль",
"uri": "/a/31745"
}
],
"title": "`Путь бесхвостой птички` или Иероглифика по методу Шерлока Холмса",
"updated": "2022-02-18T07:21:09+01:00",
"categories": [
"Языкознание, иностранные языки"
],
"downloads": [
{
"link": "/b/112478/download",
"type": "application/pdf+rar"
}
],
"description": "Формат: pdf
Язык: ru
Размер: 564 Kb
Скачиваний: 2632
"
},
...
]
```
getBooksByNameFromOpdsPaginated(name, page?, limit?)
name
- The name of searched books.
page?
- Optional to get books by name for page. By default 0
.
limit?
- Optional. Limit rows count in items
. By default 20
.
Example
getBooksByNameFromOpdsPaginated('Шерлок', 0, 1)
Response
Response
```json
{
"items": [
{
"author": [
{
"name": "Талышханов Адиль",
"uri": "/a/31745"
}
],
"title": "`Путь бесхвостой птички` или Иероглифика по методу Шерлока Холмса",
"updated": "2022-02-18T18:01:50+01:00",
"categories": [
"Языкознание, иностранные языки"
],
"downloads": [
{
"link": "/b/112478/download",
"type": "application/pdf+rar"
}
],
"description": "Формат: pdf
Язык: ru
Размер: 564 Kb
Скачиваний: 2632
"
}
],
"currentPage": 0,
"totalCountItems": 228,
"hasNextPage": true,
"hasPreviousPage": false,
"totalPages": 11
}
```
getBooksByNamePaginated(name, page?, limit?)
name
- The name of searched books.
page?
- Optional to get books by name for page. By default 0
.
limit?
- Optional. Limit rows count in items
. By default 50
.
Example
getBooksByNamePaginated('Шерлок', 0, 1)
Response
Response
```json
{
"items": [
{
"book": {
"id": 402475,
"name": "Шерлок Холмс и дело о папирусе (сборник) [= Шерлок Холмс против графа Дракулы (сборник)]"
},
"authors": [
{
"id": 33441,
"name": "Дэвид Стюарт Дэвис"
}
]
}
],
"currentPage": 0,
"totalCountItems": 228,
"totalPages": 5,
"hasNextPage": true,
"hasPreviousPage": false
}
```
getBooksBySeries(name, page?, limit?)
name
- The name of searched books series.
Example
getBooksBySeries('Шерлок')
Response
Response
```json
[
{
"id": 242,
"name": "Шерлок Холмс с иллюстрациями",
"books": 11
},
{
"id": 30097,
"name": "Шерлок Холмс. Игра продолжается",
"books": 61
},
{
"id": 4154,
"name": "Шерлок Холмс. Новые приключения",
"books": 8
},
...
]
```
getBooksBySeriesPaginated(name, page?, limit?)
name
- The name of searched books series.
page?
- Optional to get books by name for page. By default 0
.
limit?
- Optional. Limit rows count in items
. By default 50
.
Example
getBooksBySeriesPaginated('Шерлок', 0, 1)
Response
Response
```json
{
"items": [
{
"id": 242,
"name": "Шерлок Холмс с иллюстрациями",
"books": 11
}
],
"currentPage": 0,
"totalCountItems": 39,
"totalPages": 1,
"hasNextPage": false,
"hasPreviousPage": false
}
```
getAuthors(name)
name
- The name of searched author.
Example
getAuthors('конан')
Response
Response
```json
[
{
"id": 6116,
"name": "Артур Конан Дойль",
"books": 584,
"translations": -1
},
{
"id": 17933,
"name": "Адриан Конан Дойл",
"books": 37,
"translations": -1
},
{
"id": 147059,
"name": "Андреас Конанос (архимандрит)",
"books": 19,
"translations": -1
},
{
"id": 6118,
"name": "Сьюзан Конант",
"books": 4,
"translations": -1
},
{
"id": 58754,
"name": "Александр Конаныхин",
"books": -1,
"translations": 1
}
]
```
getAuthorsPaginated(name, page?, limit?)
name
- The name of searched author.
page?
- Optional to get books by name for page. By default 0
.
limit?
- Optional. Limit rows count in items
. By default 50
.
Example
getAuthorsPaginated('конан', 0, 1)
Response
Response
```json
{
"items": [
{
"id": 6116,
"name": "Артур Конан Дойль",
"books": 584,
"translations": -1
}
],
"currentPage": 0,
"totalCountItems": 5,
"totalPages": 1,
"hasNextPage": false,
"hasPreviousPage": false
}
```
getCoverByBookId(id)
Example
getCoverByBookId(226302)
Response
Response
```
File blob
```
getGenres(name)
name
- The name of searched genre.
Example
getGenres('роман')
Response
Response
```json
[
{
"id": "det_irony",
"name": "Иронический детектив, дамский детективный роман"
},
{
"id": "love_contemporary",
"name": "Современные любовные романы"
},
{
"id": "love_history",
"name": "Исторические любовные романы"
},
{
"id": "love_detective",
"name": "Остросюжетные любовные романы"
},
{
"id": "love_short",
"name": "Короткие любовные романы"
},
{
"id": "love",
"name": "Любовные романы"
},
{
"id": "love_sf",
"name": "Любовное фэнтези, любовно-фантастические романы "
},
{
"id": "tale_chivalry",
"name": "Рыцарский роман"
},
{
"id": "adv_story",
"name": "Авантюрный роман"
},
{
"id": "gothic_novel",
"name": "Готический роман"
},
{
"id": "great_story",
"name": "Роман, повесть"
},
{
"id": "astrology",
"name": "Астрология и хиромантия"
}
]
```
getGenresPaginated(name, page?, limit?)
name
- The name of searched genre.
page?
- Optional to get books by name for page. By default 0
.
limit?
- Optional. Limit rows count in items
. By default 50
.
Example
getGenresPaginated('роман', 0, 2)
Response
Response
```json
{
"items": [
{
"id": "det_irony",
"name": "Иронический детектив, дамский детективный роман"
},
{
"id": "love_contemporary",
"name": "Современные любовные романы"
}
],
"currentPage": 0,
"totalCountItems": 12,
"totalPages": 1,
"hasNextPage": false,
"hasPreviousPage": false
}
```
Onion Support
Thanks antis11 for an example
Example
```js
import { SocksProxyAgent } from 'socks-proxy-agent';
import FlibustaAPI from 'flibusta';
(async () => {
// eslint-disable-next-line unicorn/no-unreadable-array-destructuring
const [/* original value */, /* path to the file */, authorName] = process.argv;
const flibustaApi = new FlibustaAPI('http://flibustaongezhld6dibs2dps6vm4nvqg2kp7vgowbu76tzopgnhazqd.onion', {
httpAgent: new SocksProxyAgent('socks5h://127.0.0.1:9050'),
});
const searchAuthorsResult = await flibustaApi.getAuthors(authorName);
console.log(JSON.stringify(searchAuthorsResult, undefined, 2));
})();
```