Update instagram scraper

This commit is contained in:
AlberLC
2023-04-11 08:57:57 +02:00
parent 88b61cd87f
commit a1434e54d3

View File

@@ -10,7 +10,7 @@ from typing import Iterable
import flanautils import flanautils
from flanaapis import InstagramMediaNotFoundError, RedditMediaNotFoundError, instagram, reddit, tiktok, twitter, yt_dlp_wrapper from flanaapis import InstagramMediaNotFoundError, RedditMediaNotFoundError, instagram, reddit, tiktok, twitter, yt_dlp_wrapper
from flanautils import Media, MediaType, OrderedSet, return_if_first_empty from flanautils import Media, MediaType, OrderedSet, return_if_first_empty
from multibot import MultiBot, RegisteredCallback, SendError, constants as multibot_constants, reply from multibot import MultiBot, RegisteredCallback, SendError, constants as multibot_constants, owner, reply
from flanabot import constants from flanabot import constants
from flanabot.models import Action, BotAction, Message from flanabot.models import Action, BotAction, Message
@@ -22,7 +22,6 @@ from flanabot.models import Action, BotAction, Message
class ScraperBot(MultiBot, ABC): class ScraperBot(MultiBot, ABC):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.owner_chat = None
self.instagram_ban_date = None self.instagram_ban_date = None
# -------------------------------------------------------- # # -------------------------------------------------------- #
@@ -227,14 +226,12 @@ class ScraperBot(MultiBot, ABC):
await gather_result await gather_result
instagram_results = [] instagram_results = []
if not self.instagram_ban_date or datetime.datetime.now(datetime.timezone.utc) >= self.instagram_ban_date + constants.INSTAGRAM_BAN_SLEEP: if not self.instagram_ban_date or datetime.datetime.now(datetime.timezone.utc) - self.instagram_ban_date >= constants.INSTAGRAM_BAN_SLEEP:
try: try:
instagram_results = await instagram.get_medias(instagram_ids, audio_only) instagram_results = await instagram.get_medias(instagram_ids, audio_only)
except InstagramMediaNotFoundError: except InstagramMediaNotFoundError:
self.instagram_ban_date = datetime.datetime.now(datetime.timezone.utc) self.instagram_ban_date = datetime.datetime.now(datetime.timezone.utc)
if not self.owner_chat: await self.send('Límite de Instagram excedido.', await self.owner_chat)
self.owner_chat = await self.get_chat(self.owner_id) or await self.get_chat(await self.get_user(self.owner_id))
await self.send('Instagram limite excedido.', self.owner_chat)
if not instagram_results: if not instagram_results:
instagram_results = await instagram.get_medias_v2(instagram_ids, audio_only) instagram_results = await instagram.get_medias_v2(instagram_ids, audio_only)
@@ -254,8 +251,10 @@ class ScraperBot(MultiBot, ABC):
async def _on_recover_message(self, message: Message): async def _on_recover_message(self, message: Message):
pass pass
async def _on_reset_instagram_ban(self, _message: Message): @owner
async def _on_reset_instagram_ban(self, message: Message):
self.instagram_ban_date = None self.instagram_ban_date = None
await self.send('Ban de Instagram reseteado.', message)
async def _on_scraping( async def _on_scraping(
self, self,