This program downloads all files of a Stud.IP users current semester.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.8 KiB

  1. #!/bin/env python3
  2. import time
  3. import pymysql
  4. class Database:
  5. def __init__(self):
  6. self.HOST = None
  7. self.PORT = None
  8. self.DB_NAME = None
  9. self.USER = None
  10. self.PASSW = None
  11. self.TABLE_FILE = None
  12. self.TABLE_FILE = 'files'
  13. self.RESET_DL_DATE = False
  14. def connect(self):
  15. return pymysql.connect(
  16. host=self.HOST,
  17. port=self.PORT,
  18. user=self.USER,
  19. password=self.PASSW,
  20. charset='utf8mb4',
  21. cursorclass=pymysql.cursors.DictCursor
  22. )
  23. def setup_db(self):
  24. db = self.connect()
  25. crs = db.cursor()
  26. sql_query = "CREATE DATABASE IF NOT EXISTS " + self.DB_NAME
  27. crs.execute(sql_query)
  28. db.select_db(self.DB_NAME)
  29. query = "CREATE TABLE IF NOT EXISTS " + self.TABLE_FILE + \
  30. "(id CHAR(32) NOT NULL," + \
  31. "ch_date INT(11) NOT NULL," + \
  32. "PRIMARY KEY(id))"
  33. crs.execute(query)
  34. print(db)
  35. def set_last_file_dl(self, file_id, time):
  36. db = self.connect()
  37. db.select_db(self.DB_NAME)
  38. crs = db.cursor()
  39. print('file: ', file_id, ' time: ', time)
  40. query = "INSERT INTO " + self.TABLE_FILE + "(`id`,`ch_date`)" + \
  41. "VALUES ('" + file_id + "','" + time + "')" + \
  42. "ON DUPLICATE KEY UPDATE `ch_date` = '" + time + "'"
  43. crs.execute(query)
  44. db.commit()
  45. def get_last_file_dl(self, file_id):
  46. if self.RESET_DL_DATE:
  47. return None
  48. db = self.connect()
  49. db.select_db(self.DB_NAME)
  50. crs = db.cursor()
  51. query = "SELECT ch_date FROM files WHERE id ='" + file_id + "'"
  52. crs.execute(query)
  53. res = crs.fetchone()
  54. if res != None:
  55. return res['ch_date']
  56. return None