나는 어떻게 파이톤으로 무미건조한 대학 생활을 자동화했는가
나는 인도에서 온 2학년 컴퓨터 과학 본과생이다.나는 구렁이를 좋아한다.이것은 내가 dev.to 커뮤니티에 올린 첫 번째 문장이다.우리 시작합시다!
나의 학원에는 일반적인 학생이 등록되어 있는데 학생들은 이곳에서 그들의 개인 자료를 조회하고 숙제를 올리며 마감일을 얻고 수업 자료를 다운로드할 수 있다.

그러나 이 사이트는 찾아보기가 좀 지루해서 나는python으로 이런 무료한 것들을 자동화하기로 결정했다.그 중 하나는 임무 알림 서비스다.
본고에 대해 웹 요청 - 응답 모델의 작업 원리와 간단한python 지식을 알아야 합니다.그것은 두 부분으로 나눌 것이다.
시작!
알림 서비스
나의 첫해에, 나의 게으름 때문에, 나는 종종 몇몇 숫자 숙제의 업로드를 놓쳤다.
이 문제를 해결하기 위해서 나는 파이톤을 이용하여 웹 캡처를 하는 것을 배웠다.
나는 이것이 유용한 자원이라는 것을 발견했다.
https://www.dataquest.io/blog/web-scraping-tutorial-python/
Beautiful Soup과 Requests 라이브러리를 사용하는 법을 배우면 브라우저의 기능을 순서대로 모의하면 HTML/JSON 응답을 처리할 수 있습니다.
그리고 제 첫해 프로젝트로 제가 학생 로그인 중인 인증코드를 위해 해독 프로그램을 개발했다는 것을 알려드리고 싶습니다.인증번호는 다음과 같습니다.

나는 내가 어떻게 Dev.to에서 이 점을 해냈는지 설명하는 간단한 문장을 썼다.
내 GitHub 구성 파일에서 저장소를 찾을 수 있습니다.전화번호link입니다.
chrome 개발자 도구는 매우 편리합니다. 저는 그 중에서 네트워크 모니터를 사용했습니다.
내가 사용하는 논리는 다음과 같다.
method = POST,
form-data = {'uname': "username", 'passwd' "password"},
url = "https://example.com/login",
headers = {"User-Agent":"blah blah"}
따라서python 문법의 요청은 다음과 같습니다:
import requests
from bs4 import BeautifulSoup
response = requests.post(
"https://example.com/login", # URL
{'username': "username", 'password' "password"}, # form-data
headers = {"User-Agent":"blah blah"}, # headers
verify=False # this simply disables SSL security check
)
root = BeautifulSoup(response.text, "html.parser")
print(root.prettify()) # pretty prints the response HTML
작업 페이지는 다음과 같습니다.
# Refer to the Python quickstart on how to setup the environment:
# https://developers.google.com/calendar/quickstart/python
# Change the scope to 'https://www.googleapis.com/auth/calendar' and delete any
# stored credentials.
event = {
'summary': 'Data Structures Assignment - 1',
'description': 'Theory Assessment',
'start': {
'dateTime': '2018-03-28T09:17:30+05:30',
'timeZone': 'Asia/Kolkata', # my timezone
},
'end': {
'dateTime': '2018-03-28T17:18:30+05:30', # 12 midnight is the deadline
'timeZone': 'Asia/Kolkata',
},
'recurrence': [
'RRULE:FREQ=DAILY;COUNT=1'
],
'reminders': {
'useDefault': False,
'overrides': [
{'method': 'email', 'minutes': 24 * 60}, # a day before start
{'method': 'popup', 'minutes': 100}, # 100 minutes before start
],
},
}
event = service.events().insert(calendarId='primary', body=event).execute()
print 'Event created: %s' % (event.get('htmlLink'))

코스 리소스 페이지의 모양:

확장자 없이 다운로드를 저장하는 방법:

확장된 다운로드 시 다운로드를 저장하는 방법:

보너스!
이것은 부분 자동화이지만, 너는 여전히 읽을 수 있다.매우 실용적이다.
효율을 높이기 위해 저는 Google Sheets' 일일 계획 템플릿을 사용할 계획입니다.이것은 기본적으로 일주일을 기한으로 하는 활동 도표로, 날짜가 있고, 시간이 있다.
나의 현재 일주일은 이렇다.

빨간색 구역은 내가 당시에 없었다는 것을 표시한다.
이 일의 묘미는 나의 시간표가 학기 내내 변하지 않기 때문에 내가 해야 할 일은 매주 일요일 저녁에 15분 정도 앉아서 일주일 내내 계획하는 것이다.
지금 내가 원하는 것은 그것을 구글 달력에 동기화해서 휴대전화에서 나의 계획을 볼 수 있도록 하는 것이다.내가 사용하는 방법은 다음과 같다.

동일한 템플릿의 인덱스
var cal = CalendarApp.getDefaultCalendar();
var dayOffset = 0; // replace this with the loop index
var currSheet = SpreadsheetApp.getActiveSheet(); // gets the currently active sheet
var startTimeString = currSheet.getRange(row, column).getValue() // replace row and column with desired values
var startTime = new Date(startTimeString);
startTime.setDate(startTime.getDate() + dayOffset);
var endTime = new Date(startTimeString);
endTime.setDate(startTime.getHour() + 1);
var title = currSheet.getRange(row, column).getValue(); // specify the row and column of the cell
cal.createEvent(title, startTime, endTime); // creates the event in calendar and syncs it
}
타임라인은 매크로가 아닌 문자열이므로 다음 간단한 공식을 사용하여 매크로로 변환합니다.
=C2 + 0.0416666 * <hour_number>
여기, C2는 현재 주 셀입니다.셀의 속성을 조정하려면 셀을 클릭한 다음 색인 셀의 바로 위에 있는 매크로 부분으로 이동합니다.
시간대가 8이면 오전 8:00입니다.나는 한 시간 안에 헤어지고 싶어서 다른 모든 시간에 이런 변화를 했다.이것은 내가 지금 사용하고 있는 스크립트다.0.041666은 기본적으로 하루의 1/24=1시간이다.
function myFunction() {
var cal = CalendarApp.getDefaultCalendar();
var currSheet = SpreadsheetApp.getActiveSheet();
var times = currSheet.getRange("B6:B20").getValues()
var weekDate = currSheet.getRange("C2").getValue()
var columns = ["C","D","E","F","G","H","I"]
var offSet = 6;
var totalDays = 7;
var totalRows = 15;
for(var i = 0; i < totalDays ; i++) {
var column_no = columns[i] + "5:" + columns[i] + "20";
var schedule = currSheet.getRange(column_no).getValues();
for(var j = 0; j < totalRows; j++) {
var startTime = new Date(times[j]);
startTime.setDate(startTime.getDate() + i);
var title = currSheet.getRange(columns[i] + (offSet + j).toString()).getValue();
if(title === ""){
continue;
}
var startTZoffSet = 240; // adjust hour in timezone
var endTZoffSet = 180; // adjust hour in timezone
var correctedStart = new Date(startTime.getTime() + (60000*(startTime.getTimezoneOffset() - startTZoffSet)));
var correctedEnd = new Date(startTime.getTime() + (60000*(startTime.getTimezoneOffset() - endTZoffSet)));
cal.createEvent(title, correctedStart, correctedEnd);
}
}
}
나는 이 스크립트를 실행했는데, 모든 사건이 구글 달력에 동기화되었다.이것이 바로 내가 대학에서 뭔가를 자동화하는 방식이다.만약 내가 당신을 도울 수 있는 것이 있거나, 혹은 당신에게 어떤 건의가 있다면, 평론을 하세요.
Priyansh Jain
Reference
이 문제에 관하여(나는 어떻게 파이톤으로 무미건조한 대학 생활을 자동화했는가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/presto412/how-i-automated-the-boring-university-stuff-with-python-5gib텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)