def _get_price(self):
     """
         <div class="col search_price responsive_secondrow">
             NT$ 920
         </div>
         -----------------------------------------------------------------
         <div class="col search_price discounted responsive_secondrow">
             <span style="color: #888888;"><strike> NT$ 398 </strike></span><br/>NT$ 358
         </div>
     """
     price_container = BSoupHandler.find_tag_by_key_value(
         soup=self.target_soup,
         tag='div',
         key='class',
         value='col search_price responsive_secondrow')
     special_price_container = BSoupHandler.find_tag_by_key_value(
         soup=self.target_soup,
         tag='div',
         key='class',
         value='col search_price discounted responsive_secondrow')
     if price_container:
         price_text = BSoupHandler.get_text(soup=price_container)
     elif special_price_container:
         price_span = BSoupHandler.find_tag(soup=special_price_container,
                                            tag_name='span')
         price_text = BSoupHandler.get_text(soup=price_span)
     else:
         price_text = None
     return price_text.strip().replace(',', '') if price_text else None
 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_discount(self):
     """
         <div class="col search_discount responsive_secondrow">
             <span>-10%</span>
         </div>
     """
     discount_container = BSoupHandler.find_tag_by_key_value(
         soup=self.target_soup,
         tag='div',
         key='class',
         value='col search_discount responsive_secondrow')
     if discount_container is None:
         return None
     discount_span = BSoupHandler.find_tag(soup=discount_container,
                                           tag_name='span')
     rate = BSoupHandler.get_text(soup=discount_span)
     discount = self._convert_decimal(rate) if rate else None
     return 1 - discount if discount else None
    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