def _get_token(self):
     capsule_container = BSoupHandler.find_tag(soup=self.target_soup,
                                               tag_name='img')
     capsule_url = BSoupHandler.get_value_by_key(soup=capsule_container,
                                                 key_name='src')
     token = DataParser.get_bundle_img_token(capsule_url)
     return token
    def _get_metadata(self):
        """
            <a class="search_result_row ds_collapse_flag"
            data-ds-appid="582010"
            data-ds-crtrids="[33273264,34827959]"
            data-ds-itemkey="App_582010"
            data-ds-tagids="[1685,3859,19,1695,122,1697,21]"
            >

            condition: data-ds-appid="215770,215772"

            appid = target_id.split(',')

            def _is_digit():
                for appid in appid_list():
                    if not appid.isdigit():
                        return False
                return True

            if len(appid)>1 and cls._is_digit(appid):
                return data-ds-packageid

            data-ds-packageid="16492"  data-ds-itemkey="Sub_16492"
            data-ds-packageid

        """
        app_id = BSoupHandler.get_value_by_key(soup=self.target_soup,
                                               key_name=STEAM.LABEL.APP_ID)
        bundle_id = BSoupHandler.get_value_by_key(
            soup=self.target_soup, key_name=STEAM.LABEL.BUNDLE_ID)
        package_id = BSoupHandler.get_value_by_key(
            soup=self.target_soup, key_name=STEAM.LABEL.PACKAGE_ID)
        if package_id:
            return {'target_id': package_id, 'is_bundle': True, 'token': None}
        if bundle_id:
            token = self._get_token()
            return {'target_id': bundle_id, 'is_bundle': True, 'token': token}
        if app_id:
            return {'target_id': app_id, 'is_bundle': False, 'token': None}
        return {'target_id': None, 'is_bundle': False, 'token': None}
 def _get_platforms(self):
     """
         <div class="col search_name ellipsis">
          <span class="title">
           THE GAME TITLE
          </span>
          <p>
           <span class="platform_img win">
           <span class="platform_img mac">
           <span class="platform_img linux">
           </span>
          </p>
         </div>
     """
     search_name_col = BSoupHandler.find_tag_by_key_value(
         soup=self.target_soup,
         tag='div',
         key='class',
         value=STEAM.LABEL.CONTAINER_OF_PLATFORM)
     if not search_name_col:
         return None
     span_list = BSoupHandler.find_all_tag(soup=search_name_col,
                                           tag_name='span')
     if not span_list:
         return None
     platform_span_list = span_list[1:]
     platform_info = list()
     for platform_span in platform_span_list:
         platform = BSoupHandler.get_value_by_key(soup=platform_span,
                                                  key_name='class')
         if platform:
             if len(platform) == 1:
                 platform_info.append(platform)
             else:
                 platform_info.append(platform[1])
     return platform_info
    def _get_reviews(self):
        """
         <div class="col search_reviewscore responsive_secondrow">
            <span class=
                    "search_review_summary positive"
                data-tooltip-html=
                    "Mostly Positive&lt;br&gt;77% of the 638,504 user reviews for games in this bundle are positive.">
            </span>
        </div>
        """
        reviews = dict()
        search_reviewscore_col = BSoupHandler.find_tag_by_key_value(
            soup=self.target_soup,
            tag='div',
            key='class',
            value=STEAM.LABEL.CONTAINER_OF_REVIEW)
        if not search_reviewscore_col:
            return reviews
        summary_container = BSoupHandler.find_tag(soup=search_reviewscore_col,
                                                  tag_name='span')
        if not summary_container:
            return reviews
        review_string = BSoupHandler.get_value_by_key(
            soup=summary_container, key_name=STEAM.LABEL.RESULTS_OF_REVIEW)
        review_info = DataParser.get_users_review(input_string=review_string)

        rate = review_info.get('rate_of_positive')
        rate_of_positive = self._convert_decimal(rate) if rate else None

        amount = review_info.get('amount_of_reviews')
        amount_of_reviews = self._convert_integer(amount) if amount else None
        reviews.update({
            'rate_of_positive': rate_of_positive,
            'amount_of_reviews': amount_of_reviews
        })
        return reviews