mirror of
https://github.com/stashapp/Stash-Docs.git
synced 2025-12-10 00:41:30 -06:00
Retire builder (#118)
This commit is contained in:
parent
086bff949c
commit
e9350b166d
20
.github/workflows/mkdocs-ci.yml
vendored
20
.github/workflows/mkdocs-ci.yml
vendored
@ -13,10 +13,8 @@ permissions:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
if: github.repository == 'stashapp/Stash-Docs' # Replace with your repository details
|
||||
if: github.repository == 'stashapp/Stash-Docs'
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
BUILDER_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@ -32,19 +30,7 @@ jobs:
|
||||
with:
|
||||
python-version: 3.x
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
|
||||
- name: "Builder setup"
|
||||
run: |
|
||||
npm i
|
||||
npm i -g ts-node
|
||||
cd builder
|
||||
mkdir dist dist/plugins dist/themes
|
||||
ts-node build.ts
|
||||
cp dist/plugins/* ../docs/plugins/list.md
|
||||
cp dist/themes/* ../docs/themes/list.md
|
||||
|
||||
- run: pip install \
|
||||
- run: pip install \
|
||||
mkdocs-material=="9.*" \
|
||||
mkdocs-rss-plugin \
|
||||
mkdocs-git-revision-date-localized-plugin \
|
||||
@ -52,5 +38,5 @@ jobs:
|
||||
mkdocs-glightbox \
|
||||
mkdocs-material[imaging] \
|
||||
mkdocs-redirects
|
||||
|
||||
|
||||
- run: mkdocs gh-deploy --force
|
||||
|
||||
36
README.md
36
README.md
@ -1,9 +1,12 @@
|
||||
# Stash-Docs
|
||||
|
||||
Website: https://docs.stashapp.cc
|
||||
|
||||
## Join Our Community
|
||||
## Community support
|
||||
|
||||
We are excited to announce that we have a new home for support, feature requests, and discussions related to Stash and its associated projects. Join our community on the [Discourse forum](https://discourse.stashapp.cc) to connect with other users, share your ideas, and get help from fellow enthusiasts.
|
||||
- **Forum:** [discourse.stashapp.cc](https://discourse.stashapp.cc) - Primary place for community support, feature requests, and discussions.
|
||||
- **Discord:** [discord.gg/2TsNFKt](https://discord.gg/2TsNFKt) - Real-time chat and community support.
|
||||
- **Lemmy:** [discuss.online/c/stashapp](https://discuss.online/c/stashapp) - Community discussions.
|
||||
|
||||
## Contributing
|
||||
|
||||
@ -11,24 +14,29 @@ Everyone is welcome to help with the documentation. All changes are managed thro
|
||||
|
||||
Read step-by-step guide on how to create a pull request [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
## Running locally with pip
|
||||
## Local development
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Python modules
|
||||
- `mkdocs-material=="9.*"`
|
||||
- `mkdocs-git-revision-date-localized-plugin`
|
||||
- `mkdocs-git-committers-plugin-2`
|
||||
- `mkdocs-glightbox`
|
||||
- `mkdocs-material[imaging]`
|
||||
- `mkdocs-redirects`
|
||||
- Install all with `pip install mkdocs-material=="9.*" mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-glightbox mkdocs-material[imaging] mkdocs-redirects`
|
||||
- Clone/download the repository
|
||||
- Python modules:
|
||||
- `mkdocs-material=="9.*"`
|
||||
- `mkdocs-git-revision-date-localized-plugin`
|
||||
- `mkdocs-git-committers-plugin-2`
|
||||
- `mkdocs-glightbox`
|
||||
- `mkdocs-material[imaging]`
|
||||
- `mkdocs-redirects`
|
||||
|
||||
Install all dependencies with:
|
||||
|
||||
```bash
|
||||
pip install mkdocs-material=="9.*" mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-glightbox "mkdocs-material[imaging]" mkdocs-redirects
|
||||
```
|
||||
|
||||
### Building the site
|
||||
1. Open Terminal/Command Prompt and go to your directory where you saved the copy of the repository
|
||||
|
||||
1. Open command-line interface and go to your directory where you saved the copy of the repository
|
||||
2. Run `mkdocs serve`
|
||||
|
||||
## License
|
||||
|
||||
The documentation site is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
The documentation site is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
|
||||
124
builder/build.ts
124
builder/build.ts
@ -1,124 +0,0 @@
|
||||
import axios from 'axios'
|
||||
import YAML from 'yaml'
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
|
||||
import { LocalCollection, LocalRepository, LocalSidecar, RemoteIndex, RemotePlugin } from './types'
|
||||
import { Plugin } from './plugin'
|
||||
import { infoLog, warnLog } from './utils'
|
||||
import { debuglog } from 'util';
|
||||
|
||||
// iterate over folder
|
||||
async function searchRepository(pathName: string = "plugins"): Promise<Plugin[]> {
|
||||
const repoPath = path.resolve(`./repositories/${pathName}`)
|
||||
const repoFiles = fs.readdirSync(repoPath)
|
||||
|
||||
const repositories: LocalRepository[] = []
|
||||
// find all files
|
||||
repoFiles.forEach(file => {
|
||||
if (file.endsWith(".yml")) {
|
||||
const fileData = fs.readFileSync(`${repoPath}/${file}`, 'utf8')
|
||||
const localRepo: LocalRepository = YAML.parse(fileData)
|
||||
// set name to filename if not defined
|
||||
if (!localRepo.name) localRepo.name = file.replace(".yml", "")
|
||||
repositories.push(localRepo)
|
||||
}
|
||||
})
|
||||
// iterate over repositories
|
||||
const plugins: Plugin[] = []
|
||||
for (const repo of repositories) {
|
||||
const plugin = await parseRepository(repo)
|
||||
plugins.push(...plugin)
|
||||
}
|
||||
// fetch all readmes of plugins
|
||||
const readmePromises = plugins.map(plugin => plugin.checkReadme())
|
||||
await Promise.all(readmePromises)
|
||||
// sort plugins and print to md
|
||||
const sortedPlugins = plugins
|
||||
.sort((a, b) => a.name.toLowerCase().localeCompare(b.name.toLowerCase()))
|
||||
return sortedPlugins
|
||||
}
|
||||
|
||||
function printPlugins(outputName: string, sortedPlugins: Plugin[]) {
|
||||
// create folder if not exists
|
||||
if (!fs.existsSync(`./dist`)) fs.mkdirSync(`./dist`, { recursive: true })
|
||||
if (!fs.existsSync(`./dist/${outputName}`)) fs.mkdirSync(`./dist/${outputName}`, { recursive: true })
|
||||
// print to file
|
||||
const outputPath = `./dist/${outputName}/list.md`
|
||||
const stream = fs.createWriteStream(outputPath)
|
||||
stream.write(`# Browse ${outputName} \n\n`)
|
||||
stream.write(getSourceIndexes(sortedPlugins))
|
||||
stream.write(`## All ${outputName} \n\n`)
|
||||
// iterate over plugins
|
||||
for (const plugin of sortedPlugins) {
|
||||
stream.write(plugin.printMD())
|
||||
stream.write("\n")
|
||||
}
|
||||
stream.end()
|
||||
}
|
||||
|
||||
function getSourceIndexes(plugins: Plugin[]): string {
|
||||
const indexes = Array.from(new Set(plugins.map(plugin => plugin.index))).sort((a, b) => a.localeCompare(b));
|
||||
return `
|
||||
## Sources
|
||||
|
||||
${indexes.map(index => `1. [${index}](${index})`).join('\n')}
|
||||
`;
|
||||
}
|
||||
|
||||
async function parseRepository(localRepository: LocalRepository): Promise<Plugin[]> {
|
||||
// load from parsed
|
||||
const repoDefaults: LocalCollection = localRepository.collection
|
||||
const repoSidecars: LocalSidecar[] = localRepository.scripts
|
||||
// grab from index.yml
|
||||
const indexData: RemoteIndex = await axios.get(repoDefaults.index)
|
||||
.then(res => YAML.parse(res.data))
|
||||
// iterate over remote index and match with sidecars
|
||||
const indexPlugins: Plugin[] = []
|
||||
const idxMissingScar: Set<RemotePlugin> = new Set()
|
||||
const allIdx: Set<RemotePlugin> = new Set()
|
||||
for (const index of indexData) {
|
||||
const sidecarMatch = repoSidecars.find(sidecar => sidecar.id == index.id)
|
||||
if (sidecarMatch) {
|
||||
if (sidecarMatch.id == "example") continue // if example, skip
|
||||
else if (sidecarMatch.hide) { // skip but warn if hidden
|
||||
debuglog(`Skipping hidden plugin: ${index.name}`)
|
||||
continue
|
||||
} else allIdx.add(index) // add to sidecars
|
||||
} else { // sidecar not found
|
||||
if (repoDefaults.exclusive) continue // if exclusive, skip
|
||||
idxMissingScar.add(index) // add to missing
|
||||
}
|
||||
const plugin = new Plugin(repoDefaults, sidecarMatch, index)
|
||||
indexPlugins.push(plugin)
|
||||
}
|
||||
// check if there are leftover sidecars
|
||||
// not named example
|
||||
// not in indexPlugins and not hidden
|
||||
const extraSidecars = repoSidecars.filter(sidecar => sidecar.id != "example" && !sidecar.hide && !indexPlugins.find(plugin => plugin.id == sidecar.id))
|
||||
if (extraSidecars.length > 0) {
|
||||
warnLog(`Found ${extraSidecars.length} extra sidecars in ${localRepository.name}`)
|
||||
extraSidecars.forEach(sidecar => warnLog(` ${sidecar.id}`))
|
||||
}
|
||||
// check for plugins without sidecars
|
||||
const missingSCars = Array.from(idxMissingScar).filter(plugin => allIdx.has(plugin))
|
||||
if (missingSCars.length > 0) {
|
||||
infoLog(`Found ${missingSCars.length} missing sidecars in ${localRepository.name}`)
|
||||
missingSCars.forEach(sidecar => infoLog(` ${sidecar.name}`))
|
||||
}
|
||||
return indexPlugins
|
||||
}
|
||||
|
||||
async function run() {
|
||||
// generate themes first then exclude
|
||||
const themes = await searchRepository("themes")
|
||||
printPlugins("themes", themes)
|
||||
// generate plugins with themes excluded
|
||||
const plugins = await searchRepository("plugins")
|
||||
// remove themes from plugins
|
||||
const filteredPlugins = plugins.filter(plugin => !themes.some(theme => theme.id == plugin.id))
|
||||
printPlugins("plugins", filteredPlugins)
|
||||
console.log("finished building plugin index")
|
||||
}
|
||||
|
||||
run()
|
||||
@ -1,100 +0,0 @@
|
||||
import * as utils from './utils'
|
||||
import { LocalCollection, LocalSidecar, RemotePlugin } from './types'
|
||||
import axios from 'axios'
|
||||
|
||||
const authClient = axios.create({
|
||||
baseURL: 'https://api.github.com',
|
||||
headers: {
|
||||
'User-Agent': "feederbox826/stash-docs-builder v1.0.0",
|
||||
'Accept': 'application/vnd.github.object+json',
|
||||
'Authorization': `Bearer ${process.env.BUILDER_GH_TOKEN}`
|
||||
}
|
||||
})
|
||||
|
||||
const statusIsOK = (status: number): boolean => status == 200 || status == 302 || status == 304
|
||||
|
||||
export class Plugin {
|
||||
id: string // internal id of plugin
|
||||
name: string // display name of plugin
|
||||
description: string // description of plugin if available
|
||||
index: string // index url of collection
|
||||
repo: string // repository of collection
|
||||
author: string // author of plugin
|
||||
path: string // path to plugin in repository
|
||||
screenshots: string[] // screenshots of plugin
|
||||
readme: string | boolean | undefined // readme file
|
||||
base_path: string // path to plugins/ folder
|
||||
repo_path: string // path to repository in the format of owner/repo
|
||||
|
||||
constructor(defaults: LocalCollection, sidecar: LocalSidecar | undefined, index: RemotePlugin) {
|
||||
this.id = index.id
|
||||
this.name = index.name
|
||||
this.description = index?.metadata?.description
|
||||
?? sidecar?.description
|
||||
?? "No Description Provided"
|
||||
this.index = defaults.index
|
||||
this.repo = defaults.global_repo
|
||||
this.author = sidecar?.author
|
||||
?? defaults?.global_author // fall back to global author
|
||||
?? "No Author" // if no author
|
||||
this.path = sidecar?.path
|
||||
?? index.id // default to ID
|
||||
this.screenshots = sidecar?.screenshots ?? []
|
||||
this.readme = defaults?.global_readme ?? sidecar?.readme // readme file
|
||||
this.base_path = defaults.base_path ?? "main/plugins"
|
||||
this.repo_path = `${this.base_path}/${this.path}`
|
||||
}
|
||||
|
||||
async checkReadme(): Promise<void> {
|
||||
// test readme if undefined
|
||||
if (this.readme === undefined) {
|
||||
this.readme = await authClient.get(`/repos/${this.repo}/contents/${this.repo_path}/README.md`, {
|
||||
validateStatus: status => statusIsOK(status) || status == 404
|
||||
})
|
||||
.then(res => statusIsOK(res.status))
|
||||
}
|
||||
}
|
||||
|
||||
printMD() {
|
||||
// pre prepared values
|
||||
const folderPath = `https://github.com/${this.repo}/tree/${this.repo_path}`
|
||||
const filePath = `https://github.com/${this.repo}/blob/${this.repo_path}`
|
||||
// if false, no readme
|
||||
// if true, default readme
|
||||
// otherwise, follow path or url
|
||||
const readme = typeof(this.readme) == "string" // if readme is string
|
||||
? this.readme.includes("http") // if link, add target blank
|
||||
? `View [README](${this.readme}){target=_blank}`
|
||||
: `View [README](${filePath}/${this.readme}){target=_blank}`
|
||||
: this.readme // readme is boolean
|
||||
? `View [README](${filePath}/README.md){target=_blank}` // default path
|
||||
: "No README available"
|
||||
const screenshots = this.screenshots
|
||||
.map(screenshot => `{ loading=lazy } `)
|
||||
.join("")
|
||||
// ugly formatted markdown
|
||||
return `
|
||||
### [${this.name}](${folderPath}){target=_blank}
|
||||
|
||||
=== "Description"
|
||||
|
||||
${utils.sanitizeMD(this.description)}
|
||||
|
||||
=== "Source URL"
|
||||
|
||||
\`\`\`
|
||||
${this.index}
|
||||
\`\`\`
|
||||
|
||||
=== "README"
|
||||
|
||||
${readme}
|
||||
|
||||
=== "Author"
|
||||
|
||||
${this.author.replace(/(\[.+\]\(http.+\)(?:,|\r|\n|\r\n))/g, "{target=_blank}")}
|
||||
|
||||
=== "Screenshots"
|
||||
${screenshots}`
|
||||
}
|
||||
}
|
||||
@ -1,37 +0,0 @@
|
||||
name: Repository name
|
||||
collection:
|
||||
# index url for your repo
|
||||
index: https://ghost.github.io/stash-plugins/main/index.yml
|
||||
# github url of the repo - github.com/username/repo-name
|
||||
global_repo: ghost/stash-plugins
|
||||
# author of all plugins in the repo (OPTIONAL)
|
||||
global_author: "[ghost](https://github.com/ghost)"
|
||||
# link to readme if it applies to all scripts within the collection
|
||||
global_readme: "https://example.com/stash-plugins/README.md"
|
||||
# branch/path within the folder structure
|
||||
base_path: main/plugins
|
||||
# entries not in the sidecar are excluded
|
||||
exclusive: true
|
||||
|
||||
scripts:
|
||||
# internal id of the plugin
|
||||
- id: my-first-stash-plugin
|
||||
# path if it is not at base_path/id
|
||||
path: CoolPlugin
|
||||
# description (OPTIONAL)
|
||||
description: My first plugin
|
||||
# readme, if not at base_path/id/README.md
|
||||
# if left empty, will try to search at the location
|
||||
readme: "https://example.com/stash-plugins/README.md"
|
||||
# override author from global_author
|
||||
author: "Ghost, Casper"
|
||||
# list of links to images of screenshots
|
||||
screenshots:
|
||||
- https://example.com/stash-plugins/CoolPlugin/demo.png
|
||||
- https://example.com/stash-plugins/CoolPlugin/usage.png
|
||||
- https://example.com/stash-plugins/CoolPlugin/settings.png
|
||||
# if plugin should be hidden from generate index
|
||||
# this should only be set if the plugin is a backend dependency
|
||||
# is in a completely broken state and wholly incompatible
|
||||
# or has been deprecated and should not be used
|
||||
hide: true
|
||||
@ -1,127 +0,0 @@
|
||||
collection:
|
||||
index: https://7djx1qp.github.io/stash-plugins/main/index.yml
|
||||
global_repo: 7dJx1qP/stash-plugins
|
||||
global_author: "[7dJx1qP](https://github.com/7dJx1qP)"
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
# id only
|
||||
- id: stashOpenMediaPlayer
|
||||
|
||||
# dependencies
|
||||
- id: stashUserscriptLibrary7dJx1qP
|
||||
hide: true
|
||||
|
||||
# screenshots
|
||||
- id: stashBatchQueryEdit
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Batch%20Query%20Edit/config.png
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Batch%20Query%20Edit/scenes-tagger.png
|
||||
|
||||
- id: stashBatchResultToggle
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Batch%20Result%20Toggle/config.png
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Batch%20Result%20Toggle/scenes-tagger.png
|
||||
|
||||
- id: stashBatchSave
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Batch%20Save/scenes-tagger.png
|
||||
|
||||
- id: stashBatchSearch
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Batch%20Search/scenes-tagger.png
|
||||
|
||||
- id: stashMarkdown
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Markdown/tag-description.png
|
||||
|
||||
- id: stashMarkersAutoscroll
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Markers%20Autoscroll/scroll-settings.png
|
||||
|
||||
- id: stashNewPerformerFilterButton
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20New%20Performer%20Filter%20Button/performers-page.png
|
||||
|
||||
|
||||
- id: stashPerformerAuditTaskButton
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Performer%20Audit%20Task%20Button/performers-page.png
|
||||
|
||||
- id: stashPerformerCustomFields
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Performer%20Custom%20Fields/custom-fields-view.png
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Performer%20Custom%20Fields/custom-fields-view-compact.png
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Performer%20Custom%20Fields/custom-fields-edit.png
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Performer%20Custom%20Fields/performer-details-edit.png
|
||||
|
||||
- id: stashPerformerImageCropper
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Performer%20Image%20Cropper/performer-image-cropper.png
|
||||
|
||||
- id: stashPerformerMarkersTab
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Performer%20Markers%20Tab/performer-page.png
|
||||
|
||||
- id: stashPerformerTaggerAdditions
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Performer%20Tagger%20Additions/performer-tagger.png
|
||||
|
||||
- id: stashPerformerURLSearchbox
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Performer%20URL%20Searchbox/performers-page.png
|
||||
|
||||
- id: stashSceneTaggerAdditions
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Scene%20Tagger%20Additions/config.png
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Scene%20Tagger%20Additions/scenes-tagger.png
|
||||
|
||||
- id: stashSceneTaggerColorizer
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Scene%20Tagger%20Colorizer/config.png
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Scene%20Tagger%20Colorizer/scenes-tagger.png
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Scene%20Tagger%20Colorizer/tag-colors.png
|
||||
|
||||
- id: stashSceneTaggerDraftSubmit
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Scene%20Tagger%20Draft%20Submit/scenes-tagger.png
|
||||
|
||||
- id: stashSetStashboxFavoritePerformers
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Set%20Stashbox%20Favorite%20Performers/performers-page.png
|
||||
|
||||
- id: stashStashIDIcon
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20StashID%20Icon/performer-page.png
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20StashID%20Icon/studio-page.png
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20StashID%20Icon/scene-page.png
|
||||
|
||||
- id: stashStashIDInput
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20StashID%20Input/performer-page.png
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20StashID%20Input/studio-page.png
|
||||
|
||||
- id: stashStashboxSceneCount
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Stashbox%20Scene%20Count/performer.png
|
||||
|
||||
- id: stashStats
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Stats/stats-page.png
|
||||
|
||||
- id: stashTagImageCropper
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Tag%20Image%20Cropper/tag-image-cropper.png
|
||||
|
||||
|
||||
- id: stashVideoPlayerABLoopTimeInput
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/7dJx1qP/stash-plugins/main/images/Stash%20Video%20Player%20AB%20Loop%20Time%20Input/ab-loop-time-input.png
|
||||
@ -1,19 +0,0 @@
|
||||
name: MinasukiHikimuna/MidnightRider-Stash plugins
|
||||
collection:
|
||||
index: https://minasukihikimuna.github.io/MidnightRider-Stash/index.yml
|
||||
global_repo: MinasukiHikimuna/MidnightRider-Stash
|
||||
global_author: "[MinasukiHikimuna](https://github.com/MinasukiHikimuna)"
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
# id only
|
||||
- id: CompleteTheStash
|
||||
- id: HashTheStash
|
||||
@ -1,24 +0,0 @@
|
||||
collection:
|
||||
index: https://s3l3ct3dloves.github.io/stashPlugins/stable/index.yml
|
||||
global_repo: S3L3CT3DLoves/stashPlugins
|
||||
global_author: "[S3L3CT3DLoves](https://github.com/S3L3CT3DLoves)"
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
# path override
|
||||
- id: cleanupUI
|
||||
path: CleanupUI
|
||||
- id: easytag
|
||||
path: QuickEdit
|
||||
|
||||
# id only
|
||||
- id: myIp
|
||||
- id: folderSort
|
||||
@ -1,37 +0,0 @@
|
||||
collection:
|
||||
index: https://valkyr-js.github.io/stash-plugins/index.yml
|
||||
global_repo: Valkyr-JS/stash-plugins
|
||||
global_author: "[Valkyr-JS](https://github.com/Valkyr-JS)"
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
# id only
|
||||
- id: StashReels
|
||||
readme: https://github.com/Valkyr-JS/StashReels/blob/main/README.md
|
||||
|
||||
- id: StashMergers
|
||||
readme: https://github.com/Valkyr-JS/StashMergers/blob/main/README.md
|
||||
screenshots:
|
||||
- /assets/plugins/StashMergers/1.JPG
|
||||
- /assets/plugins/StashMergers/2.JPG
|
||||
- /assets/plugins/StashMergers/3.JPG
|
||||
- /assets/plugins/StashMergers/4.JPG
|
||||
- /assets/plugins/StashMergers/5.JPG
|
||||
- /assets/plugins/StashMergers/6.JPG
|
||||
|
||||
- id: PerformerDetailsExtended
|
||||
readme: https://github.com/Valkyr-JS/PerformerDetailsExtended/blob/main/README.md
|
||||
|
||||
- id: ValkyrSceneCards
|
||||
readme: https://github.com/Valkyr-JS/ValkyrSceneCards/blob/main/README.md
|
||||
screenshots:
|
||||
- /assets/plugins/ValkyrSceneCards/1.jpg
|
||||
- /assets/plugins/ValkyrSceneCards/2.jpg
|
||||
@ -1,8 +0,0 @@
|
||||
name: blackstar3000 plugins
|
||||
collection:
|
||||
index: https://blackstar3000.github.io/stash-plugins-blackstar/main/index.yml
|
||||
global_repo: blackstar3000/stash-plugins-blackstar
|
||||
global_author: "[blackstar3000](https://github.com/blackstar3000)"
|
||||
|
||||
scripts:
|
||||
- id: stashNewScenesFilterButton
|
||||
@ -1,16 +0,0 @@
|
||||
collection:
|
||||
index: https://carrotwaxr.github.io/stash-plugins/stable/index.yml
|
||||
global_repo: carrotwaxr/stash-plugins
|
||||
global_author: "[carrotwaxr](https://github.com/carrotwaxr)"
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
- id: mcMetadata
|
||||
@ -1,10 +0,0 @@
|
||||
name: Ceequester/CommunityScripts
|
||||
collection:
|
||||
index: https://ceequester.github.io/CommunityScripts/stable/index.yml
|
||||
global_repo: Ceequester/CommunityScripts
|
||||
global_author: "[Ceequester](https://github.com/Ceequester)"
|
||||
# exclusive since it's a fork
|
||||
exclusive: true
|
||||
|
||||
scripts:
|
||||
- id: pathParser
|
||||
@ -1,9 +0,0 @@
|
||||
name: coderdudeo stash plugins
|
||||
collection:
|
||||
index: https://coderdudeo.github.io/CoderDudeo-Stash-Plugins/index.yml
|
||||
global_repo: coderdudeo/CoderDudeo-Stash-Plugins
|
||||
global_author: "[coderdudeo](https://github.com/coderdudeo)"
|
||||
global_readme: https://github.com/coderdudeo/CoderDudeo-Stash-Plugins/blob/main/README.md
|
||||
|
||||
scripts:
|
||||
- id: ColorCodedTags
|
||||
@ -1,11 +0,0 @@
|
||||
name: CrudeCreations/set-image-pornpics
|
||||
collection:
|
||||
index: https://crudecreations.github.io/set-image-pornpics/stable/plugin.yaml
|
||||
global_repo: CrudeCreations/set-image-pornpics
|
||||
global_author: "[CrudeCreations](https://github.com/CrudeCreations)"
|
||||
# exclusive since it's manually generated
|
||||
exclusive: true
|
||||
|
||||
scripts:
|
||||
- id: set-image-pornpics
|
||||
readme: "https://github.com/CrudeCreations/set-image-pornpics/blob/main/README.md"
|
||||
@ -1,19 +0,0 @@
|
||||
name: d0t-d0t-d0t plugins
|
||||
collection:
|
||||
index: https://raw.githubusercontent.com/d0t-d0t-d0t/stash-repo/refs/heads/dist/index.yml
|
||||
global_repo: d0t-d0t-d0t/stash-repo
|
||||
global_author: "[d0t-d0t-d0t](https://github.com/d0t-d0t-d0t)"
|
||||
base_path: main/Plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
- id: stashAudioPlayer
|
||||
readme: https://github.com/d0t-d0t-d0t/stash-repo/blob/main/Plugins/stashaudioplayer/about.md
|
||||
path: stashaudioplayer
|
||||
@ -1,18 +0,0 @@
|
||||
name: f4bio plugins
|
||||
collection:
|
||||
index: https://f4bio.github.io/stash-plugins/main/index.yml
|
||||
global_repo: f4bio/stash-plugins
|
||||
global_author: "[f4bio](https://github.com/f4bio)"
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
- id: renamerOnUpdate
|
||||
- id: renamerOnUpdateDevelop
|
||||
@ -1,64 +0,0 @@
|
||||
name: feederbox826 plugins
|
||||
collection:
|
||||
index: https://feederbox826.github.io/plugins/main/index.yml
|
||||
global_repo: feederbox826/plugins
|
||||
global_author: "[feederbox826](https://feederbox.cc)"
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
# dependencies
|
||||
- id: 0gql-intercept
|
||||
hide: true
|
||||
- id: forbiddenConfig
|
||||
hide: true
|
||||
- id: stashdb-api
|
||||
hide: true
|
||||
- id: wfke
|
||||
hide: true
|
||||
- id: fontawesome-js
|
||||
|
||||
# deprecated
|
||||
- id: tag-graph-js
|
||||
hide: true
|
||||
|
||||
# id only
|
||||
- id: avg-rating
|
||||
- id: edit-unorganized
|
||||
- id: filepath-copy
|
||||
- id: log-console
|
||||
- id: markergen
|
||||
- id: rebrand
|
||||
- id: s6-helper
|
||||
- id: skip-intro
|
||||
- id: stash-omnisearch
|
||||
- id: stash-open
|
||||
- id: stashdb-fullimg
|
||||
- id: tag-import
|
||||
- id: tag-video
|
||||
- id: tagger-img-res
|
||||
- id: titleobserver
|
||||
- id: vjs-mmb-fullscreen
|
||||
- id: vjs-shortcut
|
||||
|
||||
# screenshots
|
||||
- id: studio-img-bg
|
||||
screenshots:
|
||||
- "https://raw.githubusercontent.com/feederbox826/plugins/main/docs/studio-image-bg_after.png"
|
||||
- id: log-toast
|
||||
screenshots:
|
||||
- "https://raw.githubusercontent.com/feederbox826/plugins/refs/heads/main/docs/log-toast.png"
|
||||
- id: tag-filter
|
||||
screenshots:
|
||||
- "https://raw.githubusercontent.com/feederbox826/plugins/refs/heads/main/docs/tag-filter-toggle.png"
|
||||
- "https://raw.githubusercontent.com/feederbox826/plugins/refs/heads/main/docs/tag-filter-demo.png"
|
||||
- id: watched-video
|
||||
screenshots:
|
||||
- "https://raw.githubusercontent.com/feederbox826/plugins/refs/heads/main/docs/watched-video.png"
|
||||
@ -1,17 +0,0 @@
|
||||
collection:
|
||||
index: https://feederbox826.github.io/stashlist/main/index.yml
|
||||
global_repo: feederbox826/stashlist
|
||||
global_author: "[feederbox826](https://github.com/feederbox826)"
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
- id: stashlist-sync
|
||||
readme: https://github.com/feederbox826/stashlist/blob/main/README.md
|
||||
@ -1,10 +0,0 @@
|
||||
name: jsmthy stash-plugins
|
||||
collection:
|
||||
index: https://jsmthy.github.io/stash-plugins/main/index.yml
|
||||
global_repo: jsmthy/stash-plugins
|
||||
global_author: "[jsmthy](https://github.com/jsmthy)"
|
||||
global_readme: "https://github.com/jsmthy/stash-plugins/blob/main/readme.md"
|
||||
|
||||
scripts:
|
||||
- id: stashIngest
|
||||
description: Moves identified scenes from the ".StashIngest" folder to the root "Scenes" folder.
|
||||
@ -1,7 +0,0 @@
|
||||
name: Lurking987 stash-plugins
|
||||
collection:
|
||||
index: https://lurking987.github.io/stash-plugins/main/index.yml
|
||||
global_repo: Lurking987/stash-plugins
|
||||
|
||||
scripts:
|
||||
- id: Find Marker For Tag Images
|
||||
@ -1,19 +0,0 @@
|
||||
collection:
|
||||
index: https://rosa-umineko.github.io/CommunityScripts/stable/index.yml
|
||||
global_repo: rosa-umineko/CommunityScripts
|
||||
global_author: "[rosa-umineko](https://github.com/rosa-umineko)"
|
||||
base_path: main/plugins
|
||||
exclusive: true
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
# id only
|
||||
- id: addImagesToTags
|
||||
- id: setSceneCover
|
||||
@ -1,102 +0,0 @@
|
||||
collection:
|
||||
index: https://serechops.github.io/Serechops-Stash/index.yml
|
||||
global_repo: Serechops/Serechops-Stash
|
||||
global_author: "[serechops](https://github.com/Serechops)"
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
|
||||
# movie-fy
|
||||
- id: Movie-Fy
|
||||
path: Movie-Fy/Movie-Fy
|
||||
readme: https://github.com/Serechops/Serechops-Stash/blob/main/plugins/Movie-Fy/README.md
|
||||
|
||||
- id: Movie-Fy Bulk Movie URL Scrape
|
||||
path: Movie-Fy/Movie-Fy%20Bulk%20Movie%20URL%20Scrape
|
||||
readme: https://github.com/Serechops/Serechops-Stash/blob/main/plugins/Movie-Fy/README.md
|
||||
|
||||
- id: Movie-Fy Check and Update Scene Titles
|
||||
path: Movie-Fy/Movie-Fy%20Check%20and%20Update%20Scene%20Titles
|
||||
readme: https://github.com/Serechops/Serechops-Stash/blob/main/plugins/Movie-Fy/README.md
|
||||
|
||||
- id: Movie-Fy Create Movie Studio
|
||||
path: Movie-Fy/Movie-Fy%20Create%20Movie%20Studio
|
||||
readme: https://github.com/Serechops/Serechops-Stash/blob/main/plugins/Movie-Fy/README.md
|
||||
|
||||
- id: Movie-Fy Scene Studio Bulk Update
|
||||
path: Movie-Fy/Movie-Fy%20Scene%20Studio%20Bulk%20Update
|
||||
readme: https://github.com/Serechops/Serechops-Stash/blob/main/plugins/Movie-Fy/README.md
|
||||
|
||||
- id: Movie-Fy Update Movie Scene Covers
|
||||
path: Movie-Fy/Movie-Fy%20Update%20Movie%20Scene%20Covers
|
||||
readme: https://github.com/Serechops/Serechops-Stash/blob/main/plugins/Movie-Fy/README.md
|
||||
|
||||
# stashDisableAll
|
||||
- id: stashDisable
|
||||
path: stashDisableAll/stashDisable
|
||||
readme: https://github.com/Serechops/Serechops-Stash/blob/main/plugins/stashDisableAll/README.md
|
||||
- id: stashDisableAll
|
||||
path: stashDisableAll/stashDisableAll
|
||||
readme: https://github.com/Serechops/Serechops-Stash/blob/main/plugins/stashDisableAll/README.md
|
||||
- id: stashEnableFromSave
|
||||
path: stashDisableAll/stashEnableFromSave
|
||||
readme: https://github.com/Serechops/Serechops-Stash/blob/main/plugins/stashDisableAll/README.md
|
||||
|
||||
# path override
|
||||
- id: performer_image_export
|
||||
path: PerformerImageExport
|
||||
- id: renamer-dev
|
||||
path: Renamer-Dev
|
||||
- id: renamer
|
||||
path: Renamer
|
||||
- id: stashJellyfinExport
|
||||
path: stashJellyfinExporter
|
||||
- id: SerechopsSceneCard
|
||||
path: serechopsSceneCard
|
||||
|
||||
# id only
|
||||
- id: SceneHub
|
||||
- id: bulkImportPerformers
|
||||
- id: findMarkerTagImages
|
||||
- id: image2Scene
|
||||
- id: markerDupes
|
||||
- id: performerGallery
|
||||
- id: performerSceneCompare
|
||||
- id: pluginsBackup
|
||||
- id: sceneSpecsOverlay
|
||||
- id: scenesMovieDuration
|
||||
- id: stashAccessibility
|
||||
- id: stashBatchCreateAll
|
||||
- id: stashDBTagImport
|
||||
- id: stashDynamicGroups
|
||||
- id: stashFPSOverlay
|
||||
- id: stashNewPerformerScenes
|
||||
- id: stashPerformerFavicons
|
||||
- id: stashPerformerMatchScrape
|
||||
- id: stashRightClickGalleries
|
||||
- id: stashRightClickImages
|
||||
- id: stashRightClickPerformerMerge
|
||||
- id: stashRightClickPerformers
|
||||
- id: stashRightClickScenes
|
||||
- id: stashRightClickSettings
|
||||
- id: stashRightClickSuite
|
||||
- id: stashRightClickTags
|
||||
- id: stashSceneFileSize
|
||||
- id: stashStudioLogoWallView
|
||||
- id: stashTagCustomColors
|
||||
- id: stashTagPerformerImage
|
||||
- id: stashTimestamps
|
||||
- id: stashToggleSceneSprites
|
||||
- id: studioTopPerformer
|
||||
|
||||
# not a plugin
|
||||
# - id: stashPluginYAMLGUI
|
||||
# - id: stashUIPluginExample
|
||||
@ -1,11 +0,0 @@
|
||||
name: sneakyninja256 stash-plugins
|
||||
collection:
|
||||
index: https://sneakyninja256.github.io/stash-plugins/stable/index.yml
|
||||
global_repo: sneakyninja256/stash-plugins
|
||||
global_author: "[sneakyninja256](https://github.com/sneakyninja256)"
|
||||
global_readme: https://github.com/sneakyninja256/stash-plugins/blob/stable/README.md
|
||||
|
||||
scripts:
|
||||
- id: audioTab
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/sneakyninja256/stash-plugins/refs/heads/stable/images/audioTab/audioTab.png
|
||||
@ -1,9 +0,0 @@
|
||||
name: spaceyuck stashplugins
|
||||
collection:
|
||||
index: https://spaceyuck.github.io/stash-plugins/index.yml
|
||||
global_repo: spaceyuck/stash-plugins
|
||||
base_path: master/plugins
|
||||
|
||||
scripts:
|
||||
- id: FastTagger
|
||||
readme: "https://github.com/spaceyuck/stash-fasttagger/blob/master/README.md"
|
||||
@ -1,9 +0,0 @@
|
||||
collection:
|
||||
index: https://stash-of-awesomeness.github.io/stash-plugins/main/index.yml
|
||||
global_repo: stash-of-awesomeness/stash-plugins
|
||||
global_author: "[stash-of-awesomeness](https://github.com/stash-of-awesomeness)"
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
# id only
|
||||
- id: rename-file-on-update
|
||||
@ -1,215 +0,0 @@
|
||||
name: stashapp/CommunityScripts Plugins
|
||||
collection:
|
||||
index: https://stashapp.github.io/CommunityScripts/stable/index.yml
|
||||
global_repo: stashapp/CommunityScripts
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
- id: ai_tagger
|
||||
path: AITagger
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/AITagger/README.md
|
||||
author: "[skier233](https://github.com/skier233)"
|
||||
|
||||
- id: AdulttimeInteractiveDL
|
||||
author: "[tooliload](https://github.com/tooliload)"
|
||||
|
||||
- id: AudioPlayer
|
||||
author: "[d0t-d0t-d0t](https://github.com/d0t-d0t-d0t)"
|
||||
|
||||
- id: AudioPlayerLite
|
||||
author: "[d0t-d0t-d0t](https://github.com/d0t-d0t-d0t)"
|
||||
|
||||
- id: CommunityScriptsUILibrary
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/CommunityScriptsUILibrary/README.md
|
||||
|
||||
- id: date_parser
|
||||
path: DateParser
|
||||
readme: false
|
||||
author: "[HijackHornet](https://github.com/HijackHornet)"
|
||||
|
||||
- id: DupFileManager
|
||||
readme: "https://github.com/stashapp/CommunityScripts/blob/main/plugins/DupFileManager/README.md"
|
||||
author: "[David-Maisonave](https://github.com/David-Maisonave)"
|
||||
|
||||
- id: extraPerformerInfo
|
||||
path: ExtraPerformerInfo
|
||||
author: "[Tweeticoats](https://github.com/Tweeticoats)"
|
||||
readme: false
|
||||
|
||||
- id: filemonitor
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/FileMonitor/README.md
|
||||
author: "[David-Maisonave](https://github.com/David-Maisonave)"
|
||||
screenshots:
|
||||
- /assets/plugins/filemonitor/1.png
|
||||
|
||||
- id: PythonToolsInstaller
|
||||
author: "[tooliload](https://github.com/tooliload)"
|
||||
|
||||
- id: renamefile
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/RenameFile/README.md
|
||||
author: "[David-Maisonave](https://github.com/David-Maisonave)"
|
||||
path: RenameFile
|
||||
|
||||
- id: TPDBMarkers
|
||||
readme: false
|
||||
author: "[Tweeticoats](https://github.com/Tweeticoats)"
|
||||
|
||||
- id: VideoScrollWheel
|
||||
readme: false
|
||||
author: "[WeedLordVegeta420](https://github.com/WeedLordVegeta420)"
|
||||
|
||||
- id: deleter
|
||||
readme: "https://github.com/stashapp/CommunityScripts/blob/main/plugins/additionalFilesDeleter/README.md"
|
||||
author: "[elkorol](https://github.com/elkorol)"
|
||||
path: additionalFilesDeleter
|
||||
|
||||
- id: audio-transcodes
|
||||
readme: false
|
||||
author: "[Tweeticoats](https://github.com/Tweeticoats)"
|
||||
|
||||
- id: BulkImageScrape
|
||||
author: "[NotMyMainUser](https://github.com/NotMyMainUser)"
|
||||
path: bulkImageScrape
|
||||
readme: "https://github.com/stashapp/CommunityScripts/blob/main/plugins/bulkImageScrape/README.md"
|
||||
|
||||
- id: chooseYourAdventurePlayer
|
||||
author: "[cj12312021](https://github.com/cj12312021)"
|
||||
readme: "https://github.com/stashapp/CommunityScripts/blob/main/plugins/chooseYourAdventurePlayer/README.md"
|
||||
|
||||
- id: cjCardTweaks
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/cjCardTweaks/README.md
|
||||
author: "[cj12312021](https://github.com/cj12312021)"
|
||||
screenshots:
|
||||
- /assets/plugins/cjCardTweaks/1.png
|
||||
- /assets/plugins/cjCardTweaks/2.png
|
||||
- /assets/plugins/cjCardTweaks/3.png
|
||||
|
||||
- id: comicInfoExtractor
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/comicInfoExtractor/README.md
|
||||
author: "[yoshnopa](https://github.com/yoshnopa)"
|
||||
|
||||
- id: defaultDataForPath
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/defaultDataForPath/README.md
|
||||
author: "[TheSinfulKing](https://github.com/TheSinfulKing)"
|
||||
|
||||
- id: discordPresence
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/discordPresence/README.md
|
||||
author: "[NotForMyCV](https://github.com/NotForMyCV)"
|
||||
|
||||
- id: dupeMarker
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/dupeMarker/README.md
|
||||
author: "[feederbox826](https://github.com/feederbox826)"
|
||||
|
||||
- id: externalLinksEnhanced
|
||||
author: "[QxxxGit](https://github.com/QxxxGit)"
|
||||
readme: "https://github.com/stashapp/CommunityScripts/blob/main/plugins/externalLinksEnhanced/README.md"
|
||||
|
||||
- id: filenameParser
|
||||
readme: false
|
||||
author: "[gitgiggety](https://github.com/gitgiggety)"
|
||||
|
||||
- id: funscriptMarkers
|
||||
readme: false
|
||||
author: "[Tweeticoats](https://github.com/Tweeticoats)"
|
||||
|
||||
- id: hotCards
|
||||
author: "[HandyRandyx](https://github.com/HandyRandyx)"
|
||||
readme: "https://github.com/stashapp/CommunityScripts/blob/main/plugins/hotCards/README.md"
|
||||
|
||||
- id: markerDeleteButton
|
||||
readme: false
|
||||
author: "[WeedLordVegeta420](https://github.com/WeedLordVegeta420)"
|
||||
|
||||
- id: markerTagToScene
|
||||
author: "[WithoutPants](https://github.com/WithoutPants)"
|
||||
readme: false
|
||||
|
||||
- id: miscTags
|
||||
readme: false
|
||||
author: "[Tweeticoats](https://github.com/Tweeticoats)"
|
||||
|
||||
- id: nfoSceneParser
|
||||
author: "[Gykes](https://github.com/Gykes)"
|
||||
redame: "https://github.com/stashapp/CommunityScripts/blob/main/plugins/nfoSceneParser/README.md"
|
||||
|
||||
- id: pathParser
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/pathParser/README.md
|
||||
author: "[ImJustMatt](https://github.com/ImJustMatt)"
|
||||
|
||||
- id: sceneCoverCropper
|
||||
author: "[feederbox826](https://github.com/feederbox826)"
|
||||
readme: false
|
||||
|
||||
- id: scenePageRememberStates
|
||||
author: "[elkorol](https://github.com/elkorol)"
|
||||
readme: "https://github.com/stashapp/CommunityScripts/blob/main/plugins/scenePageRememberStates/README.md"
|
||||
|
||||
- id: setPerformersFromTags
|
||||
author: "[Torrafox](https://github.com/Torrafox)"
|
||||
readme: "https://github.com/stashapp/CommunityScripts/blob/main/plugins/setPerformersFromTags/README.md"
|
||||
|
||||
- id: set_scene_cover
|
||||
path: setSceneCoverFromFile
|
||||
author: "[stg-annon](https://github.com/stg-annon)"
|
||||
readme: false
|
||||
|
||||
- id: stashai
|
||||
author: "[cc1234475](https://github.com/cc1234475)"
|
||||
path: stashAI
|
||||
readme: false
|
||||
|
||||
- id: stashAppAndroidTvCompanion
|
||||
readme: false
|
||||
author: "[damontecres](https://github.com/damontecres)"
|
||||
|
||||
- id: stashNotes
|
||||
readme: false
|
||||
author: "[QxxxGit](https://github.com/QxxxGit)"
|
||||
|
||||
- id: stashNotifications
|
||||
author: "[QxxxGit](https://github.com/QxxxGit)"
|
||||
readme: "https://github.com/stashapp/CommunityScripts/blob/main/plugins/stashNotifications/README.md"
|
||||
|
||||
- id: stash-realbooru
|
||||
path: stashRealbooru
|
||||
readme: false
|
||||
author: "[cc1234475](https://github.com/cc1234475)"
|
||||
|
||||
- id: stashdb-performer-gallery
|
||||
readme: false
|
||||
author: "[Tweeticoats](https://github.com/Tweeticoats)"
|
||||
|
||||
- id: stats
|
||||
readme: false
|
||||
author: "[7dJx1qP](https://github.com/7dJx1qP)"
|
||||
|
||||
- id: tagScenesWithPerfTags
|
||||
readme: false
|
||||
author: "[Dankonite](https://github.com/Dankonite)"
|
||||
|
||||
- id: themeSwitch
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/themeSwitch/README.MD
|
||||
author: "[elkorol](https://github.com/elkorol)"
|
||||
screenshots:
|
||||
- /assets/plugins/themeSwitch/1.png
|
||||
- /assets/plugins/themeSwitch/2.png
|
||||
|
||||
- id: timestampTrade
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/timestampTrade/README.md
|
||||
author: "[Tweeticoats](https://github.com/Tweeticoats)"
|
||||
|
||||
- id: titleFromFilename
|
||||
readme: https://github.com/stashapp/CommunityScripts/blob/main/plugins/titleFromFilename/README.md
|
||||
author: "[bnkai](https://github.com/bnkai)"
|
||||
|
||||
- id: videoChapterMarkers
|
||||
readme: "https://github.com/stashapp/CommunityScripts/blob/main/plugins/videoChapterMarkers/README.md"
|
||||
author: "[qxzg](https://github.com/qxzg)"
|
||||
@ -1,23 +0,0 @@
|
||||
collection:
|
||||
index: https://stg-annon.github.io/StashScripts/stable/index.yml
|
||||
global_repo: stg-annon/StashScripts
|
||||
global_author: "[stg-annon](https://github.com/stg-annon)"
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
# path override
|
||||
- id: performer_body_calculator
|
||||
path: performerBodyCalculator
|
||||
|
||||
# id only
|
||||
- id: findFileErrors
|
||||
- id: phashDuplicateTagger
|
||||
- id: tagGraph
|
||||
@ -1,27 +0,0 @@
|
||||
collection:
|
||||
index: https://tetrax-10.github.io/stash-stuffs/index.yml
|
||||
global_repo: tetrax-10/stash-stuffs
|
||||
global_author: "[tetrax-10](https://github.com/Tetrax-10)"
|
||||
base_path: main/Plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
# screenshots
|
||||
- id: AutoSelectUpdatablePluginsAndScrapers
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/Tetrax-10/stash-stuffs/main/assets/AutoSelectUpdatablePlugins/demo.gif
|
||||
- id: PlayVideoIfPreviewNotFound
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/Tetrax-10/stash-stuffs/main/assets/play-video-if-preview-not-found/demo.gif
|
||||
|
||||
# id only
|
||||
- id: AutoUpdatePluginsAndScrapers
|
||||
- id: ReplaceThumbnailsWithImages
|
||||
- id: TetraxUserscriptLibrary
|
||||
@ -1,8 +0,0 @@
|
||||
name: Voidimproper stash plugins
|
||||
collection:
|
||||
index: https://voidimproper.github.io/stash-plugins/main/index.yml
|
||||
global_repo: Voidimproper/stash-plugins
|
||||
|
||||
scripts:
|
||||
- id: gallery_linker
|
||||
path: GalleryLinker
|
||||
@ -1,20 +0,0 @@
|
||||
name: WithoutPants stash plugin prototypes
|
||||
collection:
|
||||
index: https://withoutpants.github.io/stash-plugin-prototypes/main/index.yml
|
||||
global_repo: WithoutPants/stash-plugin-prototypes
|
||||
global_author: "[WithoutPants](https://github.com/WithoutPants)"
|
||||
global_readme: https://github.com/WithoutPants/stash-plugin-prototypes/blob/main/README.md
|
||||
|
||||
scripts:
|
||||
- id: embeddedScenePlayer
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/WithoutPants/stash-plugin-prototypes/refs/heads/main/images/embed-scene-player.png
|
||||
- https://raw.githubusercontent.com/WithoutPants/stash-plugin-prototypes/refs/heads/main/images/embed-scene-player-settings.png
|
||||
- id: quickSentiment
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/WithoutPants/stash-plugin-prototypes/refs/heads/main/images/quick-sentiment.png
|
||||
- id: shelve
|
||||
- id: shelveUI
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/WithoutPants/stash-plugin-prototypes/refs/heads/main/images/shelve-ui.png
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
name: xiosensei plugins
|
||||
collection:
|
||||
index: https://xiosensei.github.io/Xio-Stash/index.yml
|
||||
global_repo: xiosensei/Xio-Stash
|
||||
global_author: "[xiosensei](https://github.com/xiosensei)"
|
||||
base_path: main/plugins
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: PluginName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/PluginName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
- id: categorize-tags-based-on-parent
|
||||
path: categorize_tags_based_on_parent
|
||||
|
||||
- id: display-tag-image-with-tag
|
||||
|
||||
- id: randomize-performer-images
|
||||
|
||||
- id: tag-text-to-emoji
|
||||
@ -1,23 +0,0 @@
|
||||
collection:
|
||||
index: https://feederbox826.github.io/themes/main/index.yml
|
||||
global_repo: feederbox826/themes
|
||||
global_author: "[feederbox826](https://github.com/feederbox826)"
|
||||
base_path: main/themes
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: ThemeName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/ThemeName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
# id only
|
||||
- id: alternative-tag-layout
|
||||
- id: direct-stream
|
||||
- id: hide-donate
|
||||
- id: hide-ocount
|
||||
- id: more-studio-row
|
||||
- id: performer-grid
|
||||
- id: wrap-subtag
|
||||
@ -1,19 +0,0 @@
|
||||
collection:
|
||||
index: https://rosa-umineko.github.io/CommunityScripts/stable/index.yml
|
||||
global_repo: rosa-umineko/CommunityScripts
|
||||
global_author: "[rosa-umineko](https://github.com/rosa-umineko)"
|
||||
base_path: rosa-umineko/themes
|
||||
exclusive: true
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: ThemeName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/ThemeName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
# inexplicably removed
|
||||
# https://github.com/rosa-umineko/CommunityScripts/commit/864dc5ea74828f5d2f43c71f88a6bbabff5644f6#diff-a468b993b48658ed25dec629d015eadd634219704cd8ac47e50a879cc5230b90
|
||||
# - id: Theme-Shadcn
|
||||
@ -1,33 +0,0 @@
|
||||
name: Serechops Glassy
|
||||
collection:
|
||||
index: https://serechops.github.io/Serechops-Stash/index.yml
|
||||
global_repo: Serechops/Serechops-Stash
|
||||
global_author: "[serechops](https://github.com/Serechops)"
|
||||
global_readme: https://github.com/Serechops/Serechops-Stash/blob/main/themes/Glassy/README.md
|
||||
base_path: main/themes/Glassy
|
||||
exclusive: true
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: ThemeName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/ThemeName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
- id: Glassy - A Window to Your Collection
|
||||
- id: Glassy - Font Overhaul
|
||||
- id: Glassy - Front Page Animations and Blur
|
||||
- id: Glassy - Images
|
||||
- id: Glassy - Installer
|
||||
- id: Glassy - Marker Wall Redesign
|
||||
- id: Glassy - Performer Scene Card Details Redesign
|
||||
- id: Glassy - Scene Player-Details 60-40
|
||||
- id: Glassy - Scene Player-Details Reversed 60-40
|
||||
- id: Glassy - Scene Player-Details Reversed
|
||||
- id: Glassy - Scene and Movie Card Redesign - No Animated Titles
|
||||
- id: Glassy - Scene and Movie Card Redesign
|
||||
- id: Glassy - Smaller Performer Cards on Main Page
|
||||
- id: Glassy - Smaller Performer Image Cards
|
||||
- id: Glassy - Video-Res Icons
|
||||
@ -1,55 +0,0 @@
|
||||
name: stashapp/CommunityScripts Themes
|
||||
collection:
|
||||
index: https://stashapp.github.io/CommunityScripts/stable/index.yml
|
||||
global_repo: stashapp/CommunityScripts
|
||||
base_path: main/themes
|
||||
exclusive: true
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: ThemeName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/ThemeName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
- id: Theme-BlackHole
|
||||
author: BViking78
|
||||
|
||||
- id: Theme-ColorPalette
|
||||
author: "[wql219](https://github.com/wql219)"
|
||||
|
||||
- id: Theme-Minimal
|
||||
author: "[deuulc](https://github.com/deuulc)"
|
||||
screenshots:
|
||||
- /assets/themes/Theme-Minimal/1.png
|
||||
- /assets/themes/Theme-Minimal/2.png
|
||||
- /assets/themes/Theme-Minimal/3.png
|
||||
- /assets/themes/Theme-Minimal/4.png
|
||||
|
||||
- id: Theme-ModernDark
|
||||
author: "[cj13](https://github.com/cj12312021)"
|
||||
|
||||
- id: Theme-NeonDark
|
||||
author: Dankonite
|
||||
|
||||
- id: Theme-Plex
|
||||
author: Fidelio
|
||||
screenshots:
|
||||
- https://user-images.githubusercontent.com/1358708/178891502-c71e4278-0378-4154-91a6-07e1a8eaa1df.png
|
||||
|
||||
- id: Theme-PornHub
|
||||
author: ronilaukkarinen
|
||||
|
||||
- id: Theme-Pulsar
|
||||
author: Fonzie
|
||||
|
||||
- id: Theme-PulsarLight
|
||||
author: Fonzie
|
||||
|
||||
- id: Theme-RoundedYellow
|
||||
author: Fonzie
|
||||
|
||||
# no author
|
||||
- id: Theme-Night
|
||||
@ -1,26 +0,0 @@
|
||||
collection:
|
||||
index: https://tetrax-10.github.io/stash-stuffs/index.yml
|
||||
global_repo: tetrax-10/stash-stuffs
|
||||
global_author: "[tetrax-10](https://github.com/Tetrax-10)"
|
||||
base_path: main/themes
|
||||
exclusive: true
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: ThemeName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/ThemeName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
- id: PlexBetterStyles
|
||||
readme: https://github.com/Tetrax-10/stash-stuffs/tree/main#1-plex-better-styles
|
||||
screenshots:
|
||||
- https://raw.githubusercontent.com/Tetrax-10/stash-stuffs/main/assets/plex-better-styles/galleries.png
|
||||
- https://raw.githubusercontent.com/Tetrax-10/stash-stuffs/main/assets/plex-better-styles/performers.png
|
||||
- https://raw.githubusercontent.com/Tetrax-10/stash-stuffs/main/assets/plex-better-styles/images.png
|
||||
- https://raw.githubusercontent.com/Tetrax-10/stash-stuffs/main/assets/plex-better-styles/scenes.png
|
||||
- https://raw.githubusercontent.com/Tetrax-10/stash-stuffs/main/assets/plex-better-styles/settings.png
|
||||
- https://raw.githubusercontent.com/Tetrax-10/stash-stuffs/main/assets/plex-better-styles/help.png
|
||||
- https://raw.githubusercontent.com/Tetrax-10/stash-stuffs/main/assets/plex-better-styles/tags.png
|
||||
@ -1,17 +0,0 @@
|
||||
collection:
|
||||
index: https://uncertainmongoose.github.io/dracula-for-stash/index.yml
|
||||
global_repo: uncertainmongoose/dracula-for-stash
|
||||
global_author: "[UncertainMongoose](https://github.com/UncertainMongoose)"
|
||||
base_path: main/themes
|
||||
|
||||
scripts:
|
||||
- id: example
|
||||
path: ThemeName
|
||||
description: "New description"
|
||||
readme: https://github.com/ghost/ThemeName/blob/main/README.md
|
||||
author: Deleted User
|
||||
screenshots:
|
||||
- https://avatars.githubusercontent.com/u/10137
|
||||
|
||||
- id: dracula-theme
|
||||
path: dracula
|
||||
@ -1,40 +0,0 @@
|
||||
export interface RemotePlugin {
|
||||
id: string // internal id of plugin
|
||||
name: string // display name of plugin
|
||||
metadata?: Record<string, string> | { description?: string } // metadata of plugin
|
||||
version: string // version of plugin appended with hash
|
||||
dath: string // date of last update
|
||||
path: string // path to zip file relative to yml
|
||||
sha256: string // sha256 hash of zip file
|
||||
requires: string[] // list of dependencies
|
||||
}
|
||||
|
||||
export type RemoteIndex = RemotePlugin[]
|
||||
|
||||
export interface LocalRepository {
|
||||
name?: string // name of repository
|
||||
collection: LocalCollection
|
||||
scripts: LocalSidecar[]
|
||||
}
|
||||
|
||||
export interface LocalCollection {
|
||||
index: string // index url of collection
|
||||
global_repo: string // repository of collection
|
||||
global_author?: string // author of collection if it is just owner
|
||||
base_path?: string // base path to plugins
|
||||
global_readme?: string // global readme file
|
||||
exclusive: boolean // exclude any entires not in sidecar
|
||||
}
|
||||
|
||||
export interface LocalSidecar {
|
||||
id: string // internal id of plugin
|
||||
path?: string // override path to plugin if not id
|
||||
description?: string // override description if not in index
|
||||
readme?: string // path to readme file
|
||||
author?: string // author of plugin
|
||||
screenshots?: string[] // screenshots of plugin
|
||||
hide?: boolean // hide plugin from generated index
|
||||
// this should only be used when the plugin is a backend dependency
|
||||
// or is in a completely broken state and wholly incompatible
|
||||
// or has been deprecated and should not be used
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
// utility functions for the builder
|
||||
export const sanitizeMD = (md: string) => md.replace("<", "<").replace(">", ">")
|
||||
export const infoLog = (message: string) => console.log(`[INFO] ${message}`)
|
||||
export const warnLog = (message: string) => console.warn(`[WARN] ${message}`)
|
||||
export const debugLog = (message: string) => console.debug(`[DEBUG] ${message}`)
|
||||
Loading…
x
Reference in New Issue
Block a user