update of docs
This commit is contained in:
+69
-28
@@ -1,10 +1,12 @@
|
||||
import os
|
||||
import logging
|
||||
from typing import List
|
||||
import PIL
|
||||
from os import path
|
||||
from meme_otron import img_factory
|
||||
from meme_otron import meme_db
|
||||
from meme_otron import utils
|
||||
from meme_otron import meme_otron
|
||||
|
||||
logging.basicConfig(format="[%(asctime)s][%(levelname)s][%(module)s] %(message)s", level=logging.WARNING)
|
||||
|
||||
@@ -13,12 +15,58 @@ meme_db.load_memes()
|
||||
|
||||
templates_dir = utils.relative_path(__file__, "templates")
|
||||
preview_dir = utils.relative_path(__file__, "preview")
|
||||
doc_template_file = utils.relative_path(__file__, "README-template.md")
|
||||
doc_file = utils.relative_path(__file__, "README.md")
|
||||
|
||||
COLUMNS = 3
|
||||
IMG_HEIGHT = 400
|
||||
|
||||
|
||||
def main():
|
||||
make_empty(templates_dir)
|
||||
make_empty(preview_dir)
|
||||
|
||||
with open(doc_template_file, mode='r') as f:
|
||||
content = "".join(f.readlines())
|
||||
|
||||
full_list = sorted(meme_db.LIST)
|
||||
template_list = [meme_id for meme_id in full_list if len(meme_db.get_meme(meme_id).texts) > 0]
|
||||
reaction_list = [meme_id for meme_id in full_list if meme_id not in template_list]
|
||||
|
||||
content = produce_template_list(content, "LIST1", template_list)
|
||||
content = produce_template_list(content, "LIST2", reaction_list)
|
||||
|
||||
content = produce_example(content, "EXAMPLE1", "example1.jpg", "",
|
||||
"brain3",
|
||||
"Making memes using an image editor",
|
||||
"Making memes using a Python script",
|
||||
"Making memes using a Discord bot")
|
||||
|
||||
content = produce_example(content, "EXAMPLE2", "example2.jpg",
|
||||
"The 5th text is not set and the 3rd is explicitly set to empty",
|
||||
"see_that_guy",
|
||||
"See that guy over there?",
|
||||
"He uses an image editor to make memes",
|
||||
"",
|
||||
"meme-otron dev")
|
||||
|
||||
content = produce_example(content, "EXAMPLE3", "example3.jpg",
|
||||
"Note how texts make paragraphs",
|
||||
"text",
|
||||
"*Meme has a 'made with meme-otron' watermark*",
|
||||
"reddit: ...",
|
||||
"9gag: ...",
|
||||
"meme-otron dev:",
|
||||
"-",
|
||||
"culture",
|
||||
"meme otron")
|
||||
|
||||
# TODO example 4 : complex composition
|
||||
|
||||
with open(doc_file, mode='w') as f:
|
||||
f.write(content)
|
||||
|
||||
|
||||
def make_empty(target_dir: str):
|
||||
if path.exists(target_dir):
|
||||
for file in os.listdir(target_dir):
|
||||
@@ -28,13 +76,9 @@ def make_empty(target_dir: str):
|
||||
os.mkdir(target_dir)
|
||||
|
||||
|
||||
make_empty(templates_dir)
|
||||
make_empty(preview_dir)
|
||||
|
||||
|
||||
def produce_doc(id_list):
|
||||
def produce_template_list(content: str, tag: str, id_list: List[str]):
|
||||
if len(id_list) == 0:
|
||||
return ""
|
||||
return content
|
||||
doc_content = "|" * (COLUMNS + 1) \
|
||||
+ "\n|" + ":---:|" * COLUMNS
|
||||
info_line = None
|
||||
@@ -65,31 +109,28 @@ def produce_doc(id_list):
|
||||
f"</a>|"
|
||||
print(i, meme_id)
|
||||
doc_content += "|" * (COLUMNS - (i % COLUMNS))
|
||||
return doc_content
|
||||
return inject_content(doc_content, content, tag)
|
||||
|
||||
|
||||
full_list = sorted(meme_db.LIST)
|
||||
template_list = [meme_id for meme_id in full_list if len(meme_db.get_meme(meme_id).texts) > 0]
|
||||
reaction_list = [meme_id for meme_id in full_list if meme_id not in template_list]
|
||||
def produce_example(content: str, tag: str, file_name: str, note: str, *args: str):
|
||||
doc_content = f"> {note}\n\n" \
|
||||
"```\n" + \
|
||||
" \n".join(['"' + a + '"' if ' ' in a or len(a) == 0 else a for a in args]) + \
|
||||
"\n```\n\n" \
|
||||
f""
|
||||
img, err = meme_otron.compute(*args)
|
||||
if img is not None:
|
||||
img.save(utils.relative_path(__file__, file_name))
|
||||
return inject_content(doc_content, content, tag)
|
||||
|
||||
doc_content1 = produce_doc(template_list)
|
||||
doc_content2 = produce_doc(reaction_list)
|
||||
|
||||
with open(doc_file, mode='r') as f:
|
||||
content = "".join(f.readlines())
|
||||
def inject_content(new_content, content, tag):
|
||||
start_str = f"<!--{tag}-START-->"
|
||||
end_str = f"<!--{tag}-END-->"
|
||||
i0 = content.index(start_str)
|
||||
i1 = content.index(end_str) + len(end_str)
|
||||
return content[:i0] + start_str + "\n" + new_content + "\n" + end_str + content[i1:]
|
||||
|
||||
i0 = content.index("<!--START1-->")
|
||||
i1 = content.index("<!--END1-->") + len("<!--END1-->")
|
||||
i2 = content.index("<!--START2-->")
|
||||
i3 = content.index("<!--END2-->") + len("<!--END2-->")
|
||||
|
||||
with open(doc_file, mode='w') as f:
|
||||
f.write(content[:i0])
|
||||
f.write("<!--START1-->\n")
|
||||
f.write(doc_content1)
|
||||
f.write("\n<!--END1-->")
|
||||
f.write(content[i1:i2])
|
||||
f.write("<!--START2-->\n")
|
||||
f.write(doc_content2)
|
||||
f.write("\n<!--END2-->")
|
||||
f.write(content[i3:])
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user