otaku_info_web.background package

Submodules

otaku_info_web.background.anilist module

otaku_info_web.background.anilist.fetch_anilist_data()

Retrieves all entries on the anilists of all users that provided an anilist username :return: None

otaku_info_web.background.anilist.fetch_media_id(anilist_entry: otaku_info_web.utils.anilist.AnilistItem.AnilistUserItem, media_items: Dict[Tuple[str, otaku_info_web.utils.enums.MediaType, otaku_info_web.utils.enums.MediaSubType, str], otaku_info_web.db.MediaItem.MediaItem], media_ids: Dict[Tuple[otaku_info_web.utils.enums.ListService, int], otaku_info_web.db.MediaId.MediaId], media_item: Optional[otaku_info_web.db.MediaId.MediaId] = None) → Tuple[Optional[Tuple[otaku_info_web.utils.enums.ListService, int]], Optional[otaku_info_web.db.MediaItem.MediaItem]]

Retrieves an existing media ID based on anilist data :param anilist_entry: The anilist entry to use :param media_items: The preloaded media items :param media_ids: The preloaded media IDs :param media_item: Optional media item associated with the ID.

If not provided, will figure out using anilist data

Returns

The media ID, or None if none exists

otaku_info_web.background.anilist.fetch_media_item(anilist_entry: otaku_info_web.utils.anilist.AnilistItem.AnilistUserItem, media_items: Dict[Tuple[str, otaku_info_web.utils.enums.MediaType, otaku_info_web.utils.enums.MediaSubType, str], otaku_info_web.db.MediaItem.MediaItem]) → Tuple[Tuple[str, otaku_info_web.utils.enums.MediaType, otaku_info_web.utils.enums.MediaSubType, str], Optional[otaku_info_web.db.MediaItem.MediaItem]]

Retrieves an existing media item based on anilist data :param anilist_entry: The anilist entry to use :param media_items: The preloaded media items :return: The media item, or None if none exists

otaku_info_web.background.anilist.load_existing() → Tuple[Dict[Tuple[str, otaku_info_web.utils.enums.MediaType, otaku_info_web.utils.enums.MediaSubType, str], otaku_info_web.db.MediaItem.MediaItem], Dict[Tuple[otaku_info_web.utils.enums.ListService, int], otaku_info_web.db.MediaId.MediaId], Dict[Tuple[int, int], otaku_info_web.db.MediaUserState.MediaUserState], Dict[Tuple[str, int, otaku_info_web.utils.enums.ListService, otaku_info_web.utils.enums.MediaType], otaku_info_web.db.MediaList.MediaList], Dict[Tuple[int, int], otaku_info_web.db.MediaListItem.MediaListItem]]

Loads current database contents, mapped to unique identifer tuples :return: The database contents

otaku_info_web.background.anilist.update_media_entries(anilist_data: Dict[otaku_info_web.db.ServiceUsername.ServiceUsername, Dict[otaku_info_web.utils.enums.MediaType, List[otaku_info_web.utils.anilist.AnilistItem.AnilistUserItem]]], media_items: Dict[Tuple[str, otaku_info_web.utils.enums.MediaType, otaku_info_web.utils.enums.MediaSubType, str], otaku_info_web.db.MediaItem.MediaItem], media_ids: Dict[Tuple[otaku_info_web.utils.enums.ListService, int], otaku_info_web.db.MediaId.MediaId])

Updates the media entries and anilist IDs :param anilist_data: The anilist data to store :param media_items: The preloaded media items :param media_ids: The preloaded media IDs :return: None

otaku_info_web.background.anilist.update_media_id(new_data: otaku_info_web.utils.anilist.AnilistItem.AnilistUserItem, media_item: otaku_info_web.db.MediaItem.MediaItem, existing: Optional[otaku_info_web.db.MediaId.MediaId])otaku_info_web.db.MediaId.MediaId

Updates/Creates a MediaId database entry based on anilist data :param new_data: The anilist data to use :param media_item: The media item associated with the ID :param existing: The existing database entry. If None, will be created :return: The updated/created MediaId object

otaku_info_web.background.anilist.update_media_item(new_data: otaku_info_web.utils.anilist.AnilistItem.AnilistUserItem, existing: Optional[otaku_info_web.db.MediaItem.MediaItem])otaku_info_web.db.MediaItem.MediaItem

Updates or creates MediaItem database entries based on anilist data :param new_data: The new anilist data :param existing: The existing database entry. If None, will be created :return: The updated/created MediaItem object

otaku_info_web.background.anilist.update_media_lists(anilist_data: Dict[otaku_info_web.db.ServiceUsername.ServiceUsername, Dict[otaku_info_web.utils.enums.MediaType, List[otaku_info_web.utils.anilist.AnilistItem.AnilistUserItem]]], media_items: Dict[Tuple[str, otaku_info_web.utils.enums.MediaType, otaku_info_web.utils.enums.MediaSubType, str], otaku_info_web.db.MediaItem.MediaItem], media_ids: Dict[Tuple[otaku_info_web.utils.enums.ListService, int], otaku_info_web.db.MediaId.MediaId], media_user_states: Dict[Tuple[int, int], otaku_info_web.db.MediaUserState.MediaUserState], media_lists: Dict[Tuple[str, int, otaku_info_web.utils.enums.ListService, otaku_info_web.utils.enums.MediaType], otaku_info_web.db.MediaList.MediaList], media_list_items: Dict[Tuple[int, int], otaku_info_web.db.MediaListItem.MediaListItem])

Updates the database for anilist user lists. This includes custom anilist lists. :param anilist_data: The anilist data to enter into the database :param media_items: Preloaded media items :param media_ids: Preloaded media IDs :param media_user_states: The current media user states in the database :param media_lists: The media lists currently in the database :param media_list_items: The media list items currently in the database :return: None

otaku_info_web.background.anilist.update_media_user_entries(anilist_data: Dict[otaku_info_web.db.ServiceUsername.ServiceUsername, Dict[otaku_info_web.utils.enums.MediaType, List[otaku_info_web.utils.anilist.AnilistItem.AnilistUserItem]]], media_items: Dict[Tuple[str, otaku_info_web.utils.enums.MediaType, otaku_info_web.utils.enums.MediaSubType, str], otaku_info_web.db.MediaItem.MediaItem], media_ids: Dict[Tuple[otaku_info_web.utils.enums.ListService, int], otaku_info_web.db.MediaId.MediaId], media_user_states: Dict[Tuple[int, int], otaku_info_web.db.MediaUserState.MediaUserState])

Updates the individual users’ current state for media items in thei ranilist account. :param anilist_data: The anilist data to enter into the database :param media_items: Preloaded media items :param media_ids: Preloaded media IDs :param media_user_states: Preloaded media user states :return: None

otaku_info_web.background.anilist.update_media_user_state(new_data: otaku_info_web.utils.anilist.AnilistItem.AnilistUserItem, media_id: otaku_info_web.db.MediaId.MediaId, user: puffotter.flask.db.User.User, existing: Optional[otaku_info_web.db.MediaUserState.MediaUserState])otaku_info_web.db.MediaUserState.MediaUserState

Updates or creates a MediaUserState entry in the database :param new_data: The new anilist data :param media_id: The media ID of the anilist media item :param user: The user associated with the data :param existing: The existing database entry. If None, will be created :return: The updated/created MediaUserState object

otaku_info_web.background.manga_chapters module

otaku_info_web.background.manga_chapters.update_manga_chapter_guesses()

Updates the manga chapter guesses :return: None

otaku_info_web.background.mangadex module

otaku_info_web.background.mangadex.create_anilist_media_item(anilist_id: int) → Optional[otaku_info_web.db.MediaItem.MediaItem]

Creates an anilist media item using an anilist ID, fetching the data using the anilist API :param anilist_id: The anilist ID of the media :return: The generated Media Item

otaku_info_web.background.mangadex.load_db_content() → Tuple[Dict[str, otaku_info_web.db.MediaId.MediaId], Dict[int, List[otaku_info_web.utils.enums.ListService]]]

Loads the existing data from the database. By doing this as few times as possible, we can greatly improve performance :return: The anilist IDs, The mangadex IDs mapped to other existing IDs

otaku_info_web.background.mangadex.load_id_mappings()

Goes through mangadex IDs sequentially and stores ID mappings for these entries if found :return: None

otaku_info_web.background.mangadex.store_ids(existing_ids: Dict[int, List[otaku_info_web.utils.enums.ListService]], anilist_ids: Dict[str, otaku_info_web.db.MediaId.MediaId], mangadex_id: int, other_ids: Dict[otaku_info_web.utils.enums.ListService, str])

Stores the fetched IDs in the database :param existing_ids: A dictionary mapping mangadex IDs to existing

list service types

Parameters
  • anilist_ids – Dictionary mapping anilist IDs to media IDs

  • mangadex_id – The mangadex ID

  • other_ids – The other IDs

Returns

None

otaku_info_web.background.notifications module

otaku_info_web.background.notifications.send_new_manga_chapter_notifications()

Sends out telegram notifications for manga chapter updates :return: None

otaku_info_web.background.telegram module

otaku_info_web.background.telegram.handle_whoami_requests()

Handles whoami requests to the telegram bot :return: None

Module contents

otaku_info_web.background.bg_tasks: Dict[str, Tuple[int, Callable]] = {'anilist_update': (60, <function fetch_anilist_data>), 'load_id_mappings': (86400, <function load_id_mappings>), 'manga_chapter_notifications': (60, <function send_new_manga_chapter_notifications>), 'telegram_whoami': (1, <function handle_whoami_requests>), 'update_manga_chapter_guesses': (3600, <function update_manga_chapter_guesses>)}

A dictionary containing background tasks for the flask application