donotthink commited on
Commit
e644b18
·
verified ·
1 Parent(s): 804613f

sync: 上传 240 个文件,删除 2 个文件

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +4 -0
  2. meme_generator/memes_emoji/ai_ace/__init__.py +7 -7
  3. meme_generator/memes_emoji/ai_ace/images/0.png +2 -2
  4. meme_generator/memes_emoji/allegiance/__init__.py +3 -3
  5. meme_generator/memes_emoji/anyliew_struggling/__init__.py +3 -4
  6. meme_generator/memes_emoji/atri_like/__init__.py +3 -3
  7. meme_generator/memes_emoji/baby/__init__.py +3 -4
  8. meme_generator/memes_emoji/begged_me/__init__.py +12 -26
  9. meme_generator/memes_emoji/beloveds/__init__.py +3 -3
  10. meme_generator/memes_emoji/catch/__init__.py +1 -2
  11. meme_generator/memes_emoji/chillet_deer/__init__.py +4 -5
  12. meme_generator/memes_emoji/christmas_hat/__init__.py +1 -2
  13. meme_generator/memes_emoji/cleverer/__init__.py +1 -2
  14. meme_generator/memes_emoji/commemorate/__init__.py +4 -5
  15. meme_generator/memes_emoji/dalia_everyone/__init__.py +3 -3
  16. meme_generator/memes_emoji/deer_time/__init__.py +1 -2
  17. meme_generator/memes_emoji/dinosaur_head/__init__.py +10 -25
  18. meme_generator/memes_emoji/doro_contact/__init__.py +3 -3
  19. meme_generator/memes_emoji/doro_dear/__init__.py +3 -3
  20. meme_generator/memes_emoji/doro_group_photo/__init__.py +1 -2
  21. meme_generator/memes_emoji/doro_orange/__init__.py +3 -3
  22. meme_generator/memes_emoji/doro_surrounding_photos/__init__.py +3 -3
  23. meme_generator/memes_emoji/doro_work_for_you/__init__.py +3 -3
  24. meme_generator/memes_emoji/drumstick/__init__.py +1 -2
  25. meme_generator/memes_emoji/durian/__init__.py +2 -3
  26. meme_generator/memes_emoji/error3b/__init__.py +1 -2
  27. meme_generator/memes_emoji/family_know/__init__.py +3 -3
  28. meme_generator/memes_emoji/fireworks_head/__init__.py +11 -26
  29. meme_generator/memes_emoji/heart_shape/__init__.py +64 -0
  30. meme_generator/memes_emoji/heart_shape/images/0.png +3 -0
  31. meme_generator/memes_emoji/ice_tea_head/__init__.py +11 -26
  32. meme_generator/memes_emoji/ikun_basketball/__init__.py +3 -4
  33. meme_generator/memes_emoji/ikun_durian_head/__init__.py +4 -24
  34. meme_generator/memes_emoji/ikun_head/__init__.py +4 -24
  35. meme_generator/memes_emoji/ikun_like/__init__.py +3 -3
  36. meme_generator/memes_emoji/ikun_need_tv/__init__.py +3 -3
  37. meme_generator/memes_emoji/ikun_why_are_you/__init__.py +2 -3
  38. meme_generator/memes_emoji/izumi_sagiri_painting/__init__.py +3 -4
  39. meme_generator/memes_emoji/jd_delivery_person/__init__.py +3 -3
  40. meme_generator/memes_emoji/jd_takeout/__init__.py +3 -4
  41. meme_generator/memes_emoji/kfc/__init__.py +1 -2
  42. meme_generator/memes_emoji/kfc_thursday/__init__.py +1 -2
  43. meme_generator/memes_emoji/kurogames_aemeath/__init__.py +2 -3
  44. meme_generator/memes_emoji/kurogames_aemeath_holding/__init__.py +3 -1
  45. meme_generator/memes_emoji/kurogames_brqd/__init__.py +1 -2
  46. meme_generator/memes_emoji/kurogames_camellya_photo/__init__.py +3 -4
  47. meme_generator/memes_emoji/kurogames_camellya_red_hug/__init__.py +4 -5
  48. meme_generator/memes_emoji/kurogames_carlotta_play/__init__.py +3 -3
  49. meme_generator/memes_emoji/kurogames_cartethyia/__init__.py +1 -2
  50. meme_generator/memes_emoji/kurogames_cartethyia_feetup/__init__.py +4 -5
.gitattributes CHANGED
@@ -1178,3 +1178,7 @@ meme_generator/memes_emoji/kurogames_suoming_say/images/0.png filter=lfs diff=lf
1178
  meme_generator/memes_emoji/kurogames_xuanling_say/images/0.png filter=lfs diff=lfs merge=lfs -text
1179
  meme_generator/memes_emoji/nailoong_snuggle/images/20.png filter=lfs diff=lfs merge=lfs -text
1180
  meme_generator/memes_emoji/nailoong_snuggle/images/74.png filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
1178
  meme_generator/memes_emoji/kurogames_xuanling_say/images/0.png filter=lfs diff=lfs merge=lfs -text
1179
  meme_generator/memes_emoji/nailoong_snuggle/images/20.png filter=lfs diff=lfs merge=lfs -text
1180
  meme_generator/memes_emoji/nailoong_snuggle/images/74.png filter=lfs diff=lfs merge=lfs -text
1181
+ meme_generator/memes_emoji/ai_ace/images/0.png filter=lfs diff=lfs merge=lfs -text
1182
+ meme_generator/memes_emoji/heart_shape/images/0.png filter=lfs diff=lfs merge=lfs -text
1183
+ meme_generator/memes_emoji/prosperitywish/images/0.png filter=lfs diff=lfs merge=lfs -text
1184
+ meme_generator/memes_tudou/nawabao/images/0.png filter=lfs diff=lfs merge=lfs -text
meme_generator/memes_emoji/ai_ace/__init__.py CHANGED
@@ -3,7 +3,7 @@ from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def ai_ace(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -18,10 +18,10 @@ def ai_ace(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
18
  text = f"不用了\n我{name}是AI高手\n正在用AI写代码中ing"
19
  try:
20
  frame.draw_text(
21
- (35, 19, 594, 406),
22
  text,
23
  fill=(58, 58, 58),
24
- max_fontsize=100,
25
  min_fontsize=20,
26
  lines_align="left",
27
  font_families=["FZShaoEr-M11S"],
@@ -29,9 +29,9 @@ def ai_ace(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
29
  except ValueError:
30
  raise TextOverLength(name)
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
- img = imgs[0].convert("RGBA").resize((340, 340))
33
- return frame.copy().paste(img, (600, 77), alpha=True, below=True)
34
- return make_jpg_or_gif(images, make)
35
  add_meme(
36
  "ai_ace",
37
  ai_ace,
@@ -41,5 +41,5 @@ add_meme(
41
  max_texts=1,
42
  keywords=["AI高手","ai高手"],
43
  date_created=datetime(2025, 7, 11),
44
- date_modified=datetime(2025, 7, 11),
45
  )
 
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
+ from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def ai_ace(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
 
18
  text = f"不用了\n我{name}是AI高手\n正在用AI写代码中ing"
19
  try:
20
  frame.draw_text(
21
+ (115, 83, 1104, 744),
22
  text,
23
  fill=(58, 58, 58),
24
+ max_fontsize=200,
25
  min_fontsize=20,
26
  lines_align="left",
27
  font_families=["FZShaoEr-M11S"],
 
29
  except ValueError:
30
  raise TextOverLength(name)
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
+ img = imgs[0].convert("RGBA").resize((650, 650))
33
+ return frame.copy().paste(img, (1142, 151), alpha=True, below=True)
34
+ return make_png_or_gif(images, make)
35
  add_meme(
36
  "ai_ace",
37
  ai_ace,
 
41
  max_texts=1,
42
  keywords=["AI高手","ai高手"],
43
  date_created=datetime(2025, 7, 11),
44
+ date_modified=datetime(2026, 10, 12),
45
  )
meme_generator/memes_emoji/ai_ace/images/0.png CHANGED

Git LFS Details

  • SHA256: fa2e6a5ad864d59fa4d8a887bd79569b5abeca0b9c2fccbd3f2c2f286bd26fc5
  • Pointer size: 131 Bytes
  • Size of remote file: 487 kB

Git LFS Details

  • SHA256: 1658392c3c19a799622b7cc13cf7793fcfc415ca1550d8f71d8f01910c58ae88
  • Pointer size: 132 Bytes
  • Size of remote file: 2.9 MB
meme_generator/memes_emoji/allegiance/__init__.py CHANGED
@@ -3,7 +3,7 @@ from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def allegiance(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -31,7 +31,7 @@ def allegiance(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((436, 400))
33
  return frame.copy().paste(img, (279, 159), alpha=True,below=True)
34
- return make_jpg_or_gif(images, make)
35
  add_meme(
36
  "allegiance",
37
  allegiance,
@@ -41,5 +41,5 @@ add_meme(
41
  max_texts=1,
42
  keywords=["충성","忠橙","敬礼"],
43
  date_created=datetime(2025, 8, 16),
44
- date_modified=datetime(2025, 8, 16),
45
  )
 
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
+ from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def allegiance(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
 
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((436, 400))
33
  return frame.copy().paste(img, (279, 159), alpha=True,below=True)
34
+ return make_png_or_gif(images, make)
35
  add_meme(
36
  "allegiance",
37
  allegiance,
 
41
  max_texts=1,
42
  keywords=["충성","忠橙","敬礼"],
43
  date_created=datetime(2025, 8, 16),
44
+ date_modified=datetime(2026, 10, 12),
45
  )
meme_generator/memes_emoji/anyliew_struggling/__init__.py CHANGED
@@ -2,8 +2,7 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def anyliew_struggling(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -11,7 +10,7 @@ def anyliew_struggling(images: list[BuildImage], texts: list[str], args: MemeArg
11
  img = imgs[0].convert("RGBA").circle().resize((300, 300))
12
  img = img.rotate(25, expand=True)
13
  return frame.copy().paste(img, (275, 28), alpha=True,below=True)
14
- return make_jpg_or_gif(images, make)
15
  add_meme(
16
  "anyliew_struggling",
17
  anyliew_struggling,
@@ -21,5 +20,5 @@ add_meme(
21
  max_texts=0,
22
  keywords=["挣扎"],
23
  date_created=datetime(2025, 5, 26),
24
- date_modified=datetime(2025, 5, 26),
25
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
 
6
  img_dir = Path(__file__).parent / "images"
7
  def anyliew_struggling(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
8
  frame = BuildImage.open(img_dir / "0.png")
 
10
  img = imgs[0].convert("RGBA").circle().resize((300, 300))
11
  img = img.rotate(25, expand=True)
12
  return frame.copy().paste(img, (275, 28), alpha=True,below=True)
13
+ return make_png_or_gif(images, make)
14
  add_meme(
15
  "anyliew_struggling",
16
  anyliew_struggling,
 
20
  max_texts=0,
21
  keywords=["挣扎"],
22
  date_created=datetime(2025, 5, 26),
23
+ date_modified=datetime(2026, 10, 12),
24
  )
meme_generator/memes_emoji/atri_like/__init__.py CHANGED
@@ -4,7 +4,7 @@ from pil_utils import BuildImage
4
  from meme_generator import add_meme
5
  from meme_generator.exception import TextOverLength
6
  from meme_generator.tags import MemeTags
7
- from meme_generator.utils import make_jpg_or_gif
8
  img_dir = Path(__file__).parent / "images"
9
  default_text = "亚托莉喜欢这个"
10
  def atri_like(images: list[BuildImage], texts: list[str], args):
@@ -24,7 +24,7 @@ def atri_like(images: list[BuildImage], texts: list[str], args):
24
  def make(imgs: list[BuildImage]) -> BuildImage:
25
  img = imgs[0].convert("RGBA").resize((305, 235), keep_ratio=True)
26
  return frame.copy().paste(img, (106, 72), below=True)
27
- return make_jpg_or_gif(images, make)
28
  add_meme(
29
  "atri_like",
30
  atri_like,
@@ -36,5 +36,5 @@ add_meme(
36
  keywords=["亚托莉喜欢"],
37
  tags=MemeTags.atri,
38
  date_created=datetime(2025, 5, 25),
39
- date_modified=datetime(2025, 5, 25),
40
  )
 
4
  from meme_generator import add_meme
5
  from meme_generator.exception import TextOverLength
6
  from meme_generator.tags import MemeTags
7
+ from meme_generator.utils import make_png_or_gif
8
  img_dir = Path(__file__).parent / "images"
9
  default_text = "亚托莉喜欢这个"
10
  def atri_like(images: list[BuildImage], texts: list[str], args):
 
24
  def make(imgs: list[BuildImage]) -> BuildImage:
25
  img = imgs[0].convert("RGBA").resize((305, 235), keep_ratio=True)
26
  return frame.copy().paste(img, (106, 72), below=True)
27
+ return make_png_or_gif(images, make)
28
  add_meme(
29
  "atri_like",
30
  atri_like,
 
36
  keywords=["亚托莉喜欢"],
37
  tags=MemeTags.atri,
38
  date_created=datetime(2025, 5, 25),
39
+ date_modified=datetime(2026, 10, 12),
40
  )
meme_generator/memes_emoji/baby/__init__.py CHANGED
@@ -2,8 +2,7 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def baby (images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -11,7 +10,7 @@ def baby (images: list[BuildImage], texts: list[str], args: MemeArgsModel):
11
  img = imgs[0].convert("RGBA").resize((235, 235))
12
  img = img.rotate(-8, expand=True)
13
  return frame.copy().paste(img, (140, 480), alpha=True,below=True)
14
- return make_jpg_or_gif(images, make)
15
  add_meme(
16
  "baby",
17
  baby,
@@ -21,5 +20,5 @@ add_meme(
21
  max_texts=0,
22
  keywords=["宝宝","BB","bb","baby","Baby"],
23
  date_created=datetime(2025, 6, 11),
24
- date_modified=datetime(2025, 6, 11),
25
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
 
6
  img_dir = Path(__file__).parent / "images"
7
  def baby (images: list[BuildImage], texts: list[str], args: MemeArgsModel):
8
  frame = BuildImage.open(img_dir / "0.png")
 
10
  img = imgs[0].convert("RGBA").resize((235, 235))
11
  img = img.rotate(-8, expand=True)
12
  return frame.copy().paste(img, (140, 480), alpha=True,below=True)
13
+ return make_png_or_gif(images, make)
14
  add_meme(
15
  "baby",
16
  baby,
 
20
  max_texts=0,
21
  keywords=["宝宝","BB","bb","baby","Baby"],
22
  date_created=datetime(2025, 6, 11),
23
+ date_modified=datetime(2026, 10, 12),
24
  )
meme_generator/memes_emoji/begged_me/__init__.py CHANGED
@@ -2,42 +2,28 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
 
8
  def begged_me(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
10
- ta = "她"
11
- name = ta
12
- if texts:
13
- name = texts[0]
14
- elif args.user_infos:
15
- info = args.user_infos[0]
16
- ta = "他" if info.gender == "male" else "她"
17
- name = info.name or ta
18
- text = f""
19
- try:
20
- frame.draw_text(
21
- (235, 615, 478, 659),
22
- text,
23
- max_fontsize=100,
24
- min_fontsize=20,
25
- valign="bottom",
26
- )
27
- except ValueError:
28
- raise TextOverLength(name)
29
  def make(imgs: list[BuildImage]) -> BuildImage:
30
  img = imgs[0].convert("RGBA").circle().resize((1720, 1720))
31
  img = img.rotate(-15, expand=True)
32
- return frame.copy().paste(img, (125, 655), alpha=True, below=True )
33
- return make_jpg_or_gif(images, make)
 
 
34
  add_meme(
35
  "begged_me",
36
  begged_me,
37
  min_images=1,
38
  max_images=1,
39
- max_texts=1,
 
40
  keywords=["求我"],
41
  date_created=datetime(2025, 3, 10),
42
- date_modified=datetime(2025, 3, 10),
43
- )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
6
+
7
  img_dir = Path(__file__).parent / "images"
8
+
9
  def begged_me(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
10
  frame = BuildImage.open(img_dir / "0.png")
11
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  def make(imgs: list[BuildImage]) -> BuildImage:
13
  img = imgs[0].convert("RGBA").circle().resize((1720, 1720))
14
  img = img.rotate(-15, expand=True)
15
+ return frame.copy().paste(img, (125, 655), alpha=True, below=True)
16
+
17
+ return make_png_or_gif(images, make)
18
+
19
  add_meme(
20
  "begged_me",
21
  begged_me,
22
  min_images=1,
23
  max_images=1,
24
+ min_texts=0,
25
+ max_texts=0,
26
  keywords=["求我"],
27
  date_created=datetime(2025, 3, 10),
28
+ date_modified=datetime(2026, 10, 12),
29
+ )
meme_generator/memes_emoji/beloveds/__init__.py CHANGED
@@ -3,7 +3,7 @@ from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def beloveds(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -31,7 +31,7 @@ def beloveds(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((330, 330))
33
  return frame.copy().paste(img, (330, 140), alpha=True,below=True)
34
- return make_jpg_or_gif(images, make)
35
  add_meme(
36
  "beloveds",
37
  beloveds,
@@ -41,5 +41,5 @@ add_meme(
41
  max_texts=1,
42
  keywords=["挚爱"],
43
  date_created=datetime(2025, 5, 26),
44
- date_modified=datetime(2025, 10, 4),
45
  )
 
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
+ from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def beloveds(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
 
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((330, 330))
33
  return frame.copy().paste(img, (330, 140), alpha=True,below=True)
34
+ return make_png_or_gif(images, make)
35
  add_meme(
36
  "beloveds",
37
  beloveds,
 
41
  max_texts=1,
42
  keywords=["挚爱"],
43
  date_created=datetime(2025, 5, 26),
44
+ date_modified=datetime(2026, 10, 12),
45
  )
meme_generator/memes_emoji/catch/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def catch (images: list[BuildImage], texts: list[str], args: MemeArgsModel):
@@ -20,5 +19,5 @@ add_meme(
20
  max_texts=0,
21
  keywords=["抓住"],
22
  date_created=datetime(2026, 4, 17),
23
- date_modified=datetime(2026, 4, 17),
24
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_png_or_gif
6
  img_dir = Path(__file__).parent / "images"
7
  def catch (images: list[BuildImage], texts: list[str], args: MemeArgsModel):
 
19
  max_texts=0,
20
  keywords=["抓住"],
21
  date_created=datetime(2026, 4, 17),
22
+ date_modified=datetime(2026, 10, 12),
23
  )
meme_generator/memes_emoji/chillet_deer/__init__.py CHANGED
@@ -2,23 +2,22 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def chillet_deer(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
10
  def make(imgs: list[BuildImage]) -> BuildImage:
11
  img = imgs[0].convert("RGBA").resize((549, 463))
12
  return frame.copy().paste(img, (202, 289), alpha=True, below=True )
13
- return make_jpg_or_gif(images, make)
14
  add_meme(
15
  "chillet_deer",
16
  chillet_deer,
17
  min_images=1,
18
  max_images=1,
19
  min_texts=0,
20
- max_texts=1,
21
  keywords=["疾风鹿"],
22
  date_created=datetime(2025, 8, 14),
23
- date_modified=datetime(2025, 8, 14),
24
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
 
6
  img_dir = Path(__file__).parent / "images"
7
  def chillet_deer(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
8
  frame = BuildImage.open(img_dir / "0.png")
9
  def make(imgs: list[BuildImage]) -> BuildImage:
10
  img = imgs[0].convert("RGBA").resize((549, 463))
11
  return frame.copy().paste(img, (202, 289), alpha=True, below=True )
12
+ return make_png_or_gif(images, make)
13
  add_meme(
14
  "chillet_deer",
15
  chillet_deer,
16
  min_images=1,
17
  max_images=1,
18
  min_texts=0,
19
+ max_texts=0,
20
  keywords=["疾风鹿"],
21
  date_created=datetime(2025, 8, 14),
22
+ date_modified=datetime(2026, 10, 12),
23
  )
meme_generator/memes_emoji/christmas_hat/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def christmas_hat(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
@@ -20,5 +19,5 @@ add_meme(
20
  max_texts=0,
21
  keywords=["圣诞帽子","圣诞帽"],
22
  date_created=datetime(2025, 12, 6),
23
- date_modified=datetime(2025, 12, 6),
24
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_png_or_gif
6
  img_dir = Path(__file__).parent / "images"
7
  def christmas_hat(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
 
19
  max_texts=0,
20
  keywords=["圣诞帽子","圣诞帽"],
21
  date_created=datetime(2025, 12, 6),
22
+ date_modified=datetime(2026, 10, 12),
23
  )
meme_generator/memes_emoji/cleverer/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_png_or_gif
7
  from meme_generator.tags import MemeTags
8
  img_dir = Path(__file__).parent / "images"
@@ -59,5 +58,5 @@ add_meme(
59
  max_texts=1,
60
  keywords=["比聪明"],
61
  date_created=datetime(2025, 11, 21),
62
- date_modified=datetime(2025, 11, 21),
63
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_png_or_gif
6
  from meme_generator.tags import MemeTags
7
  img_dir = Path(__file__).parent / "images"
 
58
  max_texts=1,
59
  keywords=["比聪明"],
60
  date_created=datetime(2025, 11, 21),
61
+ date_modified=datetime(2026, 10, 12),
62
  )
meme_generator/memes_emoji/commemorate/__init__.py CHANGED
@@ -2,8 +2,7 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def commemorate(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -11,15 +10,15 @@ def commemorate(images: list[BuildImage], texts: list[str], args: MemeArgsModel)
11
  img = imgs[0].convert("RGBA").resize((815, 747), keep_ratio=True)
12
  img = img.convert("L").convert("RGBA")
13
  return frame.copy().paste(img, (129, 218), alpha=True,below=True)
14
- return make_jpg_or_gif(images, make)
15
  add_meme(
16
  "commemorate",
17
  commemorate,
18
  min_images=1,
19
  max_images=1,
20
  min_texts=0,
21
- max_texts=1,
22
  keywords=["奠","寄"],
23
  date_created=datetime(2026, 1, 12),
24
- date_modified=datetime(2026, 1, 12),
25
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
 
6
  img_dir = Path(__file__).parent / "images"
7
  def commemorate(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
8
  frame = BuildImage.open(img_dir / "0.png")
 
10
  img = imgs[0].convert("RGBA").resize((815, 747), keep_ratio=True)
11
  img = img.convert("L").convert("RGBA")
12
  return frame.copy().paste(img, (129, 218), alpha=True,below=True)
13
+ return make_png_or_gif(images, make)
14
  add_meme(
15
  "commemorate",
16
  commemorate,
17
  min_images=1,
18
  max_images=1,
19
  min_texts=0,
20
+ max_texts=0,
21
  keywords=["奠","寄"],
22
  date_created=datetime(2026, 1, 12),
23
+ date_modified=datetime(2026, 10, 12),
24
  )
meme_generator/memes_emoji/dalia_everyone/__init__.py CHANGED
@@ -3,7 +3,7 @@ from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def dalia_everyone(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -31,7 +31,7 @@ def dalia_everyone(images: list[BuildImage], texts: list[str], args: MemeArgsMod
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((95, 95)).circle().rotate(-5, expand=True)
33
  return frame.copy().paste(img, (611, 387), alpha=True, below=True)
34
- return make_jpg_or_gif(images, make)
35
  add_meme(
36
  "dalia_everyone",
37
  dalia_everyone,
@@ -41,5 +41,5 @@ add_meme(
41
  max_texts=1,
42
  keywords=["所有人"],
43
  date_created=datetime(2025, 12, 1),
44
- date_modified=datetime(2025, 12, 2),
45
  )
 
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
+ from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def dalia_everyone(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
 
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((95, 95)).circle().rotate(-5, expand=True)
33
  return frame.copy().paste(img, (611, 387), alpha=True, below=True)
34
+ return make_png_or_gif(images, make)
35
  add_meme(
36
  "dalia_everyone",
37
  dalia_everyone,
 
41
  max_texts=1,
42
  keywords=["所有人"],
43
  date_created=datetime(2025, 12, 1),
44
+ date_modified=datetime(2026, 10, 12),
45
  )
meme_generator/memes_emoji/deer_time/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_png_or_gif
7
  from meme_generator.tags import MemeTags
8
  img_dir = Path(__file__).parent / "images"
@@ -21,5 +20,5 @@ add_meme(
21
  max_texts=0,
22
  keywords=["鹿管时间"],
23
  date_created=datetime(2025, 7, 2),
24
- date_modified=datetime(2025, 9, 13),
25
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_png_or_gif
6
  from meme_generator.tags import MemeTags
7
  img_dir = Path(__file__).parent / "images"
 
20
  max_texts=0,
21
  keywords=["鹿管时间"],
22
  date_created=datetime(2025, 7, 2),
23
+ date_modified=datetime(2026, 10, 12),
24
  )
meme_generator/memes_emoji/dinosaur_head/__init__.py CHANGED
@@ -2,42 +2,27 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
 
8
  def dinosaur_head(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
10
- ta = "她"
11
- name = ta
12
- if texts:
13
- name = texts[0]
14
- elif args.user_infos:
15
- info = args.user_infos[0]
16
- ta = "他" if info.gender == "male" else "她"
17
- name = info.name or ta
18
- text = f""
19
- try:
20
- frame.draw_text(
21
- (27, 73, 374, 136),
22
- text,
23
- max_fontsize=100,
24
- min_fontsize=20,
25
- valign="bottom",
26
- )
27
- except ValueError:
28
- raise TextOverLength(name)
29
  def make(imgs: list[BuildImage]) -> BuildImage:
30
  img = imgs[0].convert("RGBA").resize((620, 620))
31
  return frame.copy().paste(img, (215, 245), alpha=True, below=True)
32
- return make_jpg_or_gif(images, make)
 
 
33
  add_meme(
34
  "dinosaur_head",
35
  dinosaur_head,
36
  min_images=1,
37
  max_images=1,
38
  min_texts=0,
39
- max_texts=1,
40
  keywords=["恐龙头"],
41
  date_created=datetime(2024, 7, 26),
42
- date_modified=datetime(2024, 7, 26),
43
- )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
6
+
7
  img_dir = Path(__file__).parent / "images"
8
+
9
  def dinosaur_head(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
10
  frame = BuildImage.open(img_dir / "0.png")
11
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  def make(imgs: list[BuildImage]) -> BuildImage:
13
  img = imgs[0].convert("RGBA").resize((620, 620))
14
  return frame.copy().paste(img, (215, 245), alpha=True, below=True)
15
+
16
+ return make_png_or_gif(images, make)
17
+
18
  add_meme(
19
  "dinosaur_head",
20
  dinosaur_head,
21
  min_images=1,
22
  max_images=1,
23
  min_texts=0,
24
+ max_texts=0,
25
  keywords=["恐龙头"],
26
  date_created=datetime(2024, 7, 26),
27
+ date_modified=datetime(2026, 10, 12),
28
+ )
meme_generator/memes_emoji/doro_contact/__init__.py CHANGED
@@ -3,7 +3,7 @@ from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def doro_contact(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -31,7 +31,7 @@ def doro_contact(images: list[BuildImage], texts: list[str], args: MemeArgsModel
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((108, 108))
33
  return frame.copy().paste(img, (145, 278), alpha=True, below=True)
34
- return make_jpg_or_gif(images, make)
35
  add_meme(
36
  "doro_contact",
37
  doro_contact,
@@ -41,5 +41,5 @@ add_meme(
41
  max_texts=1,
42
  keywords=["交往","doro交往","Doro交往","DORO交往","桃乐丝交往"],
43
  date_created=datetime(2025, 7, 7),
44
- date_modified=datetime(2025, 7, 7),
45
  )
 
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
+ from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def doro_contact(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
 
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((108, 108))
33
  return frame.copy().paste(img, (145, 278), alpha=True, below=True)
34
+ return make_png_or_gif(images, make)
35
  add_meme(
36
  "doro_contact",
37
  doro_contact,
 
41
  max_texts=1,
42
  keywords=["交往","doro交往","Doro交往","DORO交往","桃乐丝交往"],
43
  date_created=datetime(2025, 7, 7),
44
+ date_modified=datetime(2026, 10, 12),
45
  )
meme_generator/memes_emoji/doro_dear/__init__.py CHANGED
@@ -3,7 +3,7 @@ from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def doro_dear(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -31,7 +31,7 @@ def doro_dear(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((100, 100))
33
  return frame.copy().paste(img, (576, 529), alpha=True, below=True)
34
- return make_jpg_or_gif(images, make)
35
  add_meme(
36
  "doro_dear",
37
  doro_dear,
@@ -41,5 +41,5 @@ add_meme(
41
  max_texts=1,
42
  keywords=["最爱","doro最爱","Doro最爱","DORO最爱","桃乐丝最爱"],
43
  date_created=datetime(2025, 7, 7),
44
- date_modified=datetime(2025, 7, 7),
45
  )
 
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
+ from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def doro_dear(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
 
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((100, 100))
33
  return frame.copy().paste(img, (576, 529), alpha=True, below=True)
34
+ return make_png_or_gif(images, make)
35
  add_meme(
36
  "doro_dear",
37
  doro_dear,
 
41
  max_texts=1,
42
  keywords=["最爱","doro最爱","Doro最爱","DORO最爱","桃乐丝最爱"],
43
  date_created=datetime(2025, 7, 7),
44
+ date_modified=datetime(2026, 10, 12),
45
  )
meme_generator/memes_emoji/doro_group_photo/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def doro_group_photo(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
@@ -20,5 +19,5 @@ add_meme(
20
  max_texts=0,
21
  keywords=["doro合影","Doro合影","桃乐丝合影"],
22
  date_created=datetime(2026, 2, 16),
23
- date_modified=datetime(2026, 2, 16),
24
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_png_or_gif
6
  img_dir = Path(__file__).parent / "images"
7
  def doro_group_photo(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
 
19
  max_texts=0,
20
  keywords=["doro合影","Doro合影","桃乐丝合影"],
21
  date_created=datetime(2026, 2, 16),
22
+ date_modified=datetime(2026, 10, 12),
23
  )
meme_generator/memes_emoji/doro_orange/__init__.py CHANGED
@@ -3,7 +3,7 @@ from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def doro_orange(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -31,7 +31,7 @@ def doro_orange(images: list[BuildImage], texts: list[str], args: MemeArgsModel)
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((270, 270))
33
  return frame.copy().paste(img, (588, 65), alpha=True, below=True)
34
- return make_jpg_or_gif(images, make)
35
  add_meme(
36
  "doro_orange",
37
  doro_orange,
@@ -41,5 +41,5 @@ add_meme(
41
  max_texts=1,
42
  keywords=["欧润吉","润吉","润橘","橘子","橘","🍊"],
43
  date_created=datetime(2025, 7, 7),
44
- date_modified=datetime(2025, 7, 7),
45
  )
 
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
+ from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def doro_orange(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
 
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((270, 270))
33
  return frame.copy().paste(img, (588, 65), alpha=True, below=True)
34
+ return make_png_or_gif(images, make)
35
  add_meme(
36
  "doro_orange",
37
  doro_orange,
 
41
  max_texts=1,
42
  keywords=["欧润吉","润吉","润橘","橘子","橘","🍊"],
43
  date_created=datetime(2025, 7, 7),
44
+ date_modified=datetime(2026, 10, 12),
45
  )
meme_generator/memes_emoji/doro_surrounding_photos/__init__.py CHANGED
@@ -3,7 +3,7 @@ from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def doro_surrounding_photos(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -39,7 +39,7 @@ def doro_surrounding_photos(images: list[BuildImage], texts: list[str], args: Me
39
  img3 = img.resize((100, 100)).rotate(-15, expand=True)
40
  result_frame.paste(img3, (815, 1296), alpha=True, below=True)
41
  return result_frame
42
- return make_jpg_or_gif(images, make)
43
  add_meme(
44
  "doro_surrounding_photos",
45
  doro_surrounding_photos,
@@ -49,5 +49,5 @@ add_meme(
49
  max_texts=1,
50
  keywords=["周边写真"],
51
  date_created=datetime(2025, 9, 13),
52
- date_modified=datetime(2025, 9, 13),
53
  )
 
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
+ from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def doro_surrounding_photos(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
 
39
  img3 = img.resize((100, 100)).rotate(-15, expand=True)
40
  result_frame.paste(img3, (815, 1296), alpha=True, below=True)
41
  return result_frame
42
+ return make_png_or_gif(images, make)
43
  add_meme(
44
  "doro_surrounding_photos",
45
  doro_surrounding_photos,
 
49
  max_texts=1,
50
  keywords=["周边写真"],
51
  date_created=datetime(2025, 9, 13),
52
+ date_modified=datetime(2026, 10, 12),
53
  )
meme_generator/memes_emoji/doro_work_for_you/__init__.py CHANGED
@@ -3,7 +3,7 @@ from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def doro_work_for_you(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -39,7 +39,7 @@ def doro_work_for_you(images: list[BuildImage], texts: list[str], args: MemeArgs
39
  img3 = img.resize((35, 35)).rotate(35, expand=True)
40
  result_frame.paste(img3, (60, 450), alpha=True, below=True)
41
  return result_frame
42
- return make_jpg_or_gif(images, make)
43
  add_meme(
44
  "doro_work_for_you",
45
  doro_work_for_you,
@@ -49,5 +49,5 @@ add_meme(
49
  max_texts=1,
50
  keywords=["为你打工"],
51
  date_created=datetime(2025, 9, 2),
52
- date_modified=datetime(2025, 9, 2),
53
  )
 
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
+ from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def doro_work_for_you(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
 
39
  img3 = img.resize((35, 35)).rotate(35, expand=True)
40
  result_frame.paste(img3, (60, 450), alpha=True, below=True)
41
  return result_frame
42
+ return make_png_or_gif(images, make)
43
  add_meme(
44
  "doro_work_for_you",
45
  doro_work_for_you,
 
49
  max_texts=1,
50
  keywords=["为你打工"],
51
  date_created=datetime(2025, 9, 2),
52
+ date_modified=datetime(2026, 10, 12),
53
  )
meme_generator/memes_emoji/drumstick/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_png_or_gif
7
  from meme_generator.tags import MemeTags
8
  img_dir = Path(__file__).parent / "images"
@@ -23,5 +22,5 @@ add_meme(
23
  keywords=["🍗","鸡腿"],
24
  tags=MemeTags.genshin,
25
  date_created=datetime(2025, 7, 1),
26
- date_modified=datetime(2025, 7, 1),
27
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_png_or_gif
6
  from meme_generator.tags import MemeTags
7
  img_dir = Path(__file__).parent / "images"
 
22
  keywords=["🍗","鸡腿"],
23
  tags=MemeTags.genshin,
24
  date_created=datetime(2025, 7, 1),
25
+ date_modified=datetime(2026, 10, 12),
26
  )
meme_generator/memes_emoji/durian/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def durian(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
@@ -18,8 +17,8 @@ add_meme(
18
  min_images=1,
19
  max_images=1,
20
  min_texts=0,
21
- max_texts=1,
22
  keywords=["榴莲"],
23
  date_created=datetime(2025, 5, 29),
24
- date_modified=datetime(2025, 5, 29),
25
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_png_or_gif
6
  img_dir = Path(__file__).parent / "images"
7
  def durian(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
 
17
  min_images=1,
18
  max_images=1,
19
  min_texts=0,
20
+ max_texts=0,
21
  keywords=["榴莲"],
22
  date_created=datetime(2025, 5, 29),
23
+ date_modified=datetime(2026, 10, 12),
24
  )
meme_generator/memes_emoji/error3b/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def error3b(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
@@ -22,5 +21,5 @@ add_meme(
22
  max_texts=0,
23
  keywords=["30亿error", "三十亿报错"],
24
  date_created=datetime(2026, 4, 17),
25
- date_modified=datetime(2026, 4, 17),
26
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_png_or_gif
6
  img_dir = Path(__file__).parent / "images"
7
  def error3b(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
 
21
  max_texts=0,
22
  keywords=["30亿error", "三十亿报错"],
23
  date_created=datetime(2026, 4, 17),
24
+ date_modified=datetime(2026, 10, 12),
25
  )
meme_generator/memes_emoji/family_know/__init__.py CHANGED
@@ -3,7 +3,7 @@ from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def family_know(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -31,7 +31,7 @@ def family_know(images: list[BuildImage], texts: list[str], args: MemeArgsModel)
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").circle().resize((205, 205))
33
  return frame.copy().paste(img, (199, 937), alpha=True,below=True)
34
- return make_jpg_or_gif(images, make)
35
  add_meme(
36
  "family_know",
37
  family_know,
@@ -41,5 +41,5 @@ add_meme(
41
  max_texts=1,
42
  keywords=["家人们谁懂啊"],
43
  date_created=datetime(2025, 9, 9),
44
- date_modified=datetime(2025, 9, 9),
45
  )
 
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
+ from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def family_know(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
 
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").circle().resize((205, 205))
33
  return frame.copy().paste(img, (199, 937), alpha=True,below=True)
34
+ return make_png_or_gif(images, make)
35
  add_meme(
36
  "family_know",
37
  family_know,
 
41
  max_texts=1,
42
  keywords=["家人们谁懂啊"],
43
  date_created=datetime(2025, 9, 9),
44
+ date_modified=datetime(2026, 10, 12),
45
  )
meme_generator/memes_emoji/fireworks_head/__init__.py CHANGED
@@ -2,42 +2,27 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
 
8
  def fireworks_head(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
10
- ta = "她"
11
- name = ta
12
- if texts:
13
- name = texts[0]
14
- elif args.user_infos:
15
- info = args.user_infos[0]
16
- ta = "他" if info.gender == "male" else "她"
17
- name = info.name or ta
18
- text = f""
19
- try:
20
- frame.draw_text(
21
- (235, 615, 478, 659),
22
- text,
23
- max_fontsize=100,
24
- min_fontsize=20,
25
- valign="bottom",
26
- )
27
- except ValueError:
28
- raise TextOverLength(name)
29
  def make(imgs: list[BuildImage]) -> BuildImage:
30
  img = imgs[0].convert("RGBA").circle().resize((320, 320))
31
- return frame.copy().paste(img, (340, 165), alpha=True, below=True )
32
- return make_jpg_or_gif(images, make)
 
 
33
  add_meme(
34
  "fireworks_head",
35
  fireworks_head,
36
  min_images=1,
37
  max_images=1,
38
  min_texts=0,
39
- max_texts=1,
40
  keywords=["烟花头像"],
41
  date_created=datetime(2025, 1, 28),
42
- date_modified=datetime(2025, 1, 28),
43
- )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
6
+
7
  img_dir = Path(__file__).parent / "images"
8
+
9
  def fireworks_head(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
10
  frame = BuildImage.open(img_dir / "0.png")
11
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  def make(imgs: list[BuildImage]) -> BuildImage:
13
  img = imgs[0].convert("RGBA").circle().resize((320, 320))
14
+ return frame.copy().paste(img, (340, 165), alpha=True, below=True)
15
+
16
+ return make_png_or_gif(images, make)
17
+
18
  add_meme(
19
  "fireworks_head",
20
  fireworks_head,
21
  min_images=1,
22
  max_images=1,
23
  min_texts=0,
24
+ max_texts=0,
25
  keywords=["烟花头像"],
26
  date_created=datetime(2025, 1, 28),
27
+ date_modified=datetime(2026, 10, 12),
28
+ )
meme_generator/memes_emoji/heart_shape/__init__.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from datetime import datetime
2
+ from pathlib import Path
3
+
4
+ from pil_utils import BuildImage
5
+
6
+ from meme_generator import MemeArgsModel, add_meme
7
+ from meme_generator.utils import make_png_or_gif
8
+
9
+ img_dir = Path(__file__).parent / "images"
10
+
11
+ AVATAR_SLOTS: list[tuple[int, int, int, int]] = [
12
+ (77, 710, 220, 220), # 1
13
+ (77, 968, 220, 220), # 2
14
+ (322, 429, 246, 246), # 3
15
+ (599, 429, 246, 246), # 4
16
+ (350, 710, 485, 485), # 5
17
+ (350, 1255, 215, 215), # 6
18
+ (620, 1255, 495, 495), # 7
19
+ (891, 710, 220, 220), # 8
20
+ (891, 968, 220, 220), # 9
21
+ (891, 1793, 220, 220), # 10
22
+ (1163, 429, 500, 500), # 11
23
+ (1163, 968, 500, 500), # 12
24
+ (1163, 1508, 247, 247), # 13
25
+ (1709, 688, 244, 244), # 14
26
+ (1709, 974, 244, 244), # 15
27
+ ]
28
+
29
+
30
+ def heart_shape(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
31
+ frame = BuildImage.open(img_dir / "0.png")
32
+
33
+ def make(imgs: list[BuildImage]) -> BuildImage:
34
+ result = frame.copy()
35
+ for i, (x, y, w, h) in enumerate(AVATAR_SLOTS):
36
+ img = imgs[i % len(imgs)].convert("RGBA").square().resize((w, h))
37
+ result.paste(img, (x, y), alpha=True)
38
+ if texts:
39
+ result.draw_text(
40
+ (180, 93, 1868, 295),
41
+ texts[0],
42
+ fill=(255, 255, 255),
43
+ allow_wrap=True,
44
+ max_fontsize=300,
45
+ min_fontsize=15,
46
+ lines_align="center",
47
+ font_families=["FZKaTong-M19S"],
48
+ )
49
+ return result
50
+
51
+ return make_png_or_gif(images, make)
52
+
53
+
54
+ add_meme(
55
+ "heart_shape",
56
+ heart_shape,
57
+ min_images=1,
58
+ max_images=15,
59
+ min_texts=0,
60
+ max_texts=1,
61
+ keywords=["爱心形状"],
62
+ date_created=datetime(2026, 10, 12),
63
+ date_modified=datetime(2026, 10, 12),
64
+ )
meme_generator/memes_emoji/heart_shape/images/0.png ADDED

Git LFS Details

  • SHA256: 01068af253c0adf6b5e9c5d7136aac9aaf93d72edc300cccb1b0116ed995e86c
  • Pointer size: 132 Bytes
  • Size of remote file: 1.03 MB
meme_generator/memes_emoji/ice_tea_head/__init__.py CHANGED
@@ -2,42 +2,27 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
 
8
  def ice_tea_head(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
10
- ta = "她"
11
- name = ta
12
- if texts:
13
- name = texts[0]
14
- elif args.user_infos:
15
- info = args.user_infos[0]
16
- ta = "他" if info.gender == "male" else "她"
17
- name = info.name or ta
18
- text = f""
19
- try:
20
- frame.draw_text(
21
- (235, 615, 478, 659),
22
- text,
23
- max_fontsize=100,
24
- min_fontsize=20,
25
- valign="bottom",
26
- )
27
- except ValueError:
28
- raise TextOverLength(name)
29
  def make(imgs: list[BuildImage]) -> BuildImage:
30
  img = imgs[0].convert("RGBA").circle().resize((500, 500))
31
- return frame.copy().paste(img, (320,35), alpha=True)
32
- return make_jpg_or_gif(images, make)
 
 
33
  add_meme(
34
  "ice_tea_head",
35
  ice_tea_head,
36
  min_images=1,
37
  max_images=1,
38
  min_texts=0,
39
- max_texts=1,
40
  keywords=["冰红茶"],
41
  date_created=datetime(2025, 3, 25),
42
- date_modified=datetime(2025, 3, 25),
43
- )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
6
+
7
  img_dir = Path(__file__).parent / "images"
8
+
9
  def ice_tea_head(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
10
  frame = BuildImage.open(img_dir / "0.png")
11
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  def make(imgs: list[BuildImage]) -> BuildImage:
13
  img = imgs[0].convert("RGBA").circle().resize((500, 500))
14
+ return frame.copy().paste(img, (320, 35), alpha=True)
15
+
16
+ return make_png_or_gif(images, make)
17
+
18
  add_meme(
19
  "ice_tea_head",
20
  ice_tea_head,
21
  min_images=1,
22
  max_images=1,
23
  min_texts=0,
24
+ max_texts=0,
25
  keywords=["冰红茶"],
26
  date_created=datetime(2025, 3, 25),
27
+ date_modified=datetime(2026, 10, 12),
28
+ )
meme_generator/memes_emoji/ikun_basketball/__init__.py CHANGED
@@ -2,8 +2,7 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def ikun_basketball(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -11,7 +10,7 @@ def ikun_basketball(images: list[BuildImage], texts: list[str], args: MemeArgsMo
11
  img = imgs[0].convert("RGBA").circle().resize((250, 250))
12
  img = img.rotate(10, expand=True)
13
  return frame.copy().paste(img, (322, 129), alpha=True,below=True)
14
- return make_jpg_or_gif(images, make)
15
  add_meme(
16
  "ikun_basketball",
17
  ikun_basketball,
@@ -19,5 +18,5 @@ add_meme(
19
  max_images=1,
20
  keywords=["篮球","🏀"],
21
  date_created=datetime(2025, 5, 29),
22
- date_modified=datetime(2025, 5, 29),
23
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
 
6
  img_dir = Path(__file__).parent / "images"
7
  def ikun_basketball(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
8
  frame = BuildImage.open(img_dir / "0.png")
 
10
  img = imgs[0].convert("RGBA").circle().resize((250, 250))
11
  img = img.rotate(10, expand=True)
12
  return frame.copy().paste(img, (322, 129), alpha=True,below=True)
13
+ return make_png_or_gif(images, make)
14
  add_meme(
15
  "ikun_basketball",
16
  ikun_basketball,
 
18
  max_images=1,
19
  keywords=["篮球","🏀"],
20
  date_created=datetime(2025, 5, 29),
21
+ date_modified=datetime(2026, 10, 12),
22
  )
meme_generator/memes_emoji/ikun_durian_head/__init__.py CHANGED
@@ -2,42 +2,22 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def ikun_durian_head(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
10
- ta = "她"
11
- name = ta
12
- if texts:
13
- name = texts[0]
14
- elif args.user_infos:
15
- info = args.user_infos[0]
16
- ta = "他" if info.gender == "male" else "她"
17
- name = info.name or ta
18
- text = f""
19
- try:
20
- frame.draw_text(
21
- (235, 615, 478, 659),
22
- text,
23
- max_fontsize=100,
24
- min_fontsize=20,
25
- valign="bottom",
26
- )
27
- except ValueError:
28
- raise TextOverLength(name)
29
  def make(imgs: list[BuildImage]) -> BuildImage:
30
  img = imgs[0].convert("RGBA").resize((180, 180))
31
  return frame.copy().paste(img, (62, 93), alpha=True, below=True )
32
- return make_jpg_or_gif(images, make)
33
  add_meme(
34
  "ikun_durian_head",
35
  ikun_durian_head,
36
  min_images=1,
37
  max_images=1,
38
  min_texts=0,
39
- max_texts=1,
40
  keywords=["榴莲坤头"],
41
  date_created=datetime(2025, 3, 29),
42
- date_modified=datetime(2025, 3, 29),
43
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
 
6
  img_dir = Path(__file__).parent / "images"
7
  def ikun_durian_head(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
8
  frame = BuildImage.open(img_dir / "0.png")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  def make(imgs: list[BuildImage]) -> BuildImage:
10
  img = imgs[0].convert("RGBA").resize((180, 180))
11
  return frame.copy().paste(img, (62, 93), alpha=True, below=True )
12
+ return make_png_or_gif(images, make)
13
  add_meme(
14
  "ikun_durian_head",
15
  ikun_durian_head,
16
  min_images=1,
17
  max_images=1,
18
  min_texts=0,
19
+ max_texts=0,
20
  keywords=["榴莲坤头"],
21
  date_created=datetime(2025, 3, 29),
22
+ date_modified=datetime(2026, 10, 12),
23
  )
meme_generator/memes_emoji/ikun_head/__init__.py CHANGED
@@ -2,42 +2,22 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def ikun_head(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
10
- ta = "她"
11
- name = ta
12
- if texts:
13
- name = texts[0]
14
- elif args.user_infos:
15
- info = args.user_infos[0]
16
- ta = "他" if info.gender == "male" else "她"
17
- name = info.name or ta
18
- text = f""
19
- try:
20
- frame.draw_text(
21
- (235, 615, 478, 659),
22
- text,
23
- max_fontsize=100,
24
- min_fontsize=20,
25
- valign="bottom",
26
- )
27
- except ValueError:
28
- raise TextOverLength(name)
29
  def make(imgs: list[BuildImage]) -> BuildImage:
30
  img = imgs[0].convert("RGBA").circle().resize((220, 220))
31
  return frame.copy().paste(img, (73, 75), alpha=True, below=True )
32
- return make_jpg_or_gif(images, make)
33
  add_meme(
34
  "ikun_head",
35
  ikun_head,
36
  min_images=1,
37
  max_images=1,
38
  min_texts=0,
39
- max_texts=1,
40
  keywords=["小黑子"],
41
  date_created=datetime(2025, 3, 25),
42
- date_modified=datetime(2025, 3, 25),
43
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
 
6
  img_dir = Path(__file__).parent / "images"
7
  def ikun_head(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
8
  frame = BuildImage.open(img_dir / "0.png")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  def make(imgs: list[BuildImage]) -> BuildImage:
10
  img = imgs[0].convert("RGBA").circle().resize((220, 220))
11
  return frame.copy().paste(img, (73, 75), alpha=True, below=True )
12
+ return make_png_or_gif(images, make)
13
  add_meme(
14
  "ikun_head",
15
  ikun_head,
16
  min_images=1,
17
  max_images=1,
18
  min_texts=0,
19
+ max_texts=0,
20
  keywords=["小黑子"],
21
  date_created=datetime(2025, 3, 25),
22
+ date_modified=datetime(2026, 10, 12),
23
  )
meme_generator/memes_emoji/ikun_like/__init__.py CHANGED
@@ -4,7 +4,7 @@ from pil_utils import BuildImage
4
  from meme_generator import add_meme
5
  from meme_generator.exception import TextOverLength
6
  from meme_generator.tags import MemeTags
7
- from meme_generator.utils import make_jpg_or_gif
8
  img_dir = Path(__file__).parent / "images"
9
  default_text = "坤坤喜欢这个"
10
  def ikun_like(images: list[BuildImage], texts: list[str], args):
@@ -24,7 +24,7 @@ def ikun_like(images: list[BuildImage], texts: list[str], args):
24
  def make(imgs: list[BuildImage]) -> BuildImage:
25
  img = imgs[0].convert("RGBA").resize((305, 235), keep_ratio=True)
26
  return frame.copy().paste(img, (106, 72), below=True)
27
- return make_jpg_or_gif(images, make)
28
  add_meme(
29
  "ikun_like",
30
  ikun_like,
@@ -36,5 +36,5 @@ add_meme(
36
  keywords=["坤坤喜欢"],
37
  tags=["ikun","坤坤","真爱粉","喜欢"],
38
  date_created=datetime(2025, 5, 25),
39
- date_modified=datetime(2025, 5, 25),
40
  )
 
4
  from meme_generator import add_meme
5
  from meme_generator.exception import TextOverLength
6
  from meme_generator.tags import MemeTags
7
+ from meme_generator.utils import make_png_or_gif
8
  img_dir = Path(__file__).parent / "images"
9
  default_text = "坤坤喜欢这个"
10
  def ikun_like(images: list[BuildImage], texts: list[str], args):
 
24
  def make(imgs: list[BuildImage]) -> BuildImage:
25
  img = imgs[0].convert("RGBA").resize((305, 235), keep_ratio=True)
26
  return frame.copy().paste(img, (106, 72), below=True)
27
+ return make_png_or_gif(images, make)
28
  add_meme(
29
  "ikun_like",
30
  ikun_like,
 
36
  keywords=["坤坤喜欢"],
37
  tags=["ikun","坤坤","真爱粉","喜欢"],
38
  date_created=datetime(2025, 5, 25),
39
+ date_modified=datetime(2026, 10, 12),
40
  )
meme_generator/memes_emoji/ikun_need_tv/__init__.py CHANGED
@@ -3,7 +3,7 @@ from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def ikun_need_tv(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -31,7 +31,7 @@ def ikun_need_tv(images: list[BuildImage], texts: list[str], args: MemeArgsModel
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((518, 488))
33
  return frame.copy().paste(img, (614, 118), alpha=True, below=True)
34
- return make_jpg_or_gif(images, make)
35
  add_meme(
36
  "ikun_need_tv",
37
  ikun_need_tv,
@@ -41,5 +41,5 @@ add_meme(
41
  max_texts=1,
42
  keywords=["坤坤想要"],
43
  date_created=datetime(2025, 9, 4),
44
- date_modified=datetime(2025, 9, 4),
45
  )
 
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
+ from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def ikun_need_tv(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
 
31
  def make(imgs: list[BuildImage]) -> BuildImage:
32
  img = imgs[0].convert("RGBA").resize((518, 488))
33
  return frame.copy().paste(img, (614, 118), alpha=True, below=True)
34
+ return make_png_or_gif(images, make)
35
  add_meme(
36
  "ikun_need_tv",
37
  ikun_need_tv,
 
41
  max_texts=1,
42
  keywords=["坤坤想要"],
43
  date_created=datetime(2025, 9, 4),
44
+ date_modified=datetime(2026, 10, 12),
45
  )
meme_generator/memes_emoji/ikun_why_are_you/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def ikun_why_are_you(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
@@ -18,8 +17,8 @@ add_meme(
18
  min_images=1,
19
  max_images=1,
20
  min_texts=0,
21
- max_texts=1,
22
  keywords=["你干嘛","你干吗"],
23
  date_created=datetime(2024, 7, 26),
24
- date_modified=datetime(2024, 7, 26),
25
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_jpg_or_gif
6
  img_dir = Path(__file__).parent / "images"
7
  def ikun_why_are_you(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
 
17
  min_images=1,
18
  max_images=1,
19
  min_texts=0,
20
+ max_texts=0,
21
  keywords=["你干嘛","你干吗"],
22
  date_created=datetime(2024, 7, 26),
23
+ date_modified=datetime(2026, 10, 12),
24
  )
meme_generator/memes_emoji/izumi_sagiri_painting/__init__.py CHANGED
@@ -2,15 +2,14 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def izumi_sagiri_painting (images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
10
  def make(imgs: list[BuildImage]) -> BuildImage:
11
  img = imgs[0].convert("RGBA").resize((1270, 730)).rotate(-10, expand=True)
12
  return frame.copy().paste(img, (350, 1423), alpha=True,below=True)
13
- return make_jpg_or_gif(images, make)
14
  add_meme(
15
  "izumi_sagiri_painting",
16
  izumi_sagiri_painting ,
@@ -20,5 +19,5 @@ add_meme(
20
  max_texts=0,
21
  keywords=["和泉纱雾画画"],
22
  date_created=datetime(2025, 9, 21),
23
- date_modified=datetime(2025, 9, 21),
24
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
 
6
  img_dir = Path(__file__).parent / "images"
7
  def izumi_sagiri_painting (images: list[BuildImage], texts: list[str], args: MemeArgsModel):
8
  frame = BuildImage.open(img_dir / "0.png")
9
  def make(imgs: list[BuildImage]) -> BuildImage:
10
  img = imgs[0].convert("RGBA").resize((1270, 730)).rotate(-10, expand=True)
11
  return frame.copy().paste(img, (350, 1423), alpha=True,below=True)
12
+ return make_png_or_gif(images, make)
13
  add_meme(
14
  "izumi_sagiri_painting",
15
  izumi_sagiri_painting ,
 
19
  max_texts=0,
20
  keywords=["和泉纱雾画画"],
21
  date_created=datetime(2025, 9, 21),
22
+ date_modified=datetime(2026, 10, 12),
23
  )
meme_generator/memes_emoji/jd_delivery_person/__init__.py CHANGED
@@ -4,7 +4,7 @@ from pil_utils import BuildImage
4
  from PIL import ImageEnhance
5
  from meme_generator import MemeArgsModel, add_meme
6
  from meme_generator.exception import TextOverLength
7
- from meme_generator.utils import make_jpg_or_gif
8
  img_dir = Path(__file__).parent / "images"
9
  def jd_delivery_person(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
10
  frame = BuildImage.open(img_dir / "0.png")
@@ -39,7 +39,7 @@ def jd_delivery_person(images: list[BuildImage], texts: list[str], args: MemeArg
39
  img = BuildImage(img_darkened)
40
  img = img.rotate(-20, expand=True)
41
  return frame.copy().paste(img, (420, 1000), alpha=True,below=True)
42
- return make_jpg_or_gif(images, make)
43
  add_meme(
44
  "jd_delivery_person",
45
  jd_delivery_person,
@@ -49,5 +49,5 @@ add_meme(
49
  max_texts=1,
50
  keywords=["京东外卖骑手","京东外卖工牌"],
51
  date_created=datetime(2025, 3, 24),
52
- date_modified=datetime(2025, 9, 25),
53
  )
 
4
  from PIL import ImageEnhance
5
  from meme_generator import MemeArgsModel, add_meme
6
  from meme_generator.exception import TextOverLength
7
+ from meme_generator.utils import make_png_or_gif
8
  img_dir = Path(__file__).parent / "images"
9
  def jd_delivery_person(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
10
  frame = BuildImage.open(img_dir / "0.png")
 
39
  img = BuildImage(img_darkened)
40
  img = img.rotate(-20, expand=True)
41
  return frame.copy().paste(img, (420, 1000), alpha=True,below=True)
42
+ return make_png_or_gif(images, make)
43
  add_meme(
44
  "jd_delivery_person",
45
  jd_delivery_person,
 
49
  max_texts=1,
50
  keywords=["京东外卖骑手","京东外卖工牌"],
51
  date_created=datetime(2025, 3, 24),
52
+ date_modified=datetime(2026, 10, 12),
53
  )
meme_generator/memes_emoji/jd_takeout/__init__.py CHANGED
@@ -2,8 +2,7 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def jd_takeout(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
9
  frame = BuildImage.open(img_dir / "0.png")
@@ -11,7 +10,7 @@ def jd_takeout(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
11
  img = imgs[0].convert("RGBA").circle().resize((230, 230))
12
  img = img.rotate(10, expand=True)
13
  return frame.copy().paste(img, (625, 5), alpha=True,below=True)
14
- return make_jpg_or_gif(images, make)
15
  add_meme(
16
  "jd_takeout",
17
  jd_takeout,
@@ -19,5 +18,5 @@ add_meme(
19
  max_images=1,
20
  keywords=["京东外卖"],
21
  date_created=datetime(2025, 5, 29),
22
- date_modified=datetime(2025, 5, 29),
23
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
 
6
  img_dir = Path(__file__).parent / "images"
7
  def jd_takeout(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
8
  frame = BuildImage.open(img_dir / "0.png")
 
10
  img = imgs[0].convert("RGBA").circle().resize((230, 230))
11
  img = img.rotate(10, expand=True)
12
  return frame.copy().paste(img, (625, 5), alpha=True,below=True)
13
+ return make_png_or_gif(images, make)
14
  add_meme(
15
  "jd_takeout",
16
  jd_takeout,
 
18
  max_images=1,
19
  keywords=["京东外卖"],
20
  date_created=datetime(2025, 5, 29),
21
+ date_modified=datetime(2026, 10, 12),
22
  )
meme_generator/memes_emoji/kfc/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_png_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def kfc(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
@@ -21,5 +20,5 @@ add_meme(
21
  max_texts=0,
22
  keywords=["kfc","KFC","肯德基"],
23
  date_created=datetime(2025, 5, 29),
24
- date_modified=datetime(2025, 5, 29),
25
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_png_or_gif
6
  img_dir = Path(__file__).parent / "images"
7
  def kfc(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
 
20
  max_texts=0,
21
  keywords=["kfc","KFC","肯德基"],
22
  date_created=datetime(2025, 5, 29),
23
+ date_modified=datetime(2026, 10, 12),
24
  )
meme_generator/memes_emoji/kfc_thursday/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_jpg_or_gif
7
  img_dir = Path(__file__).parent / "images"
8
  def kfc_thursday(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
@@ -18,5 +17,5 @@ add_meme(
18
  max_images=1,
19
  keywords=["星期四","疯狂星期四"],
20
  date_created=datetime(2025, 5, 29),
21
- date_modified=datetime(2025, 5, 29),
22
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_jpg_or_gif
6
  img_dir = Path(__file__).parent / "images"
7
  def kfc_thursday(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
 
17
  max_images=1,
18
  keywords=["星期四","疯狂星期四"],
19
  date_created=datetime(2025, 5, 29),
20
+ date_modified=datetime(2026, 10, 12),
21
  )
meme_generator/memes_emoji/kurogames_aemeath/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_png_or_gif
7
  from meme_generator.tags import MemeTags
8
  img_dir = Path(__file__).parent / "images"
@@ -18,9 +17,9 @@ add_meme(
18
  min_images=1,
19
  max_images=1,
20
  min_texts=0,
21
- max_texts=1,
22
  keywords=["爱弥斯"],
23
  tags=MemeTags.wuthering_waves,
24
  date_created=datetime(2026, 2, 7),
25
- date_modified=datetime(2026, 2, 7),
26
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_png_or_gif
6
  from meme_generator.tags import MemeTags
7
  img_dir = Path(__file__).parent / "images"
 
17
  min_images=1,
18
  max_images=1,
19
  min_texts=0,
20
+ max_texts=0,
21
  keywords=["爱弥斯"],
22
  tags=MemeTags.wuthering_waves,
23
  date_created=datetime(2026, 2, 7),
24
+ date_modified=datetime(2026, 10, 12),
25
  )
meme_generator/memes_emoji/kurogames_aemeath_holding/__init__.py CHANGED
@@ -4,6 +4,7 @@ from PIL.Image import Image as IMG
4
  from pil_utils import BuildImage
5
  from meme_generator import add_meme
6
  from meme_generator.utils import save_gif
 
7
  img_dir = Path(__file__).parent / "images"
8
  def kurogames_aemeath_holding(images: list[BuildImage], texts, args):
9
  img = images[0].convert("RGBA")
@@ -22,6 +23,7 @@ add_meme(
22
  min_images=1,
23
  max_images=1,
24
  keywords=["爱弥斯捧"],
 
25
  date_created=datetime(2026, 2, 24),
26
- date_modified=datetime(2026, 2, 24),
27
  )
 
4
  from pil_utils import BuildImage
5
  from meme_generator import add_meme
6
  from meme_generator.utils import save_gif
7
+ from meme_generator.tags import MemeTags
8
  img_dir = Path(__file__).parent / "images"
9
  def kurogames_aemeath_holding(images: list[BuildImage], texts, args):
10
  img = images[0].convert("RGBA")
 
23
  min_images=1,
24
  max_images=1,
25
  keywords=["爱弥斯捧"],
26
+ tags=MemeTags.wuthering_waves,
27
  date_created=datetime(2026, 2, 24),
28
+ date_modified=datetime(2026, 10, 12),
29
  )
meme_generator/memes_emoji/kurogames_brqd/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_png_or_gif
7
  from meme_generator.tags import MemeTags
8
  img_dir = Path(__file__).parent / "images"
@@ -22,5 +21,5 @@ add_meme(
22
  keywords=["百日签到"],
23
  tags=MemeTags.wuthering_waves,
24
  date_created=datetime(2026, 2, 16),
25
- date_modified=datetime(2026, 2, 16),
26
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_png_or_gif
6
  from meme_generator.tags import MemeTags
7
  img_dir = Path(__file__).parent / "images"
 
21
  keywords=["百日签到"],
22
  tags=MemeTags.wuthering_waves,
23
  date_created=datetime(2026, 2, 16),
24
+ date_modified=datetime(2026, 10, 12),
25
  )
meme_generator/memes_emoji/kurogames_camellya_photo/__init__.py CHANGED
@@ -2,8 +2,7 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  from meme_generator.tags import MemeTags
8
  img_dir = Path(__file__).parent / "images"
9
  def kurogames_camellya_photo(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
@@ -12,7 +11,7 @@ def kurogames_camellya_photo(images: list[BuildImage], texts: list[str], args: M
12
  img = imgs[0].convert("RGBA").resize((345, 310))
13
  img = img.rotate(-5, expand=True)
14
  return frame.copy().paste(img, (170, 500), alpha=True,below=True)
15
- return make_jpg_or_gif(images, make)
16
  add_meme(
17
  "kurogames_camellya_photo",
18
  kurogames_camellya_photo,
@@ -23,5 +22,5 @@ add_meme(
23
  keywords=["大傻椿照片","傻椿照片"],
24
  tags=MemeTags.wuthering_waves,
25
  date_created=datetime(2025, 7, 4),
26
- date_modified=datetime(2025, 7, 4),
27
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
 
6
  from meme_generator.tags import MemeTags
7
  img_dir = Path(__file__).parent / "images"
8
  def kurogames_camellya_photo(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
 
11
  img = imgs[0].convert("RGBA").resize((345, 310))
12
  img = img.rotate(-5, expand=True)
13
  return frame.copy().paste(img, (170, 500), alpha=True,below=True)
14
+ return make_png_or_gif(images, make)
15
  add_meme(
16
  "kurogames_camellya_photo",
17
  kurogames_camellya_photo,
 
22
  keywords=["大傻椿照片","傻椿照片"],
23
  tags=MemeTags.wuthering_waves,
24
  date_created=datetime(2025, 7, 4),
25
+ date_modified=datetime(2026, 10, 12),
26
  )
meme_generator/memes_emoji/kurogames_camellya_red_hug/__init__.py CHANGED
@@ -2,8 +2,7 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  from meme_generator.tags import MemeTags
8
  img_dir = Path(__file__).parent / "images"
9
  def kurogames_camellya_red_hug(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
@@ -11,16 +10,16 @@ def kurogames_camellya_red_hug(images: list[BuildImage], texts: list[str], args:
11
  def make(imgs: list[BuildImage]) -> BuildImage:
12
  img = imgs[0].convert("RGBA").resize((428, 428))
13
  return frame.copy().paste(img, (399, 0), alpha=True,below=True)
14
- return make_jpg_or_gif(images, make)
15
  add_meme(
16
  "kurogames_camellya_red_hug",
17
  kurogames_camellya_red_hug,
18
  min_images=1,
19
  max_images=1,
20
  min_texts=0,
21
- max_texts=1,
22
  keywords=["红椿抱"],
23
  tags=MemeTags.wuthering_waves,
24
  date_created=datetime(2025, 12, 19),
25
- date_modified=datetime(2025, 12, 19),
26
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
 
6
  from meme_generator.tags import MemeTags
7
  img_dir = Path(__file__).parent / "images"
8
  def kurogames_camellya_red_hug(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
 
10
  def make(imgs: list[BuildImage]) -> BuildImage:
11
  img = imgs[0].convert("RGBA").resize((428, 428))
12
  return frame.copy().paste(img, (399, 0), alpha=True,below=True)
13
+ return make_png_or_gif(images, make)
14
  add_meme(
15
  "kurogames_camellya_red_hug",
16
  kurogames_camellya_red_hug,
17
  min_images=1,
18
  max_images=1,
19
  min_texts=0,
20
+ max_texts=0,
21
  keywords=["红椿抱"],
22
  tags=MemeTags.wuthering_waves,
23
  date_created=datetime(2025, 12, 19),
24
+ date_modified=datetime(2026, 10, 12),
25
  )
meme_generator/memes_emoji/kurogames_carlotta_play/__init__.py CHANGED
@@ -3,7 +3,7 @@ from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  from meme_generator.tags import MemeTags
8
  img_dir = Path(__file__).parent / "images"
9
  def kurogames_carlotta_play(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
@@ -32,7 +32,7 @@ def kurogames_carlotta_play(images: list[BuildImage], texts: list[str], args: Me
32
  def make(imgs: list[BuildImage]) -> BuildImage:
33
  img = imgs[0].convert("RGBA").resize((290, 340)).rotate(-60, expand=True)
34
  return frame.copy().paste(img, (1090, 920), alpha=True,below=True)
35
- return make_jpg_or_gif(images, make)
36
  add_meme(
37
  "kurogames_carlotta_play",
38
  kurogames_carlotta_play,
@@ -43,5 +43,5 @@ add_meme(
43
  keywords=["一边玩去吧","一边玩去"],
44
  tags=MemeTags.wuthering_waves,
45
  date_created=datetime(2025, 10, 11),
46
- date_modified=datetime(2025, 10, 11),
47
  )
 
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
  from meme_generator.exception import TextOverLength
6
+ from meme_generator.utils import make_png_or_gif
7
  from meme_generator.tags import MemeTags
8
  img_dir = Path(__file__).parent / "images"
9
  def kurogames_carlotta_play(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
 
32
  def make(imgs: list[BuildImage]) -> BuildImage:
33
  img = imgs[0].convert("RGBA").resize((290, 340)).rotate(-60, expand=True)
34
  return frame.copy().paste(img, (1090, 920), alpha=True,below=True)
35
+ return make_png_or_gif(images, make)
36
  add_meme(
37
  "kurogames_carlotta_play",
38
  kurogames_carlotta_play,
 
43
  keywords=["一边玩去吧","一边玩去"],
44
  tags=MemeTags.wuthering_waves,
45
  date_created=datetime(2025, 10, 11),
46
+ date_modified=datetime(2026, 10, 12),
47
  )
meme_generator/memes_emoji/kurogames_cartethyia/__init__.py CHANGED
@@ -2,7 +2,6 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
  from meme_generator.utils import make_png_or_gif
7
  from meme_generator.tags import MemeTags
8
  img_dir = Path(__file__).parent / "images"
@@ -22,5 +21,5 @@ add_meme(
22
  keywords=["卡提希娅","卡提"],
23
  tags=MemeTags.wuthering_waves,
24
  date_created=datetime(2026, 2, 16),
25
- date_modified=datetime(2026, 2, 16),
26
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
 
5
  from meme_generator.utils import make_png_or_gif
6
  from meme_generator.tags import MemeTags
7
  img_dir = Path(__file__).parent / "images"
 
21
  keywords=["卡提希娅","卡提"],
22
  tags=MemeTags.wuthering_waves,
23
  date_created=datetime(2026, 2, 16),
24
+ date_modified=datetime(2026, 10, 12),
25
  )
meme_generator/memes_emoji/kurogames_cartethyia_feetup/__init__.py CHANGED
@@ -2,8 +2,7 @@ from datetime import datetime
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
- from meme_generator.exception import TextOverLength
6
- from meme_generator.utils import make_jpg_or_gif
7
  from meme_generator.tags import MemeTags
8
  img_dir = Path(__file__).parent / "images"
9
  def kurogames_cartethyia_feetup(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
@@ -12,16 +11,16 @@ def kurogames_cartethyia_feetup(images: list[BuildImage], texts: list[str], args
12
  img = imgs[0].convert("RGBA").resize((120, 120))
13
  img = img.rotate(15, expand=True)
14
  return frame.copy().paste(img, (395, 130), alpha=True, below=True )
15
- return make_jpg_or_gif(images, make)
16
  add_meme(
17
  "kurogames_cartethyia_feetup",
18
  kurogames_cartethyia_feetup,
19
  min_images=1,
20
  max_images=1,
21
  min_texts=0,
22
- max_texts=1,
23
  keywords=["卡提希娅抬脚","卡提抬脚"],
24
  tags=MemeTags.wuthering_waves,
25
  date_created=datetime(2025, 8, 12),
26
- date_modified=datetime(2025, 8, 12),
27
  )
 
2
  from pathlib import Path
3
  from pil_utils import BuildImage
4
  from meme_generator import MemeArgsModel, add_meme
5
+ from meme_generator.utils import make_png_or_gif
 
6
  from meme_generator.tags import MemeTags
7
  img_dir = Path(__file__).parent / "images"
8
  def kurogames_cartethyia_feetup(images: list[BuildImage], texts: list[str], args: MemeArgsModel):
 
11
  img = imgs[0].convert("RGBA").resize((120, 120))
12
  img = img.rotate(15, expand=True)
13
  return frame.copy().paste(img, (395, 130), alpha=True, below=True )
14
+ return make_png_or_gif(images, make)
15
  add_meme(
16
  "kurogames_cartethyia_feetup",
17
  kurogames_cartethyia_feetup,
18
  min_images=1,
19
  max_images=1,
20
  min_texts=0,
21
+ max_texts=0,
22
  keywords=["卡提希娅抬脚","卡提抬脚"],
23
  tags=MemeTags.wuthering_waves,
24
  date_created=datetime(2025, 8, 12),
25
+ date_modified=datetime(2026, 10, 12),
26
  )