123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- # selenium for web driving
- import selenium
- from selenium import webdriver
- # time for pausing between navigation
- import time
- # Datetime for recording time of submission
- import datetime
- # os for file management
- import os
- def submit_assignment(file_tup):
- # Using Chrome to access web
- driver = webdriver.Chrome()
- time.sleep(5)
- # Open the website
- driver.get('https://canvas.case.edu')
- # Password for Canvas
- with open('C:/Users/Will Koehrsen/Desktop/cp.txt', 'r') as f:
- cp = f.read()
- # Locate id and password
- id_box = driver.find_element_by_name('username')
- pass_box = driver.find_element_by_name('password')
- # Send login information
- id_box.send_keys('wjk68')
- pass_box.send_keys(cp)
- # Click login
- login_button = driver.find_element_by_name('submit')
- login_button.click()
- # Find and click on list of courses
- courses_button = driver.find_element_by_id('global_nav_courses_link')
- courses_button.click()
- # Wait for the page to load
- time.sleep(2)
- # Get the name of the folder
- folder = file_tup[0]
-
- # Class to select depends on folder
- if folder == 'DSCI451':
- class_select = driver.find_element_by_link_text('Applied Data Science Research (100/5047)')
- elif folder == 'DCSI453':
- class_select = driver.find_element_by_link_text('Data Science: Statistical Learning, Modeling and Prediction (100/5046)')
- elif folder == 'EECS491':
- class_select = driver.find_element_by_link_text('Artificial Intelligence: Probabilistic Graphical Models (100/10039)')
- elif folder == 'EECS531':
- class_select = driver.find_element_by_link_text('Computer Vision (100/10040)')
- # Click on the specific class
- class_select.click()
- assignment_button = driver.find_element_by_link_text('Assignments')
- assignment_button.click()
- # Wait for the page to load
- time.sleep(2)
- # Locate the specific assignment
- file_name = file_tup[1]
- file_locator = file_name.split('.')[0]
-
- specific_assigment = driver.find_element_by_link_text(file_locator)
- specific_assigment.click()
- # Click on the button to submit an assignment
- try:
- submit_assignment_button = driver.find_element_by_link_text('Submit Assignment')
- # If assignment has already been submitted
- except:
- print('Assignment already submitted, re-submitting')
- submit_assignment_button = driver.find_element_by_link_text('Re-submit Assignment')
- submit_assignment_button.click()
- # Wait for the page to load
- time.sleep(2)
- # Choose file button
- choose_file = driver.find_element_by_name('attachments[0][uploaded_data]')
- # Send the name of the file to the button
- file_location = os.path.join(submission_dir, folder, file_name)
- choose_file.send_keys(file_location)
- submit_assignment = driver.find_element_by_id('submit_file_button')
- submit_assignment.click()
- # Wait for the page
- time.sleep(2)
- # Move the file to the submitted folder
- submitted_dir = 'C:/Users/Will Koehrsen/Desktop/submitted_assignments'
- submitted_dir = os.path.join(submitted_dir, folder)
- submitted_file_name = 'Submitted ' + file_name
- submitted_file_location = os.path.join(submitted_dir, submitted_file_name)
- # os.rename(file_location, submitted_file_location)
- print('{} Assignment for Class {} successfully submitted at {}.'.format(
- file_name, folder, datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
- print('Submitted assignment available at {}.'.format(submitted_file_location))
- return
- if __name__ == "__main__":
- # Build tuple of (folder, file) to turn in
- submission_dir = 'C:/Users/Will Koehrsen/Desktop/completed_assignments'
- dir_list = list(os.listdir(submission_dir))
- for directory in dir_list:
- file_list = list(os.listdir(os.path.join(submission_dir, directory)))
- if len(file_list) != 0:
- file_tup = (directory, file_list[0])
- if len(file_tup) == 0:
- print('No files to submit')
- else:
- print('Assignment "{}" for "{}" found.'.format(file_tup[1], file_tup[0]))
- input('Press enter to proceed: ')
- submit_assignment(file_tup)
|