Skip to content

Commit 9d0657e

Browse files
authoredOct 5, 2022
Merge pull request #29 from 3NCRY9T3D/master
Added AutoCert Script
2 parents ab3b85a + ef34448 commit 9d0657e

File tree

10 files changed

+375
-1
lines changed

10 files changed

+375
-1
lines changed
 

‎AutoCert/README.md

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
This repository consists of a list of python scripts to automate few tasks.
2+
3+
You can contribute by adding more python scripts which can be used to automate things. Some of already done are listed below.
4+
Incase you have anything to be followed while executing the python script mention it as well
5+
6+
7+
# Python Script
8+
9+
## Script - AutoCert
10+
11+
A Python script to auto generate e-certificates in bulk.
12+
13+
# Instruction to use
14+
<ol>
15+
<li>First install all the dependencies, present in the requirements.txt file </li>
16+
<li>Put a certificate template with blank fields, in the project folder, with the name `certificateTemplate.png` .Make sure the template is in `png` format only</li>
17+
<li>Put the input `csv` file containing a list of the participant names by under a column name. </li>
18+
<li>Once all this is done, run `python3 main.py` in your terminal</li>
19+
<li>The generated certificates would be present under the *export* folder, with each certificate having the name of the participant.</li>
20+
</ol>
21+
22+
# Optional
23+
- One can change the font, by adding custom fonts under the font folder.
24+
- One can change the location of the name inside the main.py file.
25+
26+
27+

‎AutoCert/Sample.png

65.3 KB
Loading

‎AutoCert/exports/rahul.pdf

52.6 KB
Binary file not shown.

‎AutoCert/fonts/Roboto-Light.ttf

163 KB
Binary file not shown.

‎AutoCert/fonts/Roboto-Thin.ttf

165 KB
Binary file not shown.

‎AutoCert/fonts/orbitron-black.otf

19.8 KB
Binary file not shown.

‎AutoCert/main.py

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from PIL import Image, ImageFont, ImageDraw
2+
import pandas as pd
3+
import os
4+
5+
6+
def generator(name_list, name_font, name_size, name_loc, id_font, id_size, id_loc, event_id, id_offset=0):
7+
name_font = ImageFont.truetype(name_font, size=name_size)
8+
id_font = ImageFont.truetype(id_font, size=id_size)
9+
10+
for i in range(0, len(name_list)):
11+
im = Image.open("Sample.png")
12+
sample = ImageDraw.Draw(im)
13+
text_color = (63, 61, 86)
14+
15+
name = name_list[i]
16+
w, h = sample.textsize(name, font=name_font)
17+
W, H = name_loc
18+
sample.text((W - w / 2, H - h / 2), name, font=name_font, fill=text_color)
19+
20+
cert_id = event_id + str(i + 1)
21+
W, H = id_loc
22+
sample.text((W, H), cert_id, font=id_font, fill=text_color)
23+
24+
rgb = Image.new('RGB', im.size, (255, 255, 255))
25+
rgb.paste(im, mask=im.split()[3])
26+
rgb.save('exports/' + name + '.pdf', 'PDF', resoultion=100.0)
27+
28+
29+
def process():
30+
data = pd.read_csv('names.csv', names=['names'])
31+
evnetID = input("Enter the event name")
32+
generator(
33+
data.names.tolist(),
34+
"fonts/Roboto-Light.ttf",
35+
60,
36+
(1260.5, 811.5),
37+
"fonts/orbitron-black.otf",
38+
48,
39+
(1326, 1369),
40+
evnetID,
41+
0
42+
)
43+
44+
45+
process()

‎AutoCert/names.csv

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
vaibhav,rahul

‎AutoCert/requirements.txt

+298
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,298 @@
1+
alabaster @ file:///home/ktietz/src/ci/alabaster_1611921544520/work
2+
anaconda-client==1.7.2
3+
anaconda-navigator==2.0.3
4+
anaconda-project @ file:///tmp/build/80754af9/anaconda-project_1610472525955/work
5+
anyio @ file:///tmp/build/80754af9/anyio_1617783275907/work/dist
6+
appdirs==1.4.4
7+
argh==0.26.2
8+
argon2-cffi @ file:///tmp/build/80754af9/argon2-cffi_1613037097816/work
9+
asn1crypto @ file:///tmp/build/80754af9/asn1crypto_1596577642040/work
10+
astroid @ file:///tmp/build/80754af9/astroid_1613500854201/work
11+
astropy @ file:///tmp/build/80754af9/astropy_1617745353437/work
12+
async-generator @ file:///home/ktietz/src/ci/async_generator_1611927993394/work
13+
atomicwrites==1.4.0
14+
attrs @ file:///tmp/build/80754af9/attrs_1604765588209/work
15+
autopep8 @ file:///tmp/build/80754af9/autopep8_1615918855173/work
16+
Babel @ file:///tmp/build/80754af9/babel_1607110387436/work
17+
backcall @ file:///home/ktietz/src/ci/backcall_1611930011877/work
18+
backports.functools-lru-cache @ file:///tmp/build/80754af9/backports.functools_lru_cache_1618170165463/work
19+
backports.shutil-get-terminal-size @ file:///tmp/build/80754af9/backports.shutil_get_terminal_size_1608222128777/work
20+
backports.tempfile @ file:///home/linux1/recipes/ci/backports.tempfile_1610991236607/work
21+
backports.weakref==1.0.post1
22+
beautifulsoup4 @ file:///home/linux1/recipes/ci/beautifulsoup4_1610988766420/work
23+
bitarray @ file:///tmp/build/80754af9/bitarray_1620827551536/work
24+
bkcharts==0.2
25+
black==19.10b0
26+
bleach @ file:///tmp/build/80754af9/bleach_1612211392645/work
27+
bokeh @ file:///tmp/build/80754af9/bokeh_1620779595936/work
28+
boto==2.49.0
29+
Bottleneck==1.3.2
30+
brotlipy==0.7.0
31+
cachetools==4.2.1
32+
certifi==2020.12.5
33+
cffi @ file:///tmp/build/80754af9/cffi_1613246945912/work
34+
chardet @ file:///tmp/build/80754af9/chardet_1607706746162/work
35+
click @ file:///home/linux1/recipes/ci/click_1610990599742/work
36+
cloudpickle @ file:///tmp/build/80754af9/cloudpickle_1598884132938/work
37+
clyent==1.2.2
38+
colorama @ file:///tmp/build/80754af9/colorama_1607707115595/work
39+
conda==4.10.1
40+
conda-build==3.21.4
41+
conda-content-trust @ file:///tmp/build/80754af9/conda-content-trust_1617045594566/work
42+
conda-package-handling @ file:///tmp/build/80754af9/conda-package-handling_1618262148928/work
43+
conda-repo-cli @ file:///tmp/build/80754af9/conda-repo-cli_1620168426516/work
44+
conda-token @ file:///tmp/build/80754af9/conda-token_1620076980546/work
45+
conda-verify==3.4.2
46+
contextlib2==0.6.0.post1
47+
crc32c==2.2
48+
cryptography==3.3.2
49+
cycler==0.10.0
50+
Cython==0.29.22
51+
cytoolz==0.11.0
52+
dask @ file:///tmp/build/80754af9/dask-core_1617390489108/work
53+
decorator @ file:///tmp/build/80754af9/decorator_1617916966915/work
54+
defusedxml @ file:///tmp/build/80754af9/defusedxml_1615228127516/work
55+
diff-match-patch @ file:///tmp/build/80754af9/diff-match-patch_1594828741838/work
56+
dill==0.3.3
57+
distributed @ file:///tmp/build/80754af9/distributed_1620902833129/work
58+
dlx==1.0.4
59+
docplex==2.15.194
60+
docutils @ file:///tmp/build/80754af9/docutils_1620827984873/work
61+
entrypoints==0.3
62+
et-xmlfile==1.0.1
63+
fastcache==1.1.0
64+
fastdtw==0.3.4
65+
fastjsonschema==2.15.0
66+
filelock @ file:///home/linux1/recipes/ci/filelock_1610993975404/work
67+
flake8 @ file:///tmp/build/80754af9/flake8_1615834841867/work
68+
Flask @ file:///home/ktietz/src/ci/flask_1611932660458/work
69+
fsspec @ file:///tmp/build/80754af9/fsspec_1617959894824/work
70+
func-timeout==4.3.5
71+
future==0.18.2
72+
ga==0.1.1.dev0
73+
geneticalgorithm==1.0.2
74+
gevent @ file:///tmp/build/80754af9/gevent_1616770671827/work
75+
glob2 @ file:///home/linux1/recipes/ci/glob2_1610991677669/work
76+
gmpy2==2.0.8
77+
google-api-core==1.26.0
78+
google-api-python-client==1.12.8
79+
google-auth==1.27.0
80+
google-auth-httplib2==0.0.4
81+
google-auth-oauthlib==0.4.2
82+
googleapis-common-protos==1.53.0
83+
greenlet @ file:///tmp/build/80754af9/greenlet_1611957705398/work
84+
gs==1.0.0
85+
h5py==3.2.1
86+
HeapDict==1.0.1
87+
html5lib @ file:///tmp/build/80754af9/html5lib_1593446221756/work
88+
httplib2==0.19.0
89+
idna @ file:///home/linux1/recipes/ci/idna_1610986105248/work
90+
imageio @ file:///tmp/build/80754af9/imageio_1617700267927/work
91+
imagesize @ file:///home/ktietz/src/ci/imagesize_1611921604382/work
92+
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1617874469820/work
93+
inflection==0.5.1
94+
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
95+
intervaltree @ file:///tmp/build/80754af9/intervaltree_1598376443606/work
96+
ipykernel @ file:///tmp/build/80754af9/ipykernel_1596207638929/work/dist/ipykernel-5.3.4-py3-none-any.whl
97+
ipython @ file:///tmp/build/80754af9/ipython_1617120885885/work
98+
ipython-genutils @ file:///tmp/build/80754af9/ipython_genutils_1606773439826/work
99+
ipywidgets @ file:///tmp/build/80754af9/ipywidgets_1610481889018/work
100+
isort @ file:///tmp/build/80754af9/isort_1616355431277/work
101+
itsdangerous @ file:///home/ktietz/src/ci/itsdangerous_1611932585308/work
102+
jdcal==1.4.1
103+
jedi @ file:///tmp/build/80754af9/jedi_1606932564285/work
104+
jeepney @ file:///tmp/build/80754af9/jeepney_1606148855031/work
105+
Jinja2 @ file:///tmp/build/80754af9/jinja2_1612213139570/work
106+
joblib==1.2.0
107+
json5==0.9.5
108+
jsonschema @ file:///tmp/build/80754af9/jsonschema_1602607155483/work
109+
jupyter==1.0.0
110+
jupyter-client @ file:///tmp/build/80754af9/jupyter_client_1616770841739/work
111+
jupyter-console @ file:///tmp/build/80754af9/jupyter_console_1616615302928/work
112+
jupyter-core @ file:///tmp/build/80754af9/jupyter_core_1612213311222/work
113+
jupyter-packaging @ file:///tmp/build/80754af9/jupyter-packaging_1613502826984/work
114+
jupyter-server @ file:///tmp/build/80754af9/jupyter_server_1616083640759/work
115+
jupyterlab @ file:///tmp/build/80754af9/jupyterlab_1619133235951/work
116+
jupyterlab-pygments @ file:///tmp/build/80754af9/jupyterlab_pygments_1601490720602/work
117+
jupyterlab-server @ file:///tmp/build/80754af9/jupyterlab_server_1617134334258/work
118+
jupyterlab-widgets @ file:///tmp/build/80754af9/jupyterlab_widgets_1609884341231/work
119+
keyring @ file:///tmp/build/80754af9/keyring_1614616740399/work
120+
kiwisolver==1.3.1
121+
lazy-object-proxy @ file:///tmp/build/80754af9/lazy-object-proxy_1616526917483/work
122+
libarchive-c @ file:///tmp/build/80754af9/python-libarchive-c_1617780486945/work
123+
llvmlite==0.36.0
124+
locket==0.2.1
125+
lxml==4.9.1
126+
MarkupSafe==1.1.1
127+
matplotlib==3.3.3
128+
mccabe==0.6.1
129+
mistune==0.8.4
130+
mkl-fft==1.3.0
131+
mkl-random @ file:///tmp/build/80754af9/mkl_random_1618853849286/work
132+
mkl-service==2.3.0
133+
mock @ file:///tmp/build/80754af9/mock_1607622725907/work
134+
more-itertools @ file:///tmp/build/80754af9/more-itertools_1613676688952/work
135+
mpmath==1.1.0
136+
msgpack @ file:///tmp/build/80754af9/msgpack-python_1612287151062/work
137+
multipledispatch==0.6.0
138+
multitasking==0.0.9
139+
mypy-extensions==0.4.3
140+
navigator-updater==0.2.1
141+
nbclassic @ file:///tmp/build/80754af9/nbclassic_1616085367084/work
142+
nbclient @ file:///tmp/build/80754af9/nbclient_1614364831625/work
143+
nbconvert @ file:///tmp/build/80754af9/nbconvert_1601914830498/work
144+
nbformat @ file:///tmp/build/80754af9/nbformat_1617383369282/work
145+
nest-asyncio==1.5.1
146+
networkx==2.5
147+
nltk @ file:///tmp/build/80754af9/nltk_1618327084230/work
148+
nose==1.3.7
149+
notebook @ file:///tmp/build/80754af9/notebook_1616443462982/work
150+
ntlm-auth==1.5.0
151+
numba @ file:///tmp/build/80754af9/numba_1616774046117/work
152+
numexpr @ file:///tmp/build/80754af9/numexpr_1618856167419/work
153+
numpy==1.22.0
154+
numpydoc @ file:///tmp/build/80754af9/numpydoc_1605117425582/work
155+
oauth2client==4.1.3
156+
olefile==0.46
157+
openpyxl @ file:///tmp/build/80754af9/openpyxl_1615411699337/work
158+
packaging==20.9
159+
pandas==1.2.0
160+
pandocfilters @ file:///tmp/build/80754af9/pandocfilters_1605120460739/work
161+
parso==0.7.0
162+
partd @ file:///tmp/build/80754af9/partd_1618000087440/work
163+
path @ file:///tmp/build/80754af9/path_1614022220526/work
164+
pathlib2 @ file:///tmp/build/80754af9/pathlib2_1607024983162/work
165+
pathspec==0.7.0
166+
patsy==0.5.1
167+
pep8==1.7.1
168+
pexpect @ file:///tmp/build/80754af9/pexpect_1605563209008/work
169+
pickleshare @ file:///tmp/build/80754af9/pickleshare_1606932040724/work
170+
Pillow @ file:///tmp/build/80754af9/pillow_1617383569452/work
171+
pkginfo==1.7.0
172+
pluggy @ file:///tmp/build/80754af9/pluggy_1615976321666/work
173+
ply==3.11
174+
prometheus-client @ file:///tmp/build/80754af9/prometheus_client_1618088486455/work
175+
prompt-toolkit @ file:///tmp/build/80754af9/prompt-toolkit_1616415428029/work
176+
protobuf==3.18.3
177+
psutil==5.8.0
178+
ptyprocess @ file:///tmp/build/80754af9/ptyprocess_1609355006118/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl
179+
py @ file:///tmp/build/80754af9/py_1607971587848/work
180+
pyasn1==0.4.8
181+
pyasn1-modules==0.2.8
182+
pybind11==2.6.2
183+
pycodestyle @ file:///home/ktietz/src/ci_mi/pycodestyle_1612807597675/work
184+
pycosat==0.6.3
185+
pycparser @ file:///tmp/build/80754af9/pycparser_1594388511720/work
186+
pycurl==7.43.0.6
187+
pydocstyle @ file:///tmp/build/80754af9/pydocstyle_1616182067796/work
188+
pyerfa @ file:///tmp/build/80754af9/pyerfa_1619390903914/work
189+
pyflakes @ file:///home/ktietz/src/ci_ipy2/pyflakes_1612551159640/work
190+
Pygments @ file:///tmp/build/80754af9/pygments_1615143339740/work
191+
PyJWT==2.4.0
192+
pylint @ file:///tmp/build/80754af9/pylint_1617135829881/work
193+
pyls-black @ file:///tmp/build/80754af9/pyls-black_1607553132291/work
194+
pyls-spyder @ file:///tmp/build/80754af9/pyls-spyder_1613849700860/work
195+
pyodbc===4.0.0-unsupported
196+
pyOpenSSL @ file:///tmp/build/80754af9/pyopenssl_1608057966937/work
197+
pyparsing==2.4.7
198+
pyrsistent @ file:///tmp/build/80754af9/pyrsistent_1600141720057/work
199+
PySocks @ file:///tmp/build/80754af9/pysocks_1605305779399/work
200+
pytest==6.2.3
201+
python-constraint==1.4.0
202+
python-dateutil==2.8.1
203+
python-jsonrpc-server @ file:///tmp/build/80754af9/python-jsonrpc-server_1600278539111/work
204+
python-language-server @ file:///tmp/build/80754af9/python-language-server_1607972495879/work
205+
pytz @ file:///tmp/build/80754af9/pytz_1612215392582/work
206+
PyWavelets @ file:///tmp/build/80754af9/pywavelets_1601658317819/work
207+
pyxdg @ file:///tmp/build/80754af9/pyxdg_1603822279816/work
208+
PyYAML==5.4.1
209+
pyzmq==20.0.0
210+
QDarkStyle==2.8.1
211+
qiskit==0.24.0
212+
qiskit-aer==0.7.6
213+
qiskit-aqua==0.8.2
214+
qiskit-ibmq-provider==0.12.1
215+
qiskit-ignis==0.5.2
216+
qiskit-terra==0.16.4
217+
QtAwesome @ file:///tmp/build/80754af9/qtawesome_1615991616277/work
218+
qtconsole @ file:///tmp/build/80754af9/qtconsole_1616775094278/work
219+
QtPy==1.9.0
220+
Quandl==3.6.1
221+
regex @ file:///tmp/build/80754af9/regex_1617569202463/work
222+
requests @ file:///tmp/build/80754af9/requests_1608241421344/work
223+
requests-ntlm==1.1.0
224+
requests-oauthlib==1.3.0
225+
retworkx==0.8.0
226+
rope @ file:///tmp/build/80754af9/rope_1602264064449/work
227+
rsa==4.7.2
228+
Rtree @ file:///tmp/build/80754af9/rtree_1618420845272/work
229+
ruamel-yaml-conda @ file:///tmp/build/80754af9/ruamel_yaml_1616016699510/work
230+
scikit-image==0.18.1
231+
scikit-learn==0.24.0
232+
scipy==1.6.0
233+
seaborn @ file:///tmp/build/80754af9/seaborn_1608578541026/work
234+
SecretStorage @ file:///tmp/build/80754af9/secretstorage_1614022784285/work
235+
selenium==3.141.0
236+
Send2Trash @ file:///tmp/build/80754af9/send2trash_1607525499227/work
237+
simplegeneric==0.8.1
238+
singledispatch @ file:///tmp/build/80754af9/singledispatch_1614366001199/work
239+
sip==4.19.13
240+
six @ file:///tmp/build/80754af9/six_1605205327372/work
241+
sklearn==0.0
242+
sniffio @ file:///tmp/build/80754af9/sniffio_1614030475067/work
243+
snowballstemmer @ file:///tmp/build/80754af9/snowballstemmer_1611258885636/work
244+
sortedcollections @ file:///tmp/build/80754af9/sortedcollections_1611172717284/work
245+
sortedcontainers @ file:///tmp/build/80754af9/sortedcontainers_1606865132123/work
246+
soupsieve @ file:///tmp/build/80754af9/soupsieve_1616183228191/work
247+
Sphinx @ file:///tmp/build/80754af9/sphinx_1620777493457/work
248+
sphinxcontrib-applehelp @ file:///home/ktietz/src/ci/sphinxcontrib-applehelp_1611920841464/work
249+
sphinxcontrib-devhelp @ file:///home/ktietz/src/ci/sphinxcontrib-devhelp_1611920923094/work
250+
sphinxcontrib-htmlhelp @ file:///home/ktietz/src/ci/sphinxcontrib-htmlhelp_1611920974801/work
251+
sphinxcontrib-jsmath @ file:///home/ktietz/src/ci/sphinxcontrib-jsmath_1611920942228/work
252+
sphinxcontrib-qthelp @ file:///home/ktietz/src/ci/sphinxcontrib-qthelp_1611921055322/work
253+
sphinxcontrib-serializinghtml @ file:///home/ktietz/src/ci/sphinxcontrib-serializinghtml_1611920755253/work
254+
sphinxcontrib-websupport @ file:///tmp/build/80754af9/sphinxcontrib-websupport_1597081412696/work
255+
spyder @ file:///tmp/build/80754af9/spyder_1616775618138/work
256+
spyder-kernels @ file:///tmp/build/80754af9/spyder-kernels_1614030590686/work
257+
SQLAlchemy @ file:///tmp/build/80754af9/sqlalchemy_1620712430742/work
258+
statsmodels @ file:///tmp/build/80754af9/statsmodels_1614023746358/work
259+
sympy==1.7.1
260+
tables==3.6.1
261+
tblib @ file:///tmp/build/80754af9/tblib_1597928476713/work
262+
terminado==0.9.4
263+
testpath @ file:///home/ktietz/src/ci/testpath_1611930608132/work
264+
textdistance @ file:///tmp/build/80754af9/textdistance_1612461398012/work
265+
threadpoolctl==2.1.0
266+
three-merge @ file:///tmp/build/80754af9/three-merge_1607553261110/work
267+
tifffile==2020.10.1
268+
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
269+
toolz @ file:///home/linux1/recipes/ci/toolz_1610987900194/work
270+
tornado @ file:///tmp/build/80754af9/tornado_1606942300299/work
271+
tqdm @ file:///tmp/build/80754af9/tqdm_1615925068909/work
272+
traitlets @ file:///home/ktietz/src/ci/traitlets_1611929699868/work
273+
tweak==1.0.3
274+
typed-ast @ file:///tmp/build/80754af9/typed-ast_1610484547928/work
275+
typing-extensions @ file:///home/ktietz/src/ci_mi/typing_extensions_1612808209620/work
276+
ujson @ file:///tmp/build/80754af9/ujson_1611259522456/work
277+
unicodecsv==0.14.1
278+
uritemplate==3.0.1
279+
urllib3 @ file:///tmp/build/80754af9/urllib3_1615837158687/work
280+
watchdog @ file:///tmp/build/80754af9/watchdog_1612471027849/work
281+
wcwidth @ file:///tmp/build/80754af9/wcwidth_1593447189090/work
282+
webencodings==0.5.1
283+
websockets==9.1
284+
Werkzeug @ file:///home/ktietz/src/ci/werkzeug_1611932622770/work
285+
widgetsnbextension==3.5.1
286+
wrapt==1.12.1
287+
wurlitzer @ file:///tmp/build/80754af9/wurlitzer_1617224664226/work
288+
xgboost==1.5.0.dev0
289+
xlrd==2.0.1
290+
XlsxWriter @ file:///tmp/build/80754af9/xlsxwriter_1617224712951/work
291+
xlwt==1.3.0
292+
xmltodict==0.12.0
293+
yapf @ file:///tmp/build/80754af9/yapf_1615749224965/work
294+
yfinance==0.1.55
295+
zict==2.0.0
296+
zipp @ file:///tmp/build/80754af9/zipp_1615904174917/work
297+
zope.event==4.5.0
298+
zope.interface @ file:///tmp/build/80754af9/zope.interface_1616357211867/work

‎README.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,7 @@ calculate compound interest
6464
## Script 14 - Mouse mover
6565
Moves your mouse every 15 seconds
6666
## Script 15 - JSON to YAML converter
67-
Converts JSON file to YAML files. A sample JSON is included for testing.
67+
Converts JSON file to YAML files. A sample JSON is included for testing.
68+
69+
## Script 16 - AutoCert
70+
A Python script to auto generate e-certificates in bulk.

0 commit comments

Comments
 (0)
Please sign in to comment.