All Projects → laxamentumtech → audnexus

laxamentumtech / audnexus

Licence: GPL-3.0 License
An audiobook data aggregation API, combining multiple sources of data into one, consistent source.

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to audnexus

roda
RODA - Repository of Authentic Digital Objects
Stars: ✭ 54 (+200%)
Mutual labels:  metadata
action-sync-node-meta
GitHub Action that syncs package.json with the repository metadata.
Stars: ✭ 25 (+38.89%)
Mutual labels:  metadata
QueryArrow
A semantically unified SQL and NoSQL query and update system
Stars: ✭ 17 (-5.56%)
Mutual labels:  metadata
Kvpbase
Scalable, simple RESTful object storage platform, written in C#
Stars: ✭ 43 (+138.89%)
Mutual labels:  metadata
CommitCombo
깃허브 커밋 기록을 아름답게 꾸미는 프로젝트 ⭐
Stars: ✭ 31 (+72.22%)
Mutual labels:  metadata
serrano
Low level Ruby client for Crossref
Stars: ✭ 26 (+44.44%)
Mutual labels:  metadata
skyrimse
The TES V: Skyrim Special Edition masterlist.
Stars: ✭ 99 (+450%)
Mutual labels:  metadata
isogeo-plugin-qgis
Isogeo plugin for QGIS
Stars: ✭ 13 (-27.78%)
Mutual labels:  metadata
fastify-openapi-glue
A plugin for Fastify to autogenerate a configuration based on a OpenApi(v2/v3) specification.
Stars: ✭ 94 (+422.22%)
Mutual labels:  fastify
169254
📟 A simple API that simulate AWS EC2's metadata endpoint
Stars: ✭ 15 (-16.67%)
Mutual labels:  metadata
framework
The target of this framework is to help in all the needs of a full featured API REST, from top to bottom, and at the same time having the best possible performance and security.
Stars: ✭ 88 (+388.89%)
Mutual labels:  fastify
skyrim
The Skyrim masterlist.
Stars: ✭ 68 (+277.78%)
Mutual labels:  metadata
postcss-font-grabber
A postcss plugin, it grabs remote font files and update your CSS, just like that.
Stars: ✭ 26 (+44.44%)
Mutual labels:  metadata
columbus
Metadata storage service
Stars: ✭ 42 (+133.33%)
Mutual labels:  metadata
hc-pdf-server
Convert HTML to PDF Server by headless chrome with TypeScript. The new version of hcep-pdf-server.
Stars: ✭ 24 (+33.33%)
Mutual labels:  fastify
gutenberg-metadata
Metadata from Project Gutenberg
Stars: ✭ 24 (+33.33%)
Mutual labels:  metadata
peppy
Project metadata manager for PEPs in Python
Stars: ✭ 29 (+61.11%)
Mutual labels:  metadata
feast-java
Feast Java Components
Stars: ✭ 12 (-33.33%)
Mutual labels:  metadata
docker-fastify-restful-api
Node.js RESTful API boilerplate using Traefik, Docker, Docker Compose, Fastify, JWT and Mongodb
Stars: ✭ 40 (+122.22%)
Mutual labels:  fastify
nft.storage
😋 Free decentralized storage and bandwidth for NFTs on IPFS and Filecoin.
Stars: ✭ 309 (+1616.67%)
Mutual labels:  metadata

Project logo

audnexus

Status GitHub Issues GitHub Pull Requests License CodeFactor Grade


An audiobook data aggregation API, combining multiple sources of data into one, consistent source.

📝 Table of Contents

🧐 About

Nexus - noun: a connection or series of connections linking two or more things.

Looking around for audiobook metadata, we realized there's no solid (or open) single source of truth. Further, some solutions had community curated data, only to close their API. As such, this project has been created to enable development to include multiple sources of audiobook content in one response.

This project also makes integration into existing media servers very streamlined. Since all data can be returned with 1-2 API calls, there's little to no overhead processing on the client side. This enables rapid development of stable client plugins. Audnexus serves as a provider during the interim of waiting for a community driven audiobook database, at which time audnexus will be a seeder for such a database.

🏁 Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites

  • There are 2 ways to deploy this project - for the purposes of this project, this guide will only cover Docker deployment:
    • Docker Swarm
    • Directly, via npm run or pm2
      • Mongo 4 or greater
      • Node/NPM 16 or greater
      • Redis
  • Registered Audible device keys, ADP_TOKEN and PRIVATE_KEY, for chapters. You will need Python and audible for this. More on that here

Installing locally

  • Install Mongo, Node and Redis on your system
  • npm install from project directory to get dependencies
  • Set ADP_TOKEN and PRIVATE_KEY environment variables as mentioned above if you are using the chapters endpoint.
  • npm run watch-debug to start the server

Test an API call with

http://localhost:3000/books/${ASIN}

🔧 Running the tests

Tests for this project use the Jest framework. Tests can be done locally in a dev environment:

  • npm test

After the tests have run, you may also browse the test coverage. This is generated in coverage/lcov-report/index.html under the project directory.

🎈 Usage

API usage documentation can be read here: https://audnex.us/

🚀 Deployment

Once you have Docker Swarm setup, grab the docker-compose.yml from this repo, and use it to start the stack. Using something like Portainer for a Swarm GUI will make this much easier.

The stack defaults to 15 replicas for the node-server container. Customize this as needed.

Environment variables to add:

  • NODE_ADP_TOKEN: Aforementioned ADP_TOKEN value
  • NODE_MONGODB_URI: MongoDB connection URL, such as mongodb://mongo/audnexus
  • NODE_PRIVATE_KEY: Aforementioned PRIVATE_KEY value
  • NODE_REDIS_URL: Redis connection URL, such as redis://redis:6379
  • TRAEFIK_DOMAIN: FQDN for the API server
  • TRAEFIK_EMAIL: Email to register SSL cert with

Once the stack is up, test an API call with

https://${TRAEFIK_DOMAIN}/books/${ASIN}

⛏️ Built Using

✍️ Authors

🎉 Acknowledgements

  • Huge thanks to mkb79 and their audible project for a great starting point.
  • macr0dev for introducing us to scraping.
  • seanap for passionately standardizing audiobook organization.
  • Bookcamp for giving us a reason to have awesome audiobook data.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].