[image:1 size:small]
The GunCAD Index logo
This page serves to collect documentation on the GunCAD Index. Comprehensive tutorials and subprojects (like GunCAD Mirror) can be found in its child pages.
[article_list]
[TOC]
# Basic Documentation
Below are some basic, fundamental concepts of the GunCAD Index.
## Overview
GunCAD Index is a Python application written on top of the Django framework. It regularly analyzes the LBRY blockchain (known by its web frontend, Odysee) for claims and indexes them by pulling their data into a local database, where it can be efficiently catalogued and searched through.
## Channels
A **channel** is a monitored LBRY channel. The GunCAD Index maintains a list of monitored channels, from which it acquires all of its releases.
To get yours added, see [Getting Added](wiki:/guncad-index-documentation/getting-added).
## Releases
A **release** is a claim by some author that represents a design on the Index.
In technical terms, it is any stream claim from an indexed channel that does not fall within a blacklist of known-bad stream types (mostly MIME types for videos and the like).
Note that all releases the Index scours for are *free* releases. LBRY has functionality to put a download price on a file, and we explicitly only look for files that are free.
### Deindexed (Hidden) Releases
Each release has a toggleable flag "hidden" which hides it from all views *except* direct linking. Deindexed releases may occur for any number of reasons, such as:
* It contains someone's personal information and is hidden for their safety
* It was deemed not GunCAD related
* It was hidden at the request of the author
* It was hidden at moderator discretion. Note that we don't do this lightly -- there's an RGB Crescent fleshlight remix, a melee dildo, and like forty drop-in-autosears here. Something has to be *really* wrong for us to hide a release for nothing
### Duplicate Releases
Duplicate releases are releases that share sha384sums with some other file. They are greyed-out and suffer penalties in search rankings.
Duplicates are not assigned "in spirit", i.e. they won't catch repacks. They are based purely on whether or not the files are completely identical.
## Shortlinks
GunCAD Index has a shortlink provider: https://guncad.link
It has three modes:
### Shortcut to GunCAD Index
If you just link https://guncad.link , it functions as a **shorter link to GunCAD Index**.
### Link to a Shortlinked Release
Some releases, at moderator discretion and as vendors need them, have "shortlink" slugs associated with them:
[image:9 size:large]
The Decker 380 with a shortlink "decker380"
In these cases, you can append the slug to our shortlink URL and get a really convenient way to link to a release. In this case: https://guncad.link/decker380
You can also use the slug with the full domain, if you want a reverse stretch shortlink for whatever reason: https://guncadindex.com/s/decker380
### Link to Any Other Release
For any release that does not have a shortlink, you can still take the slug at the end of the URL and slap it on the end in much the same way:
```
https://guncadindex.com/detail/The-Glock-Doc:d
```
For example, the above URL can be shortened to https://guncad.link/The-Glock-Doc:d
# Advanced Documentation
This section describes stuff about the GunCAD Index that you really only need to know if you're looking really closely at source code or something.
## Scheduled Jobs
GunCAD Index utilizes several scheduled jobs to help it keep running effectively. For the sake of brevity, we won't be going over regular Django stuff, just the things that are unique to the Index:
### Automatic Tagging
GunCAD Index maintains a series of rules called "tagging rules" (sometimes referred to by their database name "TaggingRule") that function very simply: if some release on the Index matches some set of criteria -- like having the LBRY tag "22lr" or "Glock 19" in its name -- it is associated with a particular tag. This job iterates through all releases on the Index and ensures that they all have the appropriate tagging rules applied and **not** any erroneous ones.
Additionally, a second job runs a subset of randomly-picked releases (about 50, usually) by a LLM (in our case, Grok). The LLM is oftentimes more thorough and is able to apply tags based on context that is more difficult to determine with simple tagging rules.
### Automatic Discovery
A job occasionally scours the blockchain looking for new authors we haven't yet seen. For details on this process, see [Getting Added](wiki:/guncad-index-documentation/getting-added).
### Image Caching
In order to prevent leaky web requests and to ensure reliability, we automatically download and downsample thumbnails from releases into a few different sizes. These are encoded and served as webp files.
### Duplication Detection
A recurring job looks at all releases in the Index for collisions in sha384sum. In the event of a collision, one of the colliders is picked as authoritative based on some criteria (at time of writing, it's LBRY popularity) and the rest are marked as duplicates.