Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/weaponsforge/hili-lipsum
Hilichurlian language lorem ipsum generator and web scraper
https://github.com/weaponsforge/hili-lipsum
css genshin genshin-impact genshinimpact hacktoberfest hilichurlian html javascript lorem-ipsum lorem-ipsum-generator node nodejs
Last synced: about 1 month ago
JSON representation
Hilichurlian language lorem ipsum generator and web scraper
- Host: GitHub
- URL: https://github.com/weaponsforge/hili-lipsum
- Owner: weaponsforge
- License: mit
- Created: 2022-08-03T02:43:48.000Z (over 2 years ago)
- Default Branch: dev
- Last Pushed: 2024-11-01T05:38:22.000Z (2 months ago)
- Last Synced: 2024-11-01T05:41:25.485Z (2 months ago)
- Topics: css, genshin, genshin-impact, genshinimpact, hacktoberfest, hilichurlian, html, javascript, lorem-ipsum, lorem-ipsum-generator, node, nodejs
- Language: HTML
- Homepage: https://www.npmjs.com/package/hili-lipsum
- Size: 301 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## hili-lipsum
Hilichurlian language lorem ipsum generator and web scraper using data from the Genshin Impact Fandom Wiki at https://genshin-impact.fandom.com/wiki/Hilichurlian/Lexicon.
### Data Structure
The `"npm run scrape"` web scraper script extracts Hilichurlian language data from https://genshin-impact.fandom.com/wiki/Hilichurlian/Lexicon into an array of JSON Objects under the `"data"` key.
It has the following format and structure:
| Key | Type | Description |
| --- | --- | --- |
| `word` | string | Hilichurlian (singular or plural) word |
| `eng` | string | English translation of the Hilichurlian word |
| `cn` | string | Chinese player analysis translation of the Hilichurlian word |
| `notes` | string | Notes and additional information about the Hilichurlian word |### Example
```
{
"metadata": {
"source": "https://genshin-impact.fandom.com/wiki/Hilichurlian/Lexicon",
"title": "Hilichurlian Language Dictionary",
"description": "Dictionary of Hilichurlian words and their English translations exctracted from the source URL.",
"date_created": "2024-10-19T08:11:48.917Z"
},
"data": [
{
"word": "da",
"eng": "good/very good, affirmation, very (emphasis)",
"cn": "",
"notes": "Can be used as praise"
},
...
]
}
```Checkout the full web-scraped data in the `/data/hilichurlianDB.json` file for more information.
## Contributing
We welcome contributions! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
## Requirements
The following requirements were used for this project. Feel free to use other dependencies and versions as needed.
1. Windows 10 OS
2. NodeJS v20.15.0## Content
- [hili-lipsum](#hili-lipsum)
- [Data Structure](#data-structure)
- [Contributing](#contributing)
- [Requirements](#requirements)
- [Content](#content)
- [Installation](#installation)
- [Available Scripts](#available-scripts)
- [`npm run scrape`](#npm-run-scrape)
- [`npm run hipsum`](#npm-run-hipsum)
- [`npm run lint`](#npm-run-lint)
- [`npm run lint:fix`](#npm-run-lintfix)
- [Usage with Docker](#usage-with-docker)
- [Preparing the Local Image](#preparing-the-local-image)
- [Using the Docker Image](#using-the-docker-image)
- [Class Usage](#class-usage)
- [`Hilichurl` Class](#hilichurl-class)
- [`Hilipsum` Class](#hilipsum-class)
- [Deployment with GitHub Actions](#deployment-with-gitHub-actions)## Installation
1. Clone this repository.
`git clone https://github.com/weaponsforge/hili-lipsum.git`2. Install dependencies.
`npm install`3. Create a `.env` file from the `.env.example` file. Use the default value for `HILICHURLIAN_TEXT_URL`.
| Variable Name | Description |
| --- | --- |
| HILICHURLIAN_TEXT_URL | Target web page to scrape, containing Hilichurilian words definition.
Default value is: https://genshin-impact.fandom.com/wiki/Hilichurlian/Lexicon
You can reference other Hilichurlian words wiki or web page to scrape, but be be sure to make the necessary adjustments on the web scraping logic on `/src/classes/hilichurl/hilichurl.js` - **scrapewords()** and **formatwords()** methods. |## Available Scripts
### `npm run scrape`
Download, scrape and format hilichurlian words from the `HILICHURLIAN_TEXT_URL` .env variable.
Writes the extracted and formatted words into a `/hilichurlianDB-.json` file.### `npm run hipsum`
Generates a random ipsum-like Hilichurlian sentence (max 15 words).
### `npm run lint`
Lint JavaScript source codes.
### `npm run lint:fix`
Fix JavaScript lint errors.
### `npm run scrape:debug`
Sets the `IS_DOCKER=true` environment variable before running the `npm run scrape` script to enable debugging with VSCode inside a container.
> This command runs only in a Linux environment.
### `npm test`
Run tests defined in the `__tests__` directory.
## Usage with Docker
Pulling and using the Docker image requires a `.env` variable before proceeding. Create a `.env` first from the `.env.example` file as instructed in the [Installation](#installation) section.
### Preparing the Local Image
Obtain the development Docker image using any of the two (2) options. Navigate to the repository's root directory using a terminal, then run:
- **Pull the Pre-Built Docker Image**
`docker compose -f docker-compose.dev.yml pull`- **Build the Local Image**
`docker compose -f docker-compose.dev.yml build`### Using the Docker Image
1. Run the development container.
`docker compose -f docker-compose.dev.yml up`2. Run the [Available Scripts](#available-scripts) using the container. For example:
`docker run exec -it weaponsforge-hili-lipsum npm run scrape`## Class Usage
### `Hilichurl` Class
The `Hilichurl` Class allows to specify a local JSON file to use as a word dictionary. The JSON file should follow the format in `/data/hilichurlianDB.json`
```javascript
const { Hilichurl } = require('./src/lib/classes/hilichurl')
const path = require('path')// Use the the following if installed via npm
// const { Hhilichurl } = require('hili-lipsum')const main = async () => {
try {
// Instantiate a new Hilichurl class with local JSON data
const dataPath = path.join(__dirname, 'data', 'hilichurlianDB.json')
const hilichurl = new Hilichurl(dataPath)// Load new local JSON data
hilichurl.loadrecords(dataPath)// Generate a random-word sentence
const sentence = hilichurl.lipsum(40)
console.log(sentence)// Download and replace the current word dictionary
await hilichurl.fetchrecords()// Write the word dictionary to a JSON file
hilichurl.writerecords()
} catch (err) {
console.log(err.message)
}
}main()
```### `Hilipsum` Class
The `Hilipsum` class is a sub-class of `Hilichurl`. It automatically loads the local JSON word dictionary (`/data/hilichurlianDB.json`) on initialization.
```javascript
const { Hilipsum } = require('./src/lib/classes/hilipsum')// Use the the following if installed via npm
// const { Hilipsum } = require('hili-lipsum')const hiLipsum = new Hilipsum()
// Generate a random hilichurlian sentence
console.log(hiLipsum.lipsum())
```## Deployment with GitHub Actions
This repository deploys the latest **local development** Docker image to Docker Hub. It publishes the latest tag version to the NPM registry on the creation of new Release/Tags from the `master` branch.
Add the following GitHub Secrets and Variables to enable deployment to Docker Hub and the NPM registry.
**Docker Hub**
https://hub.docker.com/r/weaponsforge/hili-lipsum**NPM Registry**
https://www.npmjs.com/package/hili-lipsum#### GitHub Secrets
| GitHub Secret | Description |
| --- | --- |
| DOCKERHUB_USERNAME | (Optional) Docker Hub username. Required to enable pushing the development image to Docker Hub. |
| DOCKERHUB_TOKEN | (Optional) Deploy token for the Docker Hub account. Required to enable pushing the development image to Docker Hub. |
| NPM_TOKEN | NPM registry deployment token. |#### GitHub Variables
| GitHub Variable | Description |
| --- | --- |
| DOCKERHUB_USERNAME | (Optional) Docker Hub username. Required to enable pushing the development image to Docker Hub. |
@weaponsforge
20220805
20241018