Example #1
0
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
Example #2
0
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
Example #3
0
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'] + '/')
Example #4
0
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')
Example #5
0
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']))
Example #6
0
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.')]