* More Stuff
This commit is contained in:
parent
eea5b6cdf4
commit
ebf0812920
5
go.mod
5
go.mod
|
@ -2,7 +2,10 @@ module danlegt.com/stablediffusion-friends
|
||||||
|
|
||||||
go 1.20
|
go 1.20
|
||||||
|
|
||||||
require github.com/gin-gonic/gin v1.9.0
|
require (
|
||||||
|
github.com/TwiN/go-away v1.6.10
|
||||||
|
github.com/gin-gonic/gin v1.9.0
|
||||||
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/bytedance/sonic v1.8.8 // indirect
|
github.com/bytedance/sonic v1.8.8 // indirect
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -1,3 +1,5 @@
|
||||||
|
github.com/TwiN/go-away v1.6.10 h1:ScxGvhyJPu7VqLJJCpVx9vXBlQXi4wme3Vwx4z1WeC4=
|
||||||
|
github.com/TwiN/go-away v1.6.10/go.mod h1:e0adzvKFM6LIbU+K8pczlqYMaoH/6OwdvQEqg9wSRSU=
|
||||||
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
|
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
|
||||||
github.com/bytedance/sonic v1.8.8 h1:Kj4AYbZSeENfyXicsYppYKO0K2YWab+i2UTSY7Ukz9Q=
|
github.com/bytedance/sonic v1.8.8 h1:Kj4AYbZSeENfyXicsYppYKO0K2YWab+i2UTSY7Ukz9Q=
|
||||||
github.com/bytedance/sonic v1.8.8/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
|
github.com/bytedance/sonic v1.8.8/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
|
||||||
|
|
12
main.go
12
main.go
|
@ -7,6 +7,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"danlegt.com/stablediffusion-friends/lib/rtypes"
|
"danlegt.com/stablediffusion-friends/lib/rtypes"
|
||||||
|
goaway "github.com/TwiN/go-away"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -32,6 +33,11 @@ func main() {
|
||||||
|
|
||||||
imageDescriptior := c.PostForm("image_description")
|
imageDescriptior := c.PostForm("image_description")
|
||||||
|
|
||||||
|
if goaway.IsProfane(imageDescriptior) {
|
||||||
|
imageDescriptior = goaway.Censor(imageDescriptior)
|
||||||
|
fmt.Printf("Found profanity, censoring to: %s\n", imageDescriptior)
|
||||||
|
}
|
||||||
|
|
||||||
// Build the request
|
// Build the request
|
||||||
request := rtypes.SDTextToImageRequest{
|
request := rtypes.SDTextToImageRequest{
|
||||||
Prompt: imageDescriptior,
|
Prompt: imageDescriptior,
|
||||||
|
@ -41,7 +47,7 @@ func main() {
|
||||||
CfgScale: 8,
|
CfgScale: 8,
|
||||||
Width: 512,
|
Width: 512,
|
||||||
Height: 512,
|
Height: 512,
|
||||||
NegativePrompt: "nsfw, porn, naked, nude, nipple, penis, dick, vagina, asshole, visible nipple, nsfl, not safe for work, nudity, artifact, deformed, multiple limbs, ugly, gore, blood, sex, pornography",
|
NegativePrompt: "nsfw, porn, naked, nude, nipple, penis, dick, vagina, asshole, visible nipple, nsfl, not safe for work, nudity, artifact, deformed, multiple limbs, ugly, gore, blood, sex, pornography, penis, dick, genitalia, male genitalia, anus, penetration, double penetration, cock",
|
||||||
SamplerIndex: "Euler",
|
SamplerIndex: "Euler",
|
||||||
SendImages: true,
|
SendImages: true,
|
||||||
SaveImages: false,
|
SaveImages: false,
|
||||||
|
@ -102,7 +108,9 @@ func main() {
|
||||||
newImage, newImagesToDisplay := imagesToDisplay[0], imagesToDisplay[1:]
|
newImage, newImagesToDisplay := imagesToDisplay[0], imagesToDisplay[1:]
|
||||||
|
|
||||||
// Actually pop it
|
// Actually pop it
|
||||||
imagesToDisplay = newImagesToDisplay
|
if 3 > 2 {
|
||||||
|
imagesToDisplay = newImagesToDisplay
|
||||||
|
}
|
||||||
|
|
||||||
c.JSON(200, gin.H{
|
c.JSON(200, gin.H{
|
||||||
"image": newImage,
|
"image": newImage,
|
||||||
|
|
|
@ -8,6 +8,7 @@ const randomPrompts = [
|
||||||
]
|
]
|
||||||
|
|
||||||
var generatedImage = ``;
|
var generatedImage = ``;
|
||||||
|
var generatedImageDownloadBase64 = ``;
|
||||||
var nextSubmitAllowedTime = 0;
|
var nextSubmitAllowedTime = 0;
|
||||||
|
|
||||||
function generateRandomPrompt() {
|
function generateRandomPrompt() {
|
||||||
|
@ -101,6 +102,15 @@ async function handleImageGeneratorForm() {
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
imageGeneratorForm.querySelector(`#download-image-button`).addEventListener( `click`, e => {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
if ( !!generatedImageDownloadBase64 ) {
|
||||||
|
window.location.href = 'data:application/octet-stream;base64,' + generatedImageDownloadBase64;
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
imageGeneratorForm.querySelector(`#submit-image-button`).addEventListener( `click`, async (e) => {
|
imageGeneratorForm.querySelector(`#submit-image-button`).addEventListener( `click`, async (e) => {
|
||||||
|
|
||||||
// Cancel the default post, we wills end the data to an API endpoint
|
// Cancel the default post, we wills end the data to an API endpoint
|
||||||
|
@ -181,6 +191,7 @@ async function handleImageGeneratorForm() {
|
||||||
document.getElementById(`submit-image-button`).removeAttribute(`disabled`);
|
document.getElementById(`submit-image-button`).removeAttribute(`disabled`);
|
||||||
|
|
||||||
generatedImage = r.images[0];
|
generatedImage = r.images[0];
|
||||||
|
generatedImageDownloadBase64 = r.images[0];
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,20 +62,13 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex; flex-flow: column; padding: 0; margin: 0; margin-top: .5rem">
|
<div style="display: flex; flex-flow: column; padding: 0; margin: 0; margin-top: .5rem">
|
||||||
<textarea name="image_description"
|
<textarea name="image_description" id="image_description" rows="10" class="t95"></textarea>
|
||||||
id="image_description"
|
|
||||||
rows="10"
|
|
||||||
class="t95"></textarea>
|
|
||||||
<div style="display: flex; flex-flow: row; align-items: center; justify-content: center; margin: .5rem 0">
|
<div style="display: flex; flex-flow: row; align-items: center; justify-content: center; margin: .5rem 0">
|
||||||
<button class="btn-95"
|
<button class="btn-95" style="width: calc(50% - .25rem); margin-right: .25rem">Generate Image</button>
|
||||||
style="width: calc(50% - .5rem); margin-right: .5rem"
|
<button class="btn-95" style="width: calc(50% - .25rem); margin-left: .25rem" id="random-prompt-button">Random Prompt</button>
|
||||||
id="random-prompt-button">Random Prompt</button>
|
|
||||||
<button class="btn-95"
|
|
||||||
style="width: calc(50% - .5rem); margin-left: .5rem">Generate Image</button>
|
|
||||||
</div>
|
</div>
|
||||||
<button class="btn-95"
|
<button class="btn-95" id="download-image-button" style="margin-bottom: .5rem">Download Image</button>
|
||||||
id="submit-image-button"
|
<button class="btn-95" id="submit-image-button" disabled >Submit Image</button>
|
||||||
disabled>Submit Image</button>
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
Reference in New Issue