def get_news(user, course=None, page=1): if course is None: r = api_request('studip/news', secrets.get_user_login(user)) embed = discord.Embed(title='Globale Ankündigungen') else: r = api_request(f'course/{alias_resolver.get(course)}/news', secrets.get_user_login(user)) embed = discord.Embed(title=f'Ankündigungen von {get_course_name(alias_resolver.get(course))[0]}') titles = [] news_id = [] bodies = [] if type(r) is list: embed.description = 'Diese Veranstaltung hat noch keine Ankündigungen erstellt' return embed for key, value in r.items(): titles.append(value['topic']) news_id.append(value['news_id']) bodies.append(value['body']) for i in range(3): try: if course is None: embed.add_field(name=titles[i + (page - 1) * 3], value=utility.remove_html_tags(bodies[i + (page - 1) * 3]) if len( utility.remove_html_tags(bodies[i + ( page - 1) * 3])) < 1025 else f'[Full News](https://elearning.uni-oldenburg.de/dispatch.php/start?contentbox_type=news&contentbox_open={news_id[i + (page - 1) * 3]}#{news_id[i + (page - 1) * 3]})', inline=False) else: embed.add_field(name=titles[i + (page - 1) * 3], value=utility.remove_html_tags(bodies[i + (page - 1) * 3]) if len( utility.remove_html_tags(bodies[i + (page - 1) * 3])) < 1025 else f"News zu lang um dargestellt zu werden, bitte geh zu [Studip](https://elearning.uni-oldenburg.de/dispatch.php/course/overview?cid={course})", inline=False) except IndexError: break if len(embed.fields) is 0: embed.description = 'Auf dieser Seite sind keine Ankündigungen mehr.' return embed
def recursive_folder(folder_id, user, main_directory, new_files=None): if new_files is None: new_files = [] data = api_request('folder/' + folder_id + '/subfolders', secrets.get_user_login(user)) if data: if type(data) is dict: for key, value in data.items(): if not value['is_readable']: continue if value['folder_type'] == 'CourseGroupFolder': continue if '/' in value['name']: continue if not os.path.exists(main_directory + value['name']): os.mkdir(main_directory + value['name']) recursive_folder(value['id'], user, main_directory + value['name'] + '/', new_files) if type(data) is list: for value in data: if not value['is_readable']: continue if value['folder_type'] == 'CourseGroupFolder': continue if '/' in value['name']: continue if not os.path.exists(main_directory + value['name']): os.mkdir(main_directory + value['name']) recursive_folder(value['id'], user, main_directory + value['name'] + '/', new_files) files = api_request('folder/' + folder_id + '/files', secrets.get_user_login(user)) for file in files: if not os.path.isfile(main_directory + file['name']) and not os.path.isfile( os.path.splitext(main_directory + file['name'])[0] + '.html'): if file['size'] < 8000000: with open(main_directory + file['name'], mode='wb') as response_file: r = requests.get(url + 'file/' + file['id'] + '/download', auth=secrets.get_user_login(user)) response_file.write(r.content) print("Download von: " + file['name']) new_files.append(discord.File(main_directory + file['name'])) else: with open(os.path.splitext(main_directory + file['name'])[0] + '.html', 'w') as response_file: link = url + 'file/' + file['id'] + '/download' response_file.write(f'''<html> <body> <script type="text/javascript"> window.location.href = "{link}"; </script> </body> </html>''') new_files.append(discord.File(main_directory + os.path.splitext(file['name'])[0] + '.html')) return new_files
def check_new_files(course, user, main_directory=data_directory): course_id = course if not db.db_query('SELECT * FROM courses WHERE course_id = ?', (course,)): course_id = alias_resolver.get(course_id) data = api_request('course/' + course_id + '/top_folder', secrets.get_user_login(user)) if not os.path.exists(main_directory + data['id']): os.mkdir(main_directory + data['id']) return recursive_folder(data['id'], user, main_directory + data['id'] + '/')
def get_semester(user): if CONFIG.get('semester_id'): return CONFIG.get('semester_id') else: r = api_request('semesters', secrets.get_user_login(user)) for key, value in r.items(): if value['begin'] <= int(datetime.datetime.utcnow().timestamp()) <= value['end']: CONFIG.set('semester_id', value['id']) return CONFIG.get('semester_id')
def input_courses(user): data = api_request('user/' + get_studip_id(user) + '/courses?semester=' + get_semester(user), secrets.get_user_login(user)) if type(data) is dict: for key, value in data.items(): if value['type'] is '1': db.db_query('INSERT OR IGNORE INTO courses(course_id,number,title,lecturers) VALUES (?,?,?,?)', (value['course_id'], value['number'], value['title'], next(iter(value['lecturers'].values()))['name']['formatted'])) if value['type'] is '23': db.db_query('INSERT OR IGNORE INTO tutorials(tutorial_id,number,title,tutor,student) VALUES (?,?,?,?)', (value['course_id'], value['number'], value['title'], next(iter(value['lecturers'].values()))['name']['formatted'])) if type(data) is list: for value in data: if value['type'] is '1': db.db_query('INSERT OR IGNORE INTO courses(course_id,number,title,lecturers) VALUES (?,?,?,?)', (value['course_id'], value['number'], value['title'], next(iter(value['lecturers'].values()))['name']['formatted']))
def get_mensa_menu(): def as_currency(amount): return format_currency(amount, 'EUR', locale='de_DE') data = api_request('mensa/today', secrets.get_user_login('Soerili#5977')) if data: embed_list = [discord.Embed(title=f'Mensaplan vom {datetime.datetime.now().strftime("%d.%m.%y")}')] menus = data['menu'] for key, value in menus.items(): if key is '1': embed = discord.Embed(title='Pasta') if key is '2': embed = discord.Embed(title='Classic') if key is '3': embed = discord.Embed(title='Culinarium') if key is '4': embed = discord.Embed(title='Wechloy') for key2, values in value.items(): item_list = [x['name'] + ' ' + as_currency(x['price']) for x in values] embed.add_field(name=key2, value=convert_list(item_list, '\n'), inline=False) embed_list.append(embed) return embed_list else: return [discord.Embed(title=f'Am {datetime.datetime.now().strftime("%d.%m.%y")} hat die Mensa geschlossen. Lern selber kochen.')]