diff --git a/requirements.txt b/requirements.txt index 207bfc5..c184b47 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,7 @@ aiohttp-retry==2.8.3 aiomysql==0.2.0 aiosignal==1.3.1 annoy==1.17.3 +arrow==1.3.0 async-timeout==4.0.3 asyncpg==0.29.0 attrs==23.2.0 @@ -12,6 +13,7 @@ bcrypt==4.1.2 beautifulsoup4==4.12.3 bidict==0.22.1 blinker==1.7.0 +cachetools==5.3.2 certifi==2024.2.2 cffi==1.16.0 charset-normalizer==3.3.2 @@ -26,6 +28,7 @@ deepdiff==6.7.1 docxcompose==1.4.0 docxtpl==0.16.7 durable-rules==2.0.28 +et-xmlfile==1.1.0 filelock==3.13.1 Flask==3.0.1 Flask-SocketIO==5.3.6 @@ -35,11 +38,19 @@ frozenlist==1.4.1 fsspec==2023.12.2 funcy==2.0 gensim==4.3.2 +google-api-core==2.16.2 +google-api-python-client==2.116.0 +google-auth==2.27.0 +google-auth-httplib2==0.2.0 +google-auth-oauthlib==1.2.0 +googleapis-common-protos==1.62.0 greenlet==3.0.3 h11==0.14.0 html2markdown==0.1.7 htmldate==1.7.0 +httplib2==0.22.0 huggingface-hub==0.20.3 +ics==0.7.2 idna==3.6 instructure-dap-client==0.3.18 itsdangerous==2.1.2 @@ -68,8 +79,11 @@ multidict==6.0.4 networkx==3.2.1 nltk==3.8.1 numpy==1.26.3 +oauthlib==3.2.2 +openpyxl==3.1.2 ordered-set==4.1.0 orjson==3.9.12 +outcome==1.3.0.post0 packaging==23.2 paho-mqtt==1.6.1 pampy==0.3.0 @@ -79,8 +93,12 @@ path-dict==4.0.0 pathlib==1.0.1 pdfminer==20191125 pdfminer.six==20231228 +piexif==1.1.3 pillow==10.2.0 +protobuf==4.25.2 pyarrow==15.0.0 +pyasn1==0.5.1 +pyasn1-modules==0.3.0 pycparser==2.21 pycryptodome==3.20.0 pygame==2.5.2 @@ -92,6 +110,7 @@ pypandoc==1.12 pyparsing==3.1.1 PyPDF2==3.0.1 pysftp==0.2.9 +PySocks==1.7.1 python-dateutil==2.8.2 python-docx==1.1.0 python-engineio==4.8.2 @@ -103,23 +122,28 @@ redis==5.0.1 referencing==0.33.0 regex==2023.12.25 requests==2.31.0 +requests-oauthlib==1.3.1 rich==13.7.0 rpds-py==0.17.1 +rsa==4.9 safetensors==0.4.2 schedule==1.2.1 scikit-learn==1.4.0 scipy==1.12.0 +selenium==4.17.2 sentence-transformers==2.3.1 sentencepiece==0.1.99 simple-websocket==1.0.0 simpy==4.1.1 six==1.16.0 smart-open==6.4.0 +sniffio==1.3.0 sortedcontainers==2.4.0 soupsieve==2.5 SQLAlchemy==2.0.25 striprtf==0.0.26 sympy==1.12 +TatSu==5.11.3 textdistance==4.6.1 textual==0.48.2 threadpoolctl==3.2.0 @@ -131,11 +155,15 @@ torch==2.2.0 tqdm==4.66.1 trafilatura==1.7.0 transformers==4.37.2 +trio==0.24.0 +trio-websocket==0.11.1 types-aiofiles==23.2.0.20240106 +types-python-dateutil==2.8.19.20240106 typing_extensions==4.9.0 tzdata==2023.4 tzlocal==5.2 uc-micro-py==1.0.2 +uritemplate==4.1.1 urllib3==2.2.0 Werkzeug==3.0.1 Whoosh==2.7.4 diff --git a/users.py b/users.py index 9d21691..bac0d83 100644 --- a/users.py +++ b/users.py @@ -6,6 +6,7 @@ import pandas as pd import matplotlib.pyplot as plt #from pandas import TimeGrouper +from PIL import Image from collections import defaultdict from pipelines import fetch, fetch_stream, getSemesterSchedule, header, url, FetchError, put_file from courses import course_enrollment, users_in_semester @@ -1141,6 +1142,9 @@ def downloadPhoto(): with open(pix_dir + a[0].lower(), 'wb') as f: shutil.copyfileobj(h, f) # rename to right file extension + # TODO: Change imghdr to PILLOW (PIL) + #img = Image.open(filename) + #img_type = img.format # 'JPEG' img_type = imghdr.what(pix_dir + a[0].lower()) if img_type == 'jpeg': img_type = 'jpg' try: