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. import time
  2. import logging as log
  3. import pymysql
  4. class Database:
  5. def __init__(self, host, port, name, user, passwd, reset_dl):
  6. self.HOST = host
  7. self.PORT = port
  8. self.NAME = name
  9. self.USER = user
  10. self.PASSWD = passwd
  11. self.RESET_DL = reset_dl
  12. self.TABLE_FILE = 'files'
  13. self.setup_db()
  14. def connect(self):
  15. return pymysql.connect(
  16. host=self.HOST,
  17. port=self.PORT,
  18. user=self.USER,
  19. password=self.PASSWD,
  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.NAME
  27. crs.execute(sql_query)
  28. db.select_db(self.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. log.debug(db)
  35. def set_last_file_dl(self, file_id, time):
  36. db = self.connect()
  37. db.select_db(self.NAME)
  38. crs = db.cursor()
  39. log.debug('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:
  47. return None
  48. db = self.connect()
  49. db.select_db(self.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