From 5b86c49447606dded98207255c5cf07e6513ac28 Mon Sep 17 00:00:00 2001 From: bakatrouble Date: Fri, 24 Jan 2020 13:12:46 +0300 Subject: [PATCH] add shepherd --- image_text.py | 105 ++++++++++++++++++++++++++++++++++++++++++++ lobster.ttf | Bin 0 -> 140856 bytes main.py | 10 ++++- morj.py | 112 +---------------------------------------------- requirements.txt | 1 + shepherd.jpg | Bin 0 -> 21393 bytes shepherd.py | 11 +++++ 7 files changed, 127 insertions(+), 112 deletions(-) create mode 100644 image_text.py create mode 100644 lobster.ttf create mode 100644 shepherd.jpg create mode 100644 shepherd.py diff --git a/image_text.py b/image_text.py new file mode 100644 index 0000000..09adfd5 --- /dev/null +++ b/image_text.py @@ -0,0 +1,105 @@ +from PIL import Image, ImageDraw, ImageFont + + +class ImageText(object): + def __init__(self, filename_or_size, mode='RGBA', background=(0, 0, 0, 0), + encoding='utf8'): + if isinstance(filename_or_size, str): + self.filename = filename_or_size + self.image = Image.open(self.filename) + self.size = self.image.size + elif isinstance(filename_or_size, (list, tuple)): + self.size = filename_or_size + self.image = Image.new(mode, self.size, color=background) + self.filename = None + self.draw = ImageDraw.Draw(self.image) + self.encoding = encoding + + def save(self, filename=None): + self.image.save(filename or self.filename) + + def get_font_size(self, text, font, max_width=None, max_height=None): + if max_width is None and max_height is None: + raise ValueError('You need to pass max_width or max_height') + font_size = 1 + text_size = self.get_text_size(font, font_size, text) + if (max_width is not None and text_size[0] > max_width) or \ + (max_height is not None and text_size[1] > max_height): + raise ValueError("Text can't be filled in only (%dpx, %dpx)" % text_size) + while True: + if (max_width is not None and text_size[0] >= max_width) or \ + (max_height is not None and text_size[1] >= max_height): + return font_size - 1 + font_size += 1 + text_size = self.get_text_size(font, font_size, text) + + def write_text(self, position, text, font_filename, font_size=11, color=(0, 0, 0), max_width=None, max_height=None): + x, y = position + if font_size == 'fill' and \ + (max_width is not None or max_height is not None): + font_size = self.get_font_size(text, font_filename, max_width, max_height) + text_size = self.get_text_size(font_filename, font_size, text) + font = ImageFont.truetype(font_filename, font_size) + if x == 'center': + x = (self.size[0] - text_size[0]) / 2 + if y == 'center': + y = (self.size[1] - text_size[1]) / 2 + self.draw.text((x, y), text, font=font, fill=color) + return text_size + + def get_text_size(self, font_filename, font_size, text): + font = ImageFont.truetype(font_filename, font_size) + return font.getsize(text) + + def write_text_box(self, position, text, box_width, font_filename, font_size=11, color=(0, 0, 0), place='left', + justify_last_line=False): + x, y = position + lines = [] + line = [] + text_height = 0 + text_lines = text.split('\n') + for text_line in text_lines: + words = text_line.split(' ') + for word in words: + new_line = ' '.join(line + [word]) + size = self.get_text_size(font_filename, font_size, new_line) + text_height = size[1] + if size[0] <= box_width: + line.append(word) + else: + lines.append(line) + line = [word] + if line: + lines.append(line) + line = [] + lines = [' '.join(line) for line in lines if line] + height = y + for index, line in enumerate(lines): + height += text_height + if place == 'left': + self.write_text((x, height), line, font_filename, font_size, color) + elif place == 'right': + total_size = self.get_text_size(font_filename, font_size, line) + x_left = x + box_width - total_size[0] + self.write_text((x_left, height), line, font_filename, font_size, color) + elif place == 'center': + total_size = self.get_text_size(font_filename, font_size, line) + x_left = int(x + ((box_width - total_size[0]) / 2)) + self.write_text((x_left, height), line, font_filename, font_size, color) + elif place == 'justify': + words = line.split() + if (index == len(lines) - 1 and not justify_last_line) or len(words) == 1: + self.write_text((x, height), line, font_filename, font_size, color) + continue + line_without_spaces = ''.join(words) + total_size = self.get_text_size(font_filename, font_size, line_without_spaces) + space_width = (box_width - total_size[0]) / (len(words) - 1.0) + start_x = x + for word in words[:-1]: + self.write_text((start_x, height), word, font_filename, font_size, color) + word_size = self.get_text_size(font_filename, font_size, word) + start_x += word_size[0] + space_width + last_word_size = self.get_text_size(font_filename, font_size, words[-1]) + last_word_x = x + box_width - last_word_size[0] + self.write_text((last_word_x, height), words[-1], font_filename, font_size, color) + return box_width, height - y \ No newline at end of file diff --git a/lobster.ttf b/lobster.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e1d7effea4041db2d1f0e28f310ef4bb9f428d4e GIT binary patch literal 140856 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�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 Cps$Aj literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 54c7fb3..673015c 100755 --- a/main.py +++ b/main.py @@ -22,7 +22,7 @@ from config import BOT_TOKEN, SENTRY_DSN, MANAGEMENT_CHAT, DEBUG from db import get_conn, Subscriber, PersistentMapping, commit from morj import draw_morj from send_users_list import send_users_list - +from shepherd import draw_shepherd logging.basicConfig(level=logging.WARNING) queue = Queue() @@ -246,6 +246,14 @@ def morj(bot: Bot, update: Update): os.unlink(fname) +def shepherd(bot: Bot, update: Update): + text = update.effective_message.text[10:] + fname = '/tmp/shepherd{}.png'.format(uuid4()) + draw_shepherd(text, fname) + update.effective_message.reply_photo(open(fname, 'rb')) + os.unlink(fname) + + def _process_message(bot: Bot, m: Message): if m.sticker or m.animation: delta = datetime.now() - conn.root.last_media diff --git a/morj.py b/morj.py index 5021cf4..f5c9ea9 100644 --- a/morj.py +++ b/morj.py @@ -1,119 +1,9 @@ -#!/usr/bin/env python -# coding: utf-8 - -# Copyright 2011 Álvaro Justen [alvarojusten at gmail dot com] -# License: GPL - -from PIL import Image, ImageDraw, ImageFont +from image_text import ImageText FONT_FILE = 'CenturyGothicBold.ttf' BG = 'MORJ.png' -class ImageText(object): - def __init__(self, filename_or_size, mode='RGBA', background=(0, 0, 0, 0), - encoding='utf8'): - if isinstance(filename_or_size, str): - self.filename = filename_or_size - self.image = Image.open(self.filename) - self.size = self.image.size - elif isinstance(filename_or_size, (list, tuple)): - self.size = filename_or_size - self.image = Image.new(mode, self.size, color=background) - self.filename = None - self.draw = ImageDraw.Draw(self.image) - self.encoding = encoding - - def save(self, filename=None): - self.image.save(filename or self.filename) - - def get_font_size(self, text, font, max_width=None, max_height=None): - if max_width is None and max_height is None: - raise ValueError('You need to pass max_width or max_height') - font_size = 1 - text_size = self.get_text_size(font, font_size, text) - if (max_width is not None and text_size[0] > max_width) or \ - (max_height is not None and text_size[1] > max_height): - raise ValueError("Text can't be filled in only (%dpx, %dpx)" % text_size) - while True: - if (max_width is not None and text_size[0] >= max_width) or \ - (max_height is not None and text_size[1] >= max_height): - return font_size - 1 - font_size += 1 - text_size = self.get_text_size(font, font_size, text) - - def write_text(self, position, text, font_filename, font_size=11, color=(0, 0, 0), max_width=None, max_height=None): - x, y = position - if font_size == 'fill' and \ - (max_width is not None or max_height is not None): - font_size = self.get_font_size(text, font_filename, max_width, max_height) - text_size = self.get_text_size(font_filename, font_size, text) - font = ImageFont.truetype(font_filename, font_size) - if x == 'center': - x = (self.size[0] - text_size[0]) / 2 - if y == 'center': - y = (self.size[1] - text_size[1]) / 2 - self.draw.text((x, y), text, font=font, fill=color) - return text_size - - def get_text_size(self, font_filename, font_size, text): - font = ImageFont.truetype(font_filename, font_size) - return font.getsize(text) - - def write_text_box(self, position, text, box_width, font_filename, font_size=11, color=(0, 0, 0), place='left', - justify_last_line=False): - x, y = position - lines = [] - line = [] - text_height = 0 - text_lines = text.split('\n') - for text_line in text_lines: - words = text_line.split(' ') - for word in words: - new_line = ' '.join(line + [word]) - size = self.get_text_size(font_filename, font_size, new_line) - text_height = size[1] - if size[0] <= box_width: - line.append(word) - else: - lines.append(line) - line = [word] - if line: - lines.append(line) - line = [] - lines = [' '.join(line) for line in lines if line] - height = y - for index, line in enumerate(lines): - height += text_height - if place == 'left': - self.write_text((x, height), line, font_filename, font_size, color) - elif place == 'right': - total_size = self.get_text_size(font_filename, font_size, line) - x_left = x + box_width - total_size[0] - self.write_text((x_left, height), line, font_filename, font_size, color) - elif place == 'center': - total_size = self.get_text_size(font_filename, font_size, line) - x_left = int(x + ((box_width - total_size[0]) / 2)) - self.write_text((x_left, height), line, font_filename, font_size, color) - elif place == 'justify': - words = line.split() - if (index == len(lines) - 1 and not justify_last_line) or len(words) == 1: - self.write_text((x, height), line, font_filename, font_size, color) - continue - line_without_spaces = ''.join(words) - total_size = self.get_text_size(font_filename, font_size, line_without_spaces) - space_width = (box_width - total_size[0]) / (len(words) - 1.0) - start_x = x - for word in words[:-1]: - self.write_text((start_x, height), word, font_filename, font_size, color) - word_size = self.get_text_size(font_filename, font_size, word) - start_x += word_size[0] + space_width - last_word_size = self.get_text_size(font_filename, font_size, words[-1]) - last_word_x = x + box_width - last_word_size[0] - self.write_text((last_word_x, height), words[-1], font_filename, font_size, color) - return box_width, height - y - - def draw_morj(text, filename): img = ImageText(BG) img.write_text_box((67, 70), text, box_width=800, font_filename=FONT_FILE, font_size=40, color=(255, 255, 255)) diff --git a/requirements.txt b/requirements.txt index 2d2ed91..f2c53ba 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,6 +6,7 @@ cryptography==2.6.1 future==0.17.1 idna==2.8 persistent==4.4.3 +Pillow==7.0.0 pyaes==1.6.1 pycparser==2.19 Pyrogram==0.11.0 diff --git a/shepherd.jpg b/shepherd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aa009befac1681c4b6e34a44b05582210eea6a71 GIT binary patch literal 21393 zcmeIacT`i+w=Nn42`CZ}klv)J2na~;C`|+e1e6vO5CYOWgpPppqN21&2PqM0QbR8y zz4wIBYeEenz{~I4Gv2x9+<)GE?Js`~a@z08aqdNy*5_NUsxj*RNkE2U1Z0i5uwVO-d?S(Cyo_AX-|wJ8X<} z^ehatv`pMgEbQ!@oSbxwcX{t}@Un4ma{S{@NQgfLk^`wJD5yE;Y3Vusr?;zC04)W{ z=CvJClDmLwv?QdoBv+jPPGUQ+ll;pD_}7i(8YvmEl@ydWZW2$Zp#fYYAtk*=Y(LQf z;@N@3;{Y<+>$kZ@Rmkb|-vIBr(Tjy9=TPvdR<0skM#mJ3D)bgNLV=w~w!%e|W@)$f)R#F)68^ zK7UF3`Yk;-FTbF$sJP_Eud3>r+PdHM4ecGBUEMvseSb#B#wRAHre|hR%jlKWwe^k7 zE$qSJ(ecSC?hOAAzeoV2|IIDp{=Yf)AN-;v`gM(XTgZU_@QdV{579_z$*yyYlHXR* z2flHmyDJt-L9d#eQ`ttzBW{3UcrmW|LTMP8Uz2QkAVuko)&?Y5!0S$!;iZrye^(1 zW}LEBSjggRSCXeZd@ zNjIK0FA|x9f+xL0g%mu~Q@VcimGlqZY{?oiqMY2c8r>f~|CP!;^qY+I2ySvCi;eHu#V*4cqEF=8 zfZVg(M5kc23qNK~D&%E1E*@PDyv`l)yGGE;pH`NRo1--@h+$)*-SOa-Aeu7@9<;T6 zhf&rusutIqCBEmu#js$vc2irzxeR4-k>7HhM=*S&@>=@Dg>VJXAJqf?@m2-0YS=(9a$po7^8EN4%UZB`V?E~%xmk>3Qr6t-(iMAo!%hEkxx z4~mbohn5c1qT-N3z%gH z2)qH-$E8GVh=Nr*nR(h!Il97xA6EbYo2kC-4MM_m{`*F$0bsp@^Qjg8>-75I+x~58 z^e;&M(;JU5KVmrx`1G^YxCF)J@97wq5}W6G(boNfc2H@ECaw59b3FCr8vR z5ofUB6t9Y++}GX1wktqIM4+5WB*6k#l&6O3A0qeVaE$%!VqRNXrmOV@n;=HQb( z0I;&6G8td-yY>1lT}tEm=%I^aMa-#-mvuN@OvIbgD}dDIrQI-?!iB&Si2Mo)qkH$6 zK9TwcLsGA3D!(6Z7`5IDjbU%Vy}lbH0s^EZ@boLd+kv+Py$X9LTMxcaN_Szv#k>JE zg}_7`6MN7TT%eGp9SyRjAR&w6-NasokCTGep=8^{Np)&X;@yj~#{=3%xHpcFg4cRJ z_b0eS*zTDl^F!FE=l&#in%H9R++W6-z8GT&l z-qNTBYPI$h>N(&KmqC$yQ#;7|F%hMz;{ln!vtAp_2lH|CZi`ZEv_sb6ad!xE7=b9l z&3vsQ`#T2@^te+Xg|4HT0oPomNkc@p=TrQ{Eff4Y#k;MIOj*=r1uuo*3gy#1!0?wP z?#+wqtjJ)NEYp<@+0~K}g3fywqB1rAdvL#|p2m|fU*1Hwz8$x-NzOQ^U_LH;fP389 zcRjSJ-|RQ|{mIY_+O1cHG$D$VYf3KH7iNT6D*;9}`8>4wduf?farb@L;Rr7~Pa1mz z$Ks{ea|wAHbIhO7g`Q)JsW01qH{uo)`09cW6^Qd4oX0x z8zCH(feQyuxX9n~Kr1*LoT_8+%EE8Qjt;J`b~-D^^@*N;>y=I2LG3{Y~)OqJY1{g|*xr52AGlrrsS7cG)Ol%%WhDjf63u@kRK^ zYb1%eM|g3W{F%UC0jRC)pJirf&1^LA*^C{wY&Igq*WD)8(zR-e&{LO8U-q_^x87y% zEkoA4`}=s(c+XS&;KfRI!Qq!2iS1vq1+a=R@{+(}febS7H_Kr>V}ipeGBSf=@!54PgG?apSdBaK#xeL!FQi)FL-nJ^J~8a-+0l@;2-Kn|{Uv>^Lw1%Kpr)#J^N;9DlA`Sv9u%WlpcEuDVXIo}M;(I1m815xH$L`h8NU`rAG-;c}Nl zlS`N^g=9Q*cW5Q>mK9E9St(rJj72yeZrZd5#6Rr$lgX(QMRuXC(d@Cr{(UwpYQT^D%dQ=5iRKdL{{t$rz!^TVQ% z<7-^wvoJ~^70@~kc}Zq)Y4IRO0eAZsAyrRnKz%=S1k1r3C43`a(Et6_} z+GP0Rx^22`jTrvNr&EX$qNs0yLH);%ipGT87{NhV)nZ3~OIZ1)3Cp`uNA`(=_P3hz zu7MN^D!?QSu7d{`3@?8SewujZJV1A^L{R+iQI?@0F0e!eMZBm*pC76}>fosPonb18 z0@rVaX0j~Mdg3$nAy(hZW21@ca~%`i>~{R3T7wB4VT@;{Z!eHHrGV?y`;!fZ<=gaI3e|mXZup(3w2a$@k9zPDGd!EqK)nJA;8|A(Nn7C{9 z{;oSoy5_c&JPy4A7}`x0xCh$1-N^qf5eswcHmb0cR;Z8MuCZ87cLKPG}LE=*Q)FxsU&pS#~qvDo0s%UBW@)` znSxrmm1()rNpX@@km8}x_XA{Y{M`>ybP)i6n4dJjtCUmf4LEK2@CPo&Id12~1Y+5@ z;1J;2(Jk@~vKk1~e-*?sR#PgsV6bgEF@SBVA7~OS>@Ck_rU>!k4ewLX zdz(~@E2(Fmo0l~4dH9)0nrTYJY+QZQ)bW8VeMQBQ0C7a$Z70GrG64qk6`m!y{3;x>6|LzvkMkc2y1FUn_69OY!)GmIxJYS+K7ZN|1gH*-^q`B*@ zXsm+u+NCv@53f@$_DSx{&J8#=Cn`NE-qd$;mh0eTAaFX>-rJEkL@CP*CYOFg3M}4t z7u^vYgNk4uTYj(*UlxfxertB2TV;=bkM#Eozo$3i2T!(#kGaW9MZg<;4yyArR_<2Fsln#1MI@dyo8yV13TODT@;+_$YSXC^X4IB}|bsB-msM~G{) zRr5ggcl`TLq_FlD`Vpu~#YU=MgJfl3QH#4yO@9xpf?~jjCAj+vz^>sef5mJyMc!|&=btdKg9Nwn&O?XRBSakhdLBSB&~2VN4W8G4&%X;*)C@jF3t!1psw zkb(09qCO}d(Z>GbZ;8Sc0N&Cw=C~W9=(2ATF%2~u+xr?AyF8elILofxvCp}FmqzKq zmM4tGx5abG`U*gy7X!3E%ChRXTMIDgmlBU36a!g;6J5FD!&B%s=*Y8I4u@csxd z7^BD0=g=mx5A;oY&SkrztyiOrz(~hl0k}=7;hZ>;mrh@@`Np90=s)Ri=)WD!@KXoh zIQ(Jz^@oe8Q^mH?X=$FVDM&j@fqr^{R~h@;i-#*bNn$>pux|6dPi4 z6Fby#=o^J9EO4=F+^zlER3kVpZzsU9;zBwfvsYXZC(MT`?f$Xw_!51;?U|5bQ38Pp zH&Td87i0&TFF97oMtA0e9;}460jprDkMy4OGVI(sID#hzDfx;8li@H9>92erZ*Sfj z_>_!Y(WKxb*->fZ==5hfxdMbP-FZ)d+_1-gy)#SDUu|VdKvGw#PMQw z?AV8}hes=NW7IPW;>np(v`;=Mj3@6OoREZ&papmjv$GV~F=opS4lwEp2{?YVf01$YjrRY>s;6?NIO|dOw57Tb= z%I_uCLKU*xlxQFqN6pay{XyJftqFL}K&w&0t_D`{A*Q43sm$xMw&K?d)0WzH!A?Tu zof^+$((k;qu=fXY1~?y-U5LDV z+tJX?>9ahT7?OEO@q4c>Xp8~RCVfh|W9SN9F#dul-^XzX{&Db_k+4S2RKuVJzroKnX+;*Y24pvK9e>Cv(ayGq6cR&GpI_8DTe3dEQF*q>)>|SnjUM3M4 z=JXfM01g%<_bFxD1cvacG9=p)AibmHc$jSiM07?mt z1NIfqem`JfUnN@#5WF}~S8dkZ$WVyVz*V8tzGb7^q)Z>~Pp+#>tk(AYj+Ij~-8~YC z!Lv45>)^7=h<=Q5(rjvZQXYwQg#qg&4iy;M%(&YpjVGY{SAYTm9BU7=F)_Rfayo4& z%44rDlZWdKL$xXT{GdudxKl*8-lPE)+v1%!gK3~rUeJcX)$sIlm9T%>nrNq_7$~O6 z@%ixgB~_lmL6J+BQuij_-h1>fUYp2a^|R^BC`fi1_&gxp)%=M zV^fH3tFu{3HTK?jGPHzLH&l%m#ePupB!=AW=7c{)&_>>4^`C$)Bl$~shKWy$m%s0o zv-pNZWz9@)yzSl~=Vl+74_VAvBk~SRDoRmdZUevaZt`Sa??#EdU-s*6kgK|;!hz^y zOAV{aoTc2kI*x@1!u6uM7db%Wb$QELROa%@+`T;PX!*qVcoMLF@;l3wU-*iVbco_W zY2e>O>|+-`BO#OJMC-Yjk}?NLQ{yzZ5(h>~Cx{bsiWcX0(z6S>sR*dTMed!gt$rP> z@i#Un9*TTK8ML<_;Y50 zPmZgpb+>v71e|BBB+rFTNlg3lv~n0ISy1A!ny>4v)}yS#l^VAKGqkKVOC9e~%|}%mT|g1!?h|kp9f67L zCG6;`QxL81m$&om3TOhDLMaQ%35HxwNCn&Cgi5-pZ~dLbB%b5hE~6cn|6H(!Y`P{tJBfSUvmsnccWg72@d0B^RvD{`N`D-K{Bcmf(_#6u2*IlgGo5{v@W-zL?h-aH23*ZQ{Fc0T~%|)7BXm1 zp}B++0fFpJ49W4`mZh2)R!94s(A(0vDlF>ZBmgD=bt{P_>p3TpjFguu@lAMnaeQvF>47`#yMR;*;w-2Kj6F?E_h}5>#DX%JP;yGV+mjA5RDkb$)6qy_w#vt|lMJDh+wD zV$T#Q>I9G~1v1eer_^cr2&)vG`mP=hUR2ABUj6#D?U-^n=q0WRvg}I`mVcDKFbcUT z@RdsyFz69?-0j!xmhG0leFZSE+nL%o+OJ4A>u)@dBW3{;C&TB1F=)k`xFlR2sv@~W zTk4w!TkyLE-j%aTjMga^DQ?OR%=ocGUcpY?tZ-`H|3!MHp@p90MP8HUA_wkG(3iu9 zKK`M1T;u1Ht^nHx*ZHz zq8lhDXv1{1D62-5YvaYc38dUT6~1_`in$Z1kyP)-Wk%g#9|&cS%IOLxUKpX?rg6^6 z@5M4vdU2u!Mf}D7P%3+yvVqVUfX&Gs{=s<_y^d`AJwbD!sv$tUf7kHtj_|MW!jTj`CwA z>)v4;PV@TfVqSK%0Sz?e!`ACw0FLiALDABAX>YRLjRo)pE}aR@j77E&R*%kj*=6|p zoV>@DAC+FfJqkBpz!2Z$H-WOr zBcfyn{2#*ee+<|Ee}6Y=Te^J&+fj-(UHp=K<~Fz3%VTa$o5rVfjY26t5N&z=+>oG< zs$a(;Im#^}(Lk|}R_n9x(F(*!D^4qrz{^ooo{y%}o;m+{wxkIAA-~fenoutOsGo$%()h10HpT}mpC(8oQr1Nt-`p@=RK5*~u+n=#n#ss!9hw3V zsF#sB*>Y_*ihK1{N5Of&$gI)DBSji_AT8naFj0v}cx>xQ9}Uf%_B2F&fLcKEOFupy zFkY5+<_?P10%(HXiVqbt?NFR^Ae7{VHL=29`^POc5-YIa_t4i^5)7ha!SS{Jx3}T_ z5q6yN5$YhMIcIwdV+B$@Vg{Q;?T^R^ywWq%cbkERR6 z%FC2FR6$JN)!7C3(W}}eP?8d&a>!f*?8wkO(!J$n_u)goc9z&vCfrN~N_FfByZF3` z@~DE3rWYH81uq--I0~+RW%`<+`k1O#OFl%(72p+Sps7xbt!YGymv5*SgRm(TsW#2^so!JNz(uP)vo5Dl>e18S%6gTS!W~H{Qe!FE1~8x_@dR zn5|%5QRZcAH$ZRVhefwyiD;#2b5cv`#Abv47eq#mV#Th7f@g|p$P~G~zR9z0As_A`zMp9j3%^gPE@G_+$22ll)QLi7TBDK0=5PQSWevD@2WL1RZOJ4 zj{d~7{#$AOh9Bv8lEN>4>-fKqa1Wdd{CLwAFBtX5@?$uOUjqGx4 z9jvzJTi2Bc{3K1$1Kcf;2 zyn=Hro;uOGh<_lzgN7REk1#yuO&@7#sHv(A$msv-^j+6dEAuX>ME(Y$N`Cpr+2>+Z zYMdO{WZOAg1M#6%HKA(aQY}WX4{C?qZfl^2T{8w*8FK$ zV|LS-bQuw+yID3*!g%98A@L#6!L(rg4ti8{mO1Z9da%F4&}#iU8hqE#g84XJV4=bc z2|m{S!4kHvn1gkwKISkxY-G#;SV>f zVbnK!E%EnJ-(~r{EVYI!X=*|gq98EnLAC36fw5^mJZIgoa9x679F76CHo!kN*;yCY z34wZb!a^n+zMuZS}bcLZd>4-^{QZBW@m(R{kTKue!i#H zl3zi~r*=Ul>BJ(PzIHcz=dc9uPr?gN8e8BaJQF2as14~Z$(iLP5wro5z@6pQ@|6R& zq+j&Xyk3B#0c{^gkHRhTG5zXv<{YSw%L4}2fH2VAmUf)SvIr2Wjj_S&RK(q_ta=(5 zsQ9W?vkk~fp&%_y?B#61t;6Rdt49;g8uyMNI|$@O4>>3Gk6QRU=;pb?t8FPT!x5y~ zcg?mg<8MO}X+$`gqMk~UCP#kE`IBb9{SThOR8TI=>eiA&rHZu&)F#Gn_$-2+DK3f9 zU9#noEJw&%J(%`#WRd9?tbfEaC4~U-z|HbUx$ghZK1758o&O|0;5F=NZnj2hwfnL;!MA!>P~J?fj=YY%8g>H z%oGdvN(vzj1$8quf;Y7{#8cTj?>;3&->qlYL!Ndxsr2iiSZVYK=ij(5c<$zpw>*H# zjM)gfEtfL#z>_mV&$@5D1w(^y9!{_am-v15+-f)2`98y3Wc%6?+Tn)d=r$p4OE(;s z9#ktEe4U_x2@Wqz2?lMvcs<0`_NlR-UxBn&i*)>&xS8xpW&Vc$b9_a)4|_o-sR&QD zLI}H-LdePqoEj^#D`cNs9mI|yq=;@R5JE_fpAH7^S6cF+gV}sjyG?S@7UTI}x%ruZ zee}Uk*+}=tPx+h6q;6SbYhGfjAYM)jh#~A;Wxu@bgJ zOSG@OWexpCX0rlJrlkfllggvZ-Ngw!xMZ{lXny;WZ=&#WdeG^;@KT!Y1(xw=xAZ#0 z>LN9^?jwQM*`y=A`its5hbwJy!8TtQ?CGGMPGhz154JyRKfPQ1Pv3| zmAV0tx+W6O?_YTp^S$COty?snoisvnvgy;AdD8C#JX6FdT>WV@$O5Li!Hg}84vT>1 z+x1ejPxqrm7(~M_`heDWHn;g(oS|0$hJ6BKFh@qo0N+$p0aT05CgZIho|wLTV?W#1 z7DfG46ib`@b(%N1z*+Q?07KHdr4}jKy@n3`EG~XnQ4Sa4ZmLd~vC1M#?v3JZV83_Dt^nj7%aHSD&iBp^PxP>fCweif zn2C8J*jInkhY}!7{A&}CB)Ij1aQ-{?CFZ31_N$8bUaa@S-#)$1>rDL*CY!tkg>zYU z3}(bh=}nbmSbVYa)|apUNV}aKC`2o4Z{Rva^wYb>W=)kW6W0(ti6W(*n+hW%BWes- zfgeO21n^I_EQo!M+=v<+bD^!F}=LF$yHO+Owj%g zg0YNy@cKAi`_kzS;!xkR@!Z_LG!TQIdqw%pv%fMmA-S*Z;;9!h_`2|A7uKx9aGe#N z7pt^SfK4KdTbFIW+8i`Cm5m*16Uv~+uO7Vm>{RjXl<(;Q#TP9;*W~Yf^O*pkf!-T^ zu$J4c%tOk1I5U~bI!!nAb0`CQYt=NZ-~o<~+p{bUyU4pc)j z(ALMh-as9WRoM1GGIj=2;y~@QDO^kX1z9El zK!y>YD);+bQ!vpscfIKlra7F7H(8Qo0Y>eF+>zzaZ~&?>{7?t32x`6H0$7m@lUUvo z7V1Djen|V@i8&+^1y=y^!q?C(xj|Dr=M4x4J@#)t5kzmWTyloJsrhtGp_i$=R3v=q z_OT?0s0$vq+m)IRvDsm%RW1Z~<;UF8{}eG#`i~W+l`ow!vi)K=Q+z$D^lqQg99476 z&v*H{HbO@AY@|Qc)6?{-XZAEhhNBe zc%5N%y?2Q@=;l05;F*QXb405Cm{j!oA zn@NXZfdqf^Vv9x@K^{koLQpw;ELmLCD_iJn%emdn^O0i1`7ns? zLtsyiih=g2_s`#Fb;d5yH4Ea(qwgkaGNyMQqB!MKIEsD(+_iRq{ME5e@SE7ecn_=y zI_{DMk*x`pL-q2c_@bo`Ih3h^IWpY=WYQ~#*{>stJ{Dh8RU0%0zAvjjbjpu`8_pEi zdLOBq#3RTA%zp%oo&|lBZKN6U66jQd_xVuuE*Xn_Y@jlDo^d zq;{}>L1}k2c~v#^lQe)gmbs&HbROswOf-8o`dm;yz-io*(OQ82K3hUg zbuDPO;>KKZiFog+PhW)8K9@jAT(&~5Jm*_2B?FvP*CGej8FsP{+S0e+BK?~vog%)m z;m6r~!rwx51(0)Ci~q4@%Ktq*;d6k(=Xvw|N*M!%U$Tk%!&8V1%mh_iLo&1~&|k?2 z5AQ^GpzX9?ZzT?!-?#-`MS^A}&>w{4Aw^9)H_H+`r9NBxEWjZNWDi<0R-?O5!MX^P(!tzKazoZLQx~;X>=vOh| zGV{TdvPODi>bT^4glr_5%vN(>d$cKL&KL`7&xADWNcpdakHzZf@-8W)cqi!3Q-|O^ zcYwJ#yDkoPEW>ZulSv_wNbz4Xz^}jt4vppO9?QRGKbce)?W^oeE-4N**tY+29@3be z`Ij0lVqxMxwHTjT11%J`1-?Phc&{v7nPLShv;NEZ;|4CT<8+|Nagrru(8-zStMx?` z5O1<*`QU>yRHW35Hd*LXW%6-c;x-siXLt-BkrspE96k{hLJ5~)thfZEFer-KM8=p1 zsx;idoI&F({;voY<9zYgZuZ{&-D*zt2>|QNQ8IAcQi`07+2$Y_t`V9Mo9;Bf0@Ts~ zFI3=JO7EF!2^wRW)SS=aF7Lk9z?o#Uk9c}K`?T~9)(1b3>Y05>cf@^>N|0VWwuhGE z49gQ!HmbowR{+)wB;>%r(m$4{#|&oW{A*G5wZN^lARb?FEi58(Wzuxm@|h!JAB*9$9Zs zg`PV7;pJwLljm3l0*6dmM-{mDy|a^z=$v>;*b5ah(qW{c+ql;zSRGf@VJh(P$Y=C; zn`!U6d>jS~GvY}K>^XpcxfFyxnhIjw65XDaSnb4{{-I*5Od&!GUuumf8|ow{(hPV> zkZevSYVl6ZXZ7-xCG{pk3%a``Dx1Z@ZGvaJ1;*!R63u!^v!76FdbGr!wjAsB#^e4b zd%KmoUZJwG_||%j2eAmEMKbH%9w!LbqB)9Jy)$_pL6_af#da-#HpJi6AK#M*C01)* z0d84r_=mJV6Q{~?e@kp12lCP?d9lUl%>!HMI*r@SGyEAAhFi_-u-+pXbo2*Q!_=B5 z!{=q(B$#rWmZ3L*c_gYbE@rjmwr~2$-pxcx-_K2m+Z!=F^}tKZw@j3>bmO#fFar?t zwML=0JZ^c5X1RM}${WBEu9!nU)j~Qtrv5zBBgZ^T9fx?dgaM;Q8wdNSbIq=Qk9s9w z-ct8xH%M8lTkq#q;DueX@ZWvLnQ+=vnhqCJuBJG-GK+GPqnz6s3 z5$dY0plM8ibNGi(k@DIBmxf7gu02v=Ci8(yxP%5%oAPj;&=~2iOCT8%h!tSPg@BTq~lZl;~loInl$#dq`@|mFn@m$!xnKk#d)8S zdO-bCSD$-aagTVoVo>sG7+BkE*V5c>_4-H+uhYmPlA6+dW-nJxl}tMcJ@PU z9Wfh<>Wl~wQkSCb@e-pL4B*WR5$|Sm^&Kh?C=r?~cQeU}>-#ag3x1a!A5{EX)@x!n z*fI);N$r#^pP!xj(4@u%Gaa_0>2oDl9HR@fPUFa@4*H(0;}aela~Nm?0ug*hYPf!U zY2p2u^2d5^D3&_nJUK*(<;W|ruc2z-4G6+AJfb5|I5l&5f5U=#V{Bvh5*&gjvTRlV z)FSb)U9#GgPW2}_oL}KXCfz4<7h4xJa9FS{jNI4508^M(;V`REaM3fDPBAck_eFGc zREWEncD7sg^}w{7XjEv2NvXlEumxk*kT|>6MCRM3E5H*UV$cDez(Q6>z>3a^iX=m? zR``0hcsZ2?KV1AW(ug~P1k{9beoDNQ7`Ysp)XIUr!%l`$9H8P-SrPzG(R? z94t9}eC|}em7!?!?Y#~f4-?-{$9oWUsnwoXsGwxV56w{rQ}y0O!@e(fsoVA3AE_L- z3Zz=foSSGn33PeK+@`9WX-&1RI#3V3Cb$8P$i6-brA48ftSkc>liAXIL?($MoIgow z=$?Q21xT^Wp#0P5XRrM}eqsi8RQII2eax*>OT!ki@e+qXWz7BN!rDcCjP0D|x2=63 zei9w2-KxArF$gT-iA%KrhCsC)mxm}f@w-2E%&O1O0{l{BQF^W6;qz9fKZ0*J+1es^ zfx9W7>McfrzOk}2e(jHX0Dw#@ug!Vrc!(8F29*K3iK8CU8)sHr;Ax)t!v#=3VEY7c zYi&ixg(nEE+6_Ex5G!x+j@_E9v-~(WQk#I=G%A<_TSg5k-i>kj0OM$xPlo+6Tev8s z$-A(v{zeA+{t%`QHlMbb15c|2*oh6exDi)2(XYr7Cvv1CkyvnWA(w1K9!>2mF9qkV z^a4%ll!6bW6+0w2cj7CCihXY%KC5>pLRlX!Rjm~beof9$(Al{OJiS}y%WEo!prgmZ z>v+PTKijxtLm)@-iHvo^t88X{4k-gR+9VYwuBor{1j$-VPdk{#-v8l&rrLOVd7Up2DF8eUsZJ;Y9JgXo3d87Z!=Uva) zqY0%iMYg7{U*Lf)*jeg4^2(f7TeUr>QeQS@J%*)$oaL4kbjZzf^0Xf~qr*m(aod_` zx)i7Rvt+tslOB}Cf^FjWVv|oiHAhGO@b)f4pRo7H%STX|QG#DS{bz$Ile#A-a;-9k zQ`Yz#rRXiWaI_MrMFbbs>L2T?-Cb+2sA4COni3rRo}`;(^RD%Gfx<^_q2L!#gm;VI zMMcwnP_i|e)jlLiy1JPw5EW+aanwe39y;3+#no-tB@xn9+O@l&BrtjffR%K`7TpUv z$&PnfOVq%fLR>E?FJ~*CFK$S=Ik;M1euHJ&jgh4uRV?W=hrbvrciBzA38S>~6pN8G z!913R7*LO>?`b<@HuL1PR!ZqDih>+_yUF9IglTjhwNFzTk$jf+!DT+oSy z?E7PG>K7M}lsTWR^&o$YbUcfjtcG1`^C1eRmL1h|GsnLS1PS5^pr^zHcAXme&#J;8 zUY8_AEZ=rWnG()>k>ZDY;~MCt6?{aoJqFcwugzv3-;1?Ufjs0;HLycTps<{qt+A{;+}95egM|DH8|l zt{pt1-b&UrRG zy4;oJLr)JV+COKM|7QbcFhhWjmUOP0uEm_N-(%$(2-sY15gSoLabk@wqg{9!B|W~T z+fR}7BC&Hou0(yXMXGBT$PxNGI9rCu%O)-s;r8>{WeSnH-`!2 z|F&WMnub8d{5mPNZ_l3uPV?4v&+TMe(}^K3$mQ3VTH~ENbXBVhdw3Dueaw9vX&Xzd zBN&s8TeEi|Xx;0irM4Oyt9DCJSNBs~Ptg(>vCnPcWQ;9|DH&3F`lZiXJ6GYAilOmS zLlyc>UiVzhgd4Jtdb#3gG~6t&qs&BbFO^sd$DFk_P;lD#+EkfkDd0WIW3o?*gOu>^ zAc+rXI2A-u2t%0Ft>VDhtjRE5)6DerREWM%S3yoWnkg&r`tYsHUl+;0l zCYM$ZrQ91GSAu85JN-YydYGIaZx_}49u=~>Gs?X}_f3313#XVDZaMIMJ6i&y_*jX- z-ZU-xXu8Er$NG8HU~-b@?QUunQpDl*%O(p5W~r;8$#gLXiJ*0u&9o9pyYtP1RTHRu zM#TMI==V<8$d<$R@u$t)AT@=JdvrRSc>hf3Rp(2}ZsnFgU;i$_Y~aGIo#r`qR9lYc zE4{JnE_Wioj^d289fd2h`6lXx#%ahFqby`e>jTDM#}Nj!-Z^IR+`Ov|p&KC+CuTd;$Ky@MfB6^JYE;h+4)NB>=g z&i}#}e9-NUOyyK4ErSwvkQ$#-{^x8|>S2N$2trUr;_@8xECRR@SFjp=*7rGEOpn5U`fk37X~a*Q-zIZ#UN8 z5{`&$Zs?7MozPe%?`h&`2Li4DFFwDQZMAAXm+LEs|1t@@eLe_&pCe^jn00$AU~K)yQ>3>SJ2_xOJoEFfv9STgcBqi-Purl2;bvddkReE(0lF%Gu*lU zhOM?x8>;3F{}E$hX6!NoUhCQYa(5(Q4j~k5IP#CEZ|tw~->upPCJ~^++~ZzDR1Pg% zjP5vtKU(C)U$(Sjx!xy*4*m_HWDCu7cWffAdPQzLp5ARzD%q%for~hB$$k`$0m3W% zDnjDI3RHk$Apbw9?TajaRB+S+`-%YHz$Y7655sm@pzLq^;d0Ns05d0xV~gX(bG9F; zhVJn-_Z_okFpxbb&wV67&x8kj;*w4!uICuN?wuXP7+Sgv_& z>{K7Was=!l+p)YA)itdi#0 zF(LzzEO9Tu%wq>p{`Z1ZW9;#*2khcnRSBb$+y@#g#|nK4S_*wDlb`8L5{=8Y2F8o` zW+s@5OSy7m9z6TkMY^n4K zdfFrwPnW5yBWhl?uhf4fNvv=jYVsNe3CSY zx`7gYX3M12lG5Z57*VZrdE%CQMr(=>$|%|#VLIBrseNzmhgmxh5Cbq#V^as+6oKgO zX*uGbEm$R?y`QaQs^fg1z$-9)w9h&1PY=WW zA3kx_Q+iKovYCXP3To4tR>NM3_OXS~Y^YOkVN`%*CQ*a{oI=3>s-qnDL@jdi@^4!9 z?7Wo@qdQ%phB=juT}hWuFs6pU-$N5`>3zB5|FY}j(dvCZY*1afX%h!C#=DCCfQoOg zoT;WRk>}$hEg#Yf!1}n6ZRKBAiO)~dWBeCpl+5Pv(?*{kloY`W%P^ps#5Ncv*>}a^ zGG8$?AVgl>fhL2N~Pwh-QDLyDy$|UF|b|`U^~jeD566v6z^l-XnHM=%zu6*&d0SuqM;4R_LaYizwebF|?Ea;~q;XR&P-NiwA(&)sSHw zZ(?-g7Z&&> A`2YX_ literal 0 HcmV?d00001 diff --git a/shepherd.py b/shepherd.py new file mode 100644 index 0000000..2c6fbb5 --- /dev/null +++ b/shepherd.py @@ -0,0 +1,11 @@ +from image_text import ImageText + +FONT_FILE = 'lobster.ttf' +BG = 'shepherd.jpg' + + +def draw_shepherd(text, filename): + img = ImageText(BG) + img.write_text_box((74, 310), text, box_width=600, font_filename=FONT_FILE, font_size=40, color=(0, 0, 0), + place='center') + img.save(filename)