yjmd2222 / automatic-attendance Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
no errors so far but autodriver is desired
reinit_attributes() 등의 이름으로 run 처음에 실행할 것
Need to add job to enter Zoom class before 1 PM
Application().connect
connects to a random window if window closed after Application
initialized ex) No Zoom conference running but says connected
selenium get에 timeout이 있는지 확인해볼 것
QR image on Zoom is too big that Screen QR Reader sometimes doesn't recognize it and says No code found.
May need to manipulate Zoom window size.
webdriver_manager raises ValueError, so thinking of migrating to chromedriver_autoinstaller for good which only produces a warning when no driver found.
Traceback (most recent call last):
File "C:\Users\jinmo\anaconda3\envs\autocheck\Lib\site-packages\apscheduler\executors\base.py", line 125, in run_job
retval = job.func(*job.args, **job.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\jinmo\Documents\GitHub\automatic-attendance\auto_attendance\abc.py", line 77, in wrapper
func(*args, **kwargs)
File "C:\Users\jinmo\Documents\GitHub\automatic-attendance\auto_attendance\abc.py", line 51, in wrapper
func(*args, **kwargs)
File "C:\Users\jinmo\Documents\GitHub\automatic-attendance\auto_attendance\notify.py", line 105, in wrapper
func(*args, **kwargs)
File "C:\Users\jinmo\Documents\GitHub\automatic-attendance\auto_attendance\auto_check_in.py", line 310, in run
is_qr = self.check_link_loop()
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\jinmo\Documents\GitHub\automatic-attendance\auto_attendance\auto_check_in.py", line 139, in check_link_loop
result = self.check_link(rect_resized)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\jinmo\Documents\GitHub\automatic-attendance\auto_attendance\auto_check_in.py", line 156, in check_link
self.resize_window(rect_resized)
File "C:\Users\jinmo\Documents\GitHub\automatic-attendance\auto_attendance\auto_check_in.py", line 93, in resize_window
self._resize_window_win32(rect, self.hwnd)
File "C:\Users\jinmo\Documents\GitHub\automatic-attendance\auto_attendance\auto_check_in.py", line 69, in _resize_window_win32
win32gui.MoveWindow(hwnd, *rect, True)
pywintypes.error: (1400, 'MoveWindow', '잘못된 창 핸들입니다.')
send alt key before win32gui call
why tho
probably macos. Need to look at https://pypi.org/project/atomacos/ very unstable.
PyAutoGUI and AppleScript for window and button detection.
Problem: QR reading may fail if Zoom conference is behind Zoom main window.
I can't get it to recognize the full name of conference, and I thought I had a check to set it foreground, but it got lost?
Need to get this done in both main branch and macos branch
페이지 refresh하는 방법 생각해보기.
expected to be fixed in #43
gh traffic data grabbed with api shows decrease in count for past 14th day from today. gh must be emptying data on more frequent, non-daily basis. Need to add check for key presence for at least the last 14th day. preferably all days except most recent
zoom may require update from time to time and won't let you enter conference unless updated
because it's only making things harder to read. simple for/while loops would be enough
Need to resize horizontally
Related: a374cbd
Currently using fix by ngoldin: https://stackoverflow.com/a/76525123
Sooner or later the devs should fix this issue.
(Also waiting on stable version of Selenium and/or autodriver) V116에서 major incompatibility 생겨서 selenium, webdriver-manager 업그레이드로 해결한 것으로 추정. 관련: #71
Match win32gui.FindWindow("ZPContentViewWndClass", "Zoom 회의")
This would not match if they choose to change conf name. Do win32gui.IsWindowVisible()
check.
Already does that check. Check if hwnd has title.
No, because other windows have titles. Fuck the recent updates. Need to check what title it has if hwnd is not 0
macos: cmd + shift + v
windows: alt + v
순화된 표현 사용
Job "decorator_start_end.<locals>.inner_decorator.<locals>.wrapper (trigger: or[cron[year='2023', month='7', day='10', hour='11', minute='10'], cron[year='2023', month='7', day='10', hour='11', minute
='15'], cron[year='2023', month='7', day='10', hour='11', minute='20'], cron[year='2023', month='7', day='10', hour='11', minute='25'], cron[year='2023', month='7', day='10', hour='11', minute='30'],
cron[year='2023', month='7', day='10', hour='13', minute='1'], cron[year='2023', month='7', day='10', hour='13', minute='6'], cron[year='2023', month='7', day='10', hour='13', minute='11'], cron[year=
'2023', month='7', day='10', hour='13', minute='16'], cron[year='2023', month='7', day='10', hour='13', minute='21'], cron[year='2023', month='7', day='10', hour='15', minute='10'], cron[year='2023',
month='7', day='10', hour='15', minute='15'], cron[year='2023', month='7', day='10', hour='15', minute='20'], cron[year='2023', month='7', day='10', hour='15', minute='25'], cron[year='2023', month='7
', day='10', hour='15', minute='30']], next run at: 2023-07-10 11:25:00 KST)" raised an exception
Traceback (most recent call last):
File "C:\Users\jinmo\anaconda3\envs\fakezoom\Lib\site-packages\apscheduler\executors\base.py", line 125, in run_job
retval = job.func(*job.args, **job.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\jinmo\Documents\GitHub\fake-attendance\fake_attendance\helper.py", line 21, in wrapper
func(*args, **kwargs)
File "C:\Users\jinmo\Documents\GitHub\fake-attendance\fake_attendance\fake_check_in.py", line 269, in run
self.drop_runs_until(self.print_name, until)
File "C:\Users\jinmo\Documents\GitHub\fake-attendance\fake_attendance\scheduler.py", line 136, in drop_runs_until
self.reschedule(job_id, rescheduled_trigger, is_remove_job)
File "C:\Users\jinmo\Documents\GitHub\fake-attendance\fake_attendance\scheduler.py", line 148, in reschedule
print(rescheduled_trigger)
File "C:\Users\jinmo\anaconda3\envs\fakezoom\Lib\site-packages\apscheduler\triggers\combining.py", line 95, in __str__
return 'or[{}]'.format(', '.join(str(trigger) for trigger in self.triggers))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'OrTrigger' object is not iterable
Probably this:
https://github.com/yjmd2222/fake-attendance/blob/23eea0acf88e85631609ff5f6f875d62375378af/fake_attendance/scheduler.py#L131
self.build_trigger()
returns OrTrigger
, and OrTrigger
only accepts an iterable:
https://github.com/yjmd2222/fake-attendance/blob/23eea0acf88e85631609ff5f6f875d62375378af/fake_attendance/scheduler.py#L76-L85
So change it to
rescheduled_trigger = self.build_trigger(new_time_sets)
maybe.
Wondering why it wasn't throwing errors when I was testing last weekend, and I'm looking at job the schedule of which still contains the past triggers. Is it showing the job that is not yet rescheduled? Most likely.
It's been there since beginning. I could only recently test it thoroughly.
14:35:35 QR 코드 없음. 현 세션 완료
14:35:37 QR 코드 확인 후 출석 체크 실패
14:35:42 다음 출석 스크립트 실행 시각: 14:40
Exiting scheduler does not terminate python3. It must have something to do with parallel computing that I have zero knowledge of.
will need to migrate to something else
Probably would only take care of send email part because Kakao message API requires extra steps
pyautogui 이용하면 될 듯
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.