Code Monkey home page Code Monkey logo

kikoeru's Introduction

A self-hosted web media player for listening to your DLsite voice works.

Features

  • Automatically scrapes metadata from HVDB
  • Browse works by circle, tag or VA
  • Queue functionality: mix and match tracks from many different works, in whichever order you want

Quick Start

Requires both Node.js and npm installed in your system to run. Assuming you've downloaded from the releases page:

# Install dependencies
npm install --only=prod

# Change `rootDir` in `config.json` to the
# directory where you keep your voice works.

# Each folder must have an RJ code somewhere
# in its name for the scanner to detect it.

# Scan works into the database
npm run scan

# Start the server
npm start

# App is now available at http://0.0.0.0:8888

If you instead cloned this repository or just want more details, read below:

Instructions

Build from source

# Install dependencies
npm install

# Build app bundle
npm run build

# Start the production server
npm start

# App is now available at http://0.0.0.0:8888

Configuration

Media scanner

You must change rootDir in the config.json file to point to the directory where you keep your voice works. Each work must be a folder containing an RJ code anywhere in its name.

NOTE: Even if you're on Windows, you still need to use forward slashes when specifying rootDir. For example:

{
  "rootDir": "D:/Downloads/Voice",
  "worksPerPage": 12
}

After this is done, you may run the initial scan:

npm run scan

This will create a file named db.sqlite3, containing metadata scraped from HVDB for each work found by the scanner. This file can safely be deleted if you wish to rebuild the database. It will also create a folder called Images inside your rootDir containing work cover images.

Subsequent runs of the scan command will do two things:

  • Look for new works and add them to the database
  • Remove works which have been deleted from disk since last scan

It is important to note that the scanner has a configurable maximum recursion depth. However, subdirectories inside a work do not count towards the maximum. For example, assuming rootDir is /mnt/Voice/:

# OK - This work will be detected correctly:
/mnt/Voice/[Atelier Honey] 雨恋女の子守唄 (RJ136105)/

# OK - All the folders will be detected as part of the same work:
/mnt/Voice/RJ130297/mp3/ノイズ有/
/mnt/Voice/RJ130297/mp3/ノイズ無(推奨)/
/mnt/Voice/RJ130297/wav/ノイズ有/
/mnt/Voice/RJ130297/wav/ノイズ無(推奨)/

# OK - As long as `scannerMaxRecursionDepth` is at least 2:
/mnt/Voice/Atelier Honey/[RJ136105] 雨恋女の子守唄/

# OK - As long as `scannerMaxRecursionDepth` is at least 3:
/mnt/Voice/SFW/桃色CODE/【初夏耳かき】道草屋 芹7 ゆうがた【湯船怪談】(RJ253947)/1-帰り道mp3/
/mnt/Voice/SFW/桃色CODE/【初夏耳かき】道草屋 芹7 ゆうがた【湯船怪談】(RJ253947)/2-お風呂場のおはなしmp3/
/mnt/Voice/SFW/桃色CODE/【初夏耳かき】道草屋 芹7 ゆうがた【湯船怪談】(RJ253947)/3-夕焼け花火と耳掃除mp3/

# FAIL - This work won't be detected because there's no RJ code:
/mnt/Voice/雨恋女の子守唄/

Password protection

If you wish to password protect the web interface, you may change password in config.json. Be aware that falsy javascript values will turn this feature off (for example, setting password to false or 0).

Disclaimer

At the moment, although this works well enough for regular usage, you can expect to find small quirks and bugs.

This was developed on macOS and tested on Chrome for Android. It should run on Linux. I have no clue about Windows.

kikoeru's People

Contributors

nortonandrews avatar dependabot[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.