Source code for anim.scrapper
import logging
import os
import shutil
from pathlib import PurePosixPath
from jinja2 import Template
from sphinx_gallery.scrapers import matplotlib_scraper
import anim
logger = logging.getLogger(__name__)
[docs]
def pngScrapper(block, block_vars, gallery_conf, **kwargs):
namespace = block_vars["example_globals"]
for var in ["ANIM_FPS", "plot"]:
if var not in namespace:
logger.error(f"Carefull, it miss variable '{var}' in the exemple")
logger.error("we will use normal scrapper")
return matplotlib_scraper(block, block_vars, gallery_conf, **kwargs)
ANIM_FPS = namespace["ANIM_FPS"]
plot = namespace["plot"]
ANIM_MAX_FRAMES = namespace.get("ANIM_MAX_FRAMES", None)
ANIM_SAVEFIG_KWARGS = namespace.get("ANIM_SAVEFIG_KWARGS", dict())
compute = namespace.get("compute", None)
name = os.path.splitext(os.path.os.path.basename(block_vars["src_file"]))[0]
PATH_EXEMPLE = gallery_conf["examples_dirs"][0] # <== should be a list with 1 element
FOLDER = os.path.join(PATH_EXEMPLE, "../example_built", name)
# print("name : ", name)
os.makedirs(FOLDER, exist_ok=True)
image_path_iterator = block_vars["image_path_iterator"]
image_path = image_path_iterator.next()
image_path = PurePosixPath(image_path)
image_name = image_path.with_suffix("." + "gif")
video_name = image_path.with_suffix("." + "mp4")
print(image_name, video_name)
videoName = anim.animate(
plot,
FOLDER,
fps=ANIM_FPS,
compute=compute,
max_frames=ANIM_MAX_FRAMES,
savefig_kwargs=ANIM_SAVEFIG_KWARGS,
# gif=10,
# force=True,
# only_convert=True,
)
path_gif = anim.video2gif(videoName, 10)
# gif_file = glob(os.path.join(FOLDER, "*.gif"))[0]
# print(videoName)
# print(video_name)
shutil.copy2(path_gif, image_name)
shutil.copy2(videoName, video_name)
# print(gallery_conf["src_dir"])
# import pprint
# print("gallery_conf : ")
# pprint.pprint(gallery_conf)
# print("block_vars : ")
# pprint.pprint(block_vars)
# print("block : ")
# pprint.pprint(block)
# print("kwargs : ")
# pprint.pprint(kwargs)
# exit()
# exit()
# image_rst = figure_rst([video_name], "")
# print(image_rst)
# exit()
# image_rst = figure_rst([image_name], gallery_conf["src_dir"])
# env = Environment(loader=FileSystemLoader("templates"))
# template = env.get_template("tutorial.jinja")
# output = Template(template).render()
# print(image_rst)
# exit()
video_rst = Template(template_video).render(videoName=video_name)
# image_rst = image_rst # + output
return video_rst
template_video = """
.. video:: {{videoName}}
:autoplay:
:loop:
"""
template = """
Usage :
-------
bash
.. code-block:: console
$ anim examples/{py_name}
python
.. code-block:: Python
import anim
anim.animate(f_plot=plot, fps=ANIM_FPS, workFolder=ANIM_OUTPUT_FOLDER, max_frames=ANIM_MAX_FRAMES)
Python file used to create the example :
----------------------------------------
"""