コード例 #1
0
    async def send_welcome(self, message: types.Message):
        """Send a welcome message.

        :param message: incoming message
        """
        _logger = self.logger_var.get()
        _logger.debug('Sending a welcome message')
        supported_platforms = []
        for platform in PLATFORMS.values():
            supported_platforms.append(platform.name)
        welcome_msg = self.WELCOME_MSG_TEMPLATE.format(
            supported_platforms=' | '.join(supported_platforms))
        await message.reply(text=welcome_msg, parse_mode='HTML', reply=False)
コード例 #2
0
    def extract_song_urls(self, text: str) -> List[SongUrl]:
        """Extract song URLs from text for each registered platform.

        :param text: message text
        :return: list of SongURLs
        """
        urls = []
        for platform_key, platform in PLATFORMS.items():
            for match in platform.url_re.finditer(text):
                platform_url = SongUrl(
                    platform_key=platform_key,
                    platform_name=platform.name,
                    url=match.group(0),
                )
                urls.append(platform_url)
        return urls
コード例 #3
0
ファイル: bot.py プロジェクト: 9dogs/tg-odesli-bot
    def extract_song_urls(self,
                          text: str,
                          skip_youtube: bool = False) -> List[SongUrl]:
        """Extract song URLs from text for each registered platform.

        :param text: message text
        :param skip_youtube: skip YouTube platform (used for group messages)
        :return: list of SongURLs
        """
        urls = []
        for platform_key, platform in PLATFORMS.items():
            if skip_youtube and platform_key == 'youtube':
                continue
            for match in platform.url_re.finditer(text):
                platform_url = SongUrl(
                    platform_key=platform_key,
                    platform_name=platform.name,
                    url=match.group(0),
                )
                urls.append(platform_url)
        return urls
コード例 #4
0
    def _filter_platform_urls(self, platform_urls: dict) -> dict:
        """Filter and reorder platform URLs according to `PLATFORMS` registry.

        :param platform_urls: dictionary of {platform_key: platform_urls}
        :return: dictionary of filtered and ordered platform URLs
        """
        logger = self.logger_var.get()
        logger = logger.bind(data=platform_urls)
        urls = []
        for platform_key, platform in PLATFORMS.items():
            if platform_key not in platform_urls:
                logger.info('No URL for platform in data',
                            platform_key=platform_key)
                continue
            urls.append(
                (platform.order, platform.name, platform_urls[platform_key]))
        # Reorder platform URLs
        platform_urls = {
            name: url
            for order, name, url in sorted(urls, key=lambda x: x[0])
        }
        return platform_urls