Use [nvm](https://github.com/creationix/nvm) to install NodeJS v14.15.4 or newer. Download and unpack or clone this repository, and run the following in the root directory:
Install PostgreSQL, make sure password authentication is enabled (scram-sha-256) and create a database with a privileged user. For optimal search engine performance, copy `traxxx.stop` to your PostgresQL text search directory, usually `/usr/share/postgresql/tsearch_data/ or `/usr/local/share/postgresql/tsearch_data/`.
Do not modify `config/default.js`, but instead create a copy at `config/local.js` containing the properties you wish to change. If you have set `NODE_ENV`, copy `assets/js/config/default.js` to `assets/js/config/[environment].js`. After setting up PostgreSQL and configuring the details, run the following commands to create and populate the tables, and build the project:
To scrape the networks and channels available in the database, you can configure `include` and `exclude` lists. To include all available channels and only use the `exclude` list, leave the `include` parameter unconfigured. The `exclude` lists will exclude channels and child networks from networks on the `include` lists, but not vice versa. That is, if the `include` list includes a network and the `exclude` list excludes one of that network's channels, the channel will not be scraped. However, if the `include` list includes a channel, and the `exclude` list includes its parent network, the channel will be scraped.
This configuration will scrape Evil Angel and all XEmpire channels, except for LesbianX.
```
include: {
networks: [
'xempire',
],
channels: [
'evilangel',
],
},
exclude: {
channels: [
'lesbianx',
],
}
```
This configuration will scrape all channels, except for BAM Visions, and except all channels part of the Vixen network.
*`--channels [slug] [slug]`: Fetch updates from specific channels. Theslug is the channel's name in lowercase and without cases or special characters. For example, Teens Like It Big is teenslikeitbig. Overrides configured included networks and channels.
*`--networks [slug] [slug]`: Fetch updates from all sites of a specific network. The network slug is composed similarly to the channel slug. Overrides configured included networks and channels.
*`--exclude-channels [slug] [slug]`: Scrape every configured, specified or available channel, except for specified. Overrides configured excluded channels.
*`--exclude-networks [slug] [slug]`: Scrape every configured, specified or available network, except for specified. Overrides configured excluded networks.
*`--after "[time]"`: Do not fetch scenes older than this period or date. Example values are: `"1 month"`, `"3 years"`, `"2019-01-01"`.
*`--scene [URL]`: Try to retrieve scene details from its official channel or network URL.
*`--deep`: Follow each release link found running `--channel` or `--network` and scrape it for more details. Enabled by default ; use `--no-deep` to only save information found on the overview pages.
*`--actors-update [time]`: Update actors that don't have any profiles newer than period ("1 month") or date (2020-08-01). Using this argument without a value will default to 1900-01-01, practically updating all actors.
*`--actors-scenes`: Fetch all scenes for scraped actors. Use with caution, as an actor may have many scenes.
*`--scene-actors`: Fetch profiles for actors associated with scraped scenes. Use with caution, as scenes may have many actors, each with many profiles.
*`/api/scenes`: Fetch the latest releases. Supports search with `query` or `q` parameter;
*`/api/scenes/{ID}`: Fetch scene by ID.
*`/api/actors`: Fetch actors. Search `query` or `q` parameter required.
*`/api/actors/{ID|slug}`: Fetch detailed actor by ID or slug.
*`/api/entities`: Fetch networks and channels. Use the `type` parameter to filter for either `channel`s or `network`s.
*`/api/entities/{ID|slug}`: Fetch detailed network or channel by ID. To fetch by slug, the `type` parameter must specify either `channel` or `network`.
*`/api/channels`: Fetch channel entities. Supports the `q` or `query` parameter for searching.
*`/api/channels/{ID|slug}`: Fetch detailed channel by ID or slug.
*`/api/networks`: Fetch networks. Supports a `q` or `query` parameter for searching.
*`/api/networks/{ID|slug}`: Fetch detailed network by ID or slug.
*`/api/tags`: Fetch tags.
*`/api/tags/{ID|slug|name}`: Fetch detailed tag by ID, slug or name.