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