Add missing art, set up nsfw filter
5
art/short-hair.eno
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
-- Alt Text
|
||||||
|
|
||||||
|
A brown haired girl with dark eyes looking at the viewer. She has a pale purple tank top and playing with her short hair.
|
||||||
|
|
||||||
|
-- Alt Text
|
8
art/sword-leftlean.eno
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
-- Alt Text
|
||||||
|
|
||||||
|
A girl is looking at you. She has dark brown hair, and pale skin. She has a dark dress with golden accents and is plastered against a simple light background.
|
||||||
|
|
||||||
|
-- Alt Text
|
||||||
|
|
||||||
|
Characters:
|
||||||
|
- Mysterious Swordswoman
|
BIN
assets/art/short-hair.webp
Normal file
After Width: | Height: | Size: 50 KiB |
|
@ -6,4 +6,5 @@ date: 2022-01-01
|
||||||
excludefeed: true
|
excludefeed: true
|
||||||
layout: art-detail
|
layout: art-detail
|
||||||
filename: /art/demon.webp
|
filename: /art/demon.webp
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
|
@ -4,4 +4,5 @@ date: 2021-01-01
|
||||||
excludefeed: true
|
excludefeed: true
|
||||||
layout: art-detail
|
layout: art-detail
|
||||||
filename: /art/ffxiv-sketches.webp
|
filename: /art/ffxiv-sketches.webp
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
|
@ -4,4 +4,5 @@ date: 2020-01-01
|
||||||
excludefeed: true
|
excludefeed: true
|
||||||
layout: art-detail
|
layout: art-detail
|
||||||
filename: /art/ffxiv-swim.webp
|
filename: /art/ffxiv-swim.webp
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
|
@ -6,4 +6,5 @@ date: 2021-01-01
|
||||||
excludefeed: true
|
excludefeed: true
|
||||||
layout: art-detail
|
layout: art-detail
|
||||||
filename: /art/miqote-swimsuit.webp
|
filename: /art/miqote-swimsuit.webp
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
|
@ -4,4 +4,5 @@ date: 2019-01-01
|
||||||
excludefeed: true
|
excludefeed: true
|
||||||
layout: art-detail
|
layout: art-detail
|
||||||
filename: /art/naked-elf.webp
|
filename: /art/naked-elf.webp
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
|
@ -4,4 +4,5 @@ date: 2019-01-01
|
||||||
excludefeed: true
|
excludefeed: true
|
||||||
layout: art-detail
|
layout: art-detail
|
||||||
filename: /art/naked.webp
|
filename: /art/naked.webp
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
9
content/art/short-hair.md
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
layout: art-detail
|
||||||
|
filename: /art/short-hair.webp
|
||||||
|
alt_text: "A brown haired girl with dark eyes looking at the viewer. She has a pale purple tank top and playing with her short hair."
|
||||||
|
date: 2023-02-01
|
||||||
|
slug: short-hair
|
||||||
|
characters:
|
||||||
|
arttags:
|
||||||
|
---
|
|
@ -8,6 +8,7 @@ slug: summer-byleth
|
||||||
characters:
|
characters:
|
||||||
- Byleth
|
- Byleth
|
||||||
arttags:
|
arttags:
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
||||||
This is my first proper painted character piece, and I'm pretty happy with how it turned out still. Why does she need a knife on the beach though?
|
This is my first proper painted character piece, and I'm pretty happy with how it turned out still. Why does she need a knife on the beach though?
|
||||||
|
|
|
@ -10,6 +10,7 @@ characters:
|
||||||
- Asuka
|
- Asuka
|
||||||
- Rei
|
- Rei
|
||||||
arttags:
|
arttags:
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
||||||
I drew this while on a trip, and I thought it was about time to do a summer-themed Evangelion drawing! Mari is of course having some fun with Asuka!
|
I drew this while on a trip, and I thought it was about time to do a summer-themed Evangelion drawing! Mari is of course having some fun with Asuka!
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
---
|
---
|
||||||
slug: sword-leftlean
|
|
||||||
date: 2023-01-05
|
|
||||||
layout: art-detail
|
layout: art-detail
|
||||||
filename: /art/sword-leftlean.webp
|
filename: /art/sword-leftlean.webp
|
||||||
|
alt_text: "A girl is looking at you. She has dark brown hair, and pale skin. She has a dark dress with golden accents and is plastered against a simple light background."
|
||||||
|
date: 2023-01-05
|
||||||
|
slug: sword-leftlean
|
||||||
|
characters:
|
||||||
|
- Mysterious Swordswoman
|
||||||
|
arttags:
|
||||||
---
|
---
|
||||||
|
|
|
@ -6,4 +6,5 @@ date: 2022-01-01
|
||||||
excludefeed: true
|
excludefeed: true
|
||||||
layout: art-detail
|
layout: art-detail
|
||||||
filename: /art/two-girls.webp
|
filename: /art/two-girls.webp
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
|
@ -9,4 +9,5 @@ slug: underwear
|
||||||
characters:
|
characters:
|
||||||
- Merume
|
- Merume
|
||||||
arttags:
|
arttags:
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
|
@ -6,4 +6,5 @@ date: 2022-01-01
|
||||||
excludefeed: true
|
excludefeed: true
|
||||||
layout: art-detail
|
layout: art-detail
|
||||||
filename: /art/viera1.webp
|
filename: /art/viera1.webp
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
|
@ -6,4 +6,5 @@ date: 2022-01-01
|
||||||
excludefeed: true
|
excludefeed: true
|
||||||
layout: art-detail
|
layout: art-detail
|
||||||
filename: /art/viera2.webp
|
filename: /art/viera2.webp
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
|
@ -8,4 +8,5 @@ excludefeed: true
|
||||||
slug: working-out
|
slug: working-out
|
||||||
characters:
|
characters:
|
||||||
arttags:
|
arttags:
|
||||||
|
nsfw: true
|
||||||
---
|
---
|
||||||
|
|
|
@ -195,14 +195,16 @@
|
||||||
"filename": "summer-eva-girls.webp",
|
"filename": "summer-eva-girls.webp",
|
||||||
"newgrounds_url": "https://www.newgrounds.com/art/view/redstrate/summer-eva-girls",
|
"newgrounds_url": "https://www.newgrounds.com/art/view/redstrate/summer-eva-girls",
|
||||||
"pixiv_url": "https://www.pixiv.net/en/artworks/100026963",
|
"pixiv_url": "https://www.pixiv.net/en/artworks/100026963",
|
||||||
"date": "7-27"
|
"date": "7-27",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "summer byleth",
|
"title": "summer byleth",
|
||||||
"filename": "summer-byleth.webp",
|
"filename": "summer-byleth.webp",
|
||||||
"pixiv_url": "https://www.pixiv.net/en/artworks/98726204",
|
"pixiv_url": "https://www.pixiv.net/en/artworks/98726204",
|
||||||
"newgrounds_url": "https://www.newgrounds.com/art/view/redstrate/summer-byleth",
|
"newgrounds_url": "https://www.newgrounds.com/art/view/redstrate/summer-byleth",
|
||||||
"date": "5-30"
|
"date": "5-30",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "after the rain",
|
"title": "after the rain",
|
||||||
|
@ -249,13 +251,15 @@
|
||||||
"filename": "tree2.webp"
|
"filename": "tree2.webp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename": "naked-elf.webp"
|
"filename": "naked-elf.webp",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename": "sketch-collect.webp"
|
"filename": "sketch-collect.webp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename": "naked.webp"
|
"filename": "naked.webp",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename": "2019.webp"
|
"filename": "2019.webp"
|
||||||
|
@ -369,7 +373,8 @@
|
||||||
"filename": "water-test.webp"
|
"filename": "water-test.webp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename": "ffxiv-swim.webp"
|
"filename": "ffxiv-swim.webp",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Trainwatching",
|
"title": "Trainwatching",
|
||||||
|
@ -458,7 +463,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Miq'ote in a Swimsuit",
|
"title": "Miq'ote in a Swimsuit",
|
||||||
"filename": "miqote-swimsuit.webp"
|
"filename": "miqote-swimsuit.webp",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename": "drawpile-snippet.webp"
|
"filename": "drawpile-snippet.webp"
|
||||||
|
@ -482,7 +488,8 @@
|
||||||
"filename": "aerith.webp"
|
"filename": "aerith.webp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename": "ffxiv-sketches.webp"
|
"filename": "ffxiv-sketches.webp",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename": "futaba.webp"
|
"filename": "futaba.webp"
|
||||||
|
@ -543,7 +550,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Underwear",
|
"title": "Underwear",
|
||||||
"filename": "underwear.webp"
|
"filename": "underwear.webp",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Sketch Dump",
|
"title": "Sketch Dump",
|
||||||
|
@ -567,15 +575,18 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Viera #1",
|
"title": "Viera #1",
|
||||||
"filename": "viera1.webp"
|
"filename": "viera1.webp",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Viera #2",
|
"title": "Viera #2",
|
||||||
"filename": "viera2.webp"
|
"filename": "viera2.webp",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Two Girls",
|
"title": "Two Girls",
|
||||||
"filename": "two-girls.webp"
|
"filename": "two-girls.webp",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Overalls",
|
"title": "Overalls",
|
||||||
|
@ -587,7 +598,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Demonness",
|
"title": "Demonness",
|
||||||
"filename": "demon.webp"
|
"filename": "demon.webp",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Guns",
|
"title": "Guns",
|
||||||
|
@ -599,7 +611,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Working Out",
|
"title": "Working Out",
|
||||||
"filename": "working-out.webp"
|
"filename": "working-out.webp",
|
||||||
|
"nsfw": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Funny",
|
"title": "Funny",
|
||||||
|
@ -646,6 +659,10 @@
|
||||||
{
|
{
|
||||||
"date": "1-5",
|
"date": "1-5",
|
||||||
"filename": "sword-leftlean.webp"
|
"filename": "sword-leftlean.webp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2-1",
|
||||||
|
"filename": "short-hair.webp"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
After Width: | Height: | Size: 864 B |
After Width: | Height: | Size: 908 B |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 1 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 558 B |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 764 B |
After Width: | Height: | Size: 844 B |
After Width: | Height: | Size: 1.9 KiB |
|
@ -6,13 +6,15 @@ import json
|
||||||
def write_field(f, key, value):
|
def write_field(f, key, value):
|
||||||
f.write(key + ": " + value + "\n")
|
f.write(key + ": " + value + "\n")
|
||||||
|
|
||||||
def parse_art(title, year, date, original_filename, filename, file):
|
def parse_art(title, year, date, nsfw, original_filename, filename, file):
|
||||||
with open(original_filename + '.md', 'w') as f:
|
with open(original_filename + '.md', 'w') as f:
|
||||||
document = enolib.parse(file)
|
document = enolib.parse(file)
|
||||||
|
|
||||||
f.write('---\n')
|
f.write('---\n')
|
||||||
|
|
||||||
|
if title is not None:
|
||||||
write_field(f, 'title', title)
|
write_field(f, 'title', title)
|
||||||
|
|
||||||
write_field(f, 'layout', 'art-detail')
|
write_field(f, 'layout', 'art-detail')
|
||||||
write_field(f, 'filename', '/art/' + filename + '.webp')
|
write_field(f, 'filename', '/art/' + filename + '.webp')
|
||||||
write_field(f, 'alt_text', "\"" + document.field('Alt Text').required_string_value().replace('\n','') + "\"")
|
write_field(f, 'alt_text', "\"" + document.field('Alt Text').required_string_value().replace('\n','') + "\"")
|
||||||
|
@ -37,13 +39,16 @@ def parse_art(title, year, date, original_filename, filename, file):
|
||||||
for tag in document.list('Tags').items():
|
for tag in document.list('Tags').items():
|
||||||
f.write("- " + tag.required_string_value().lower() + "\n")
|
f.write("- " + tag.required_string_value().lower() + "\n")
|
||||||
|
|
||||||
|
if nsfw is not None:
|
||||||
|
write_field(f, 'nsfw', str(nsfw).lower())
|
||||||
|
|
||||||
f.write('---\n')
|
f.write('---\n')
|
||||||
|
|
||||||
if document.optional_field('Description'):
|
if document.optional_field('Description'):
|
||||||
f.write(document.field('Description').required_string_value())
|
f.write(document.field('Description').required_string_value())
|
||||||
f.write('\n')
|
f.write('\n')
|
||||||
|
|
||||||
def parse_art_piece(json, year, date):
|
def parse_art_piece(json, year, date, nsfw):
|
||||||
filename_without_ext = os.path.splitext(json["filename"])[0]
|
filename_without_ext = os.path.splitext(json["filename"])[0]
|
||||||
|
|
||||||
with open(art_output_directory + "/" + filename_without_ext + '.md', 'w') as f:
|
with open(art_output_directory + "/" + filename_without_ext + '.md', 'w') as f:
|
||||||
|
@ -68,6 +73,9 @@ def parse_art_piece(json, year, date):
|
||||||
write_field(f, 'layout', 'art-detail')
|
write_field(f, 'layout', 'art-detail')
|
||||||
write_field(f, 'filename', '/art/' + json['filename'])
|
write_field(f, 'filename', '/art/' + json['filename'])
|
||||||
|
|
||||||
|
if nsfw is not None:
|
||||||
|
write_field(f, 'nsfw', str(nsfw).lower())
|
||||||
|
|
||||||
f.write('---\n')
|
f.write('---\n')
|
||||||
|
|
||||||
art_data_directory = '../art'
|
art_data_directory = '../art'
|
||||||
|
@ -140,19 +148,27 @@ with open('../data/art.json', 'r') as f:
|
||||||
|
|
||||||
path = os.path.join(art_data_directory, filename_without_ext + ".eno")
|
path = os.path.join(art_data_directory, filename_without_ext + ".eno")
|
||||||
|
|
||||||
|
nsfw = None
|
||||||
|
if "nsfw" in piece.keys():
|
||||||
|
nsfw = piece["nsfw"]
|
||||||
|
|
||||||
|
title = None
|
||||||
|
if "title" in piece.keys():
|
||||||
|
title = piece["title"]
|
||||||
|
|
||||||
if os.path.isfile(path):
|
if os.path.isfile(path):
|
||||||
num_eno = num_eno + 1
|
num_eno = num_eno + 1
|
||||||
with open(path) as f:
|
with open(path) as f:
|
||||||
if "date" in piece.keys():
|
if "date" in piece.keys():
|
||||||
parse_art(piece["title"], year["year"], piece["date"], art_output_directory + "/" + filename_without_ext, filename_without_ext, f.read())
|
parse_art(title, year["year"], piece["date"], nsfw, art_output_directory + "/" + filename_without_ext, filename_without_ext, f.read())
|
||||||
else:
|
else:
|
||||||
parse_art(piece["title"], year["year"], None, art_output_directory + "/" + filename_without_ext, filename_without_ext, f.read())
|
parse_art(title, year["year"], None, nsfw, art_output_directory + "/" + filename_without_ext, filename_without_ext, f.read())
|
||||||
else:
|
else:
|
||||||
num_noneno = num_noneno + 1
|
num_noneno = num_noneno + 1
|
||||||
if "date" in piece.keys():
|
if "date" in piece.keys():
|
||||||
parse_art_piece(piece, year["year"], piece["date"])
|
parse_art_piece(piece, year["year"], piece["date"], nsfw)
|
||||||
else:
|
else:
|
||||||
parse_art_piece(piece, year["year"], None)
|
parse_art_piece(piece, year["year"], None, nsfw)
|
||||||
|
|
||||||
print("Art coverage: {}/{}".format(num_eno, num_eno + num_noneno));
|
print("Art coverage: {}/{}".format(num_eno, num_eno + num_noneno));
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,11 @@
|
||||||
{{ $path := printf "/art/%d/%.2d/%s" (int $year) (int $month) $filename_without_ext}}
|
{{ $path := printf "/art/%d/%.2d/%s" (int $year) (int $month) $filename_without_ext}}
|
||||||
{{ $title := .Params.title }}
|
{{ $title := .Params.title }}
|
||||||
{{ $image := (resources.Get (printf "art/%s.webp" .Params.slug)).Resize "300x" }}
|
{{ $image := (resources.Get (printf "art/%s.webp" .Params.slug)).Resize "300x" }}
|
||||||
|
|
||||||
|
{{ if .Params.nsfw }}
|
||||||
|
{{ $image = $image | images.Filter (images.GaussianBlur 6) (images.Pixelate 8) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{ with $image }}
|
{{ with $image }}
|
||||||
<img class="grid-item" width="{{ .Width }}" height="{{ .Height }}" alt="{{ $title }}" src="{{ .Permalink }}"/>
|
<img class="grid-item" width="{{ .Width }}" height="{{ .Height }}" alt="{{ $title }}" src="{{ .Permalink }}"/>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
|
@ -27,3 +32,4 @@
|
||||||
<em>CANNOT FIND {{.Params.slug }}</em>
|
<em>CANNOT FIND {{.Params.slug }}</em>
|
||||||
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
`
|
||||||
|
|