Пример #1
0
    def test_adds_affiliate_tag_as_a_querystring(self):
        # Test it on a URL that already has a querystring:
        test_url = amazonify('http://www.amazon.com/PostgreSQL-High-Performance-Gregory-Smith/dp/184951030X/ref=trdrt_tipp_dp_img_GWTB_507846?pf_rd_p=1367759962&pf_rd_s=right-4&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1216X6HJC7KEWY0X3VD7', 'rdegges-20')
        self.assertNotEqual(-1, urlparse(test_url).query.find('tag=rdegges-20'))

        # Test it on a URL that has no querystring:
        test_url = amazonify('http://www.amazon.com/PostgreSQL-High-Performance-Gregory-Smith/dp/184951030X/ref=trdrt_tipp_dp_img_GWTB_507846', 'rdegges-20')
        self.assertEqual(urlparse(test_url).query, 'tag=rdegges-20')
        self.assertTrue(test_url.endswith('tag=rdegges-20'))
Пример #2
0
    def test_doesnt_change_netloc(self):
        test_url = amazonify(
            'http://www.amazon.com/PostgreSQL-High-Performance-Gregory-Smith/dp/184951030X/ref=trdrt_tipp_dp_img_GWTB_507846',
            'rdegges-20')
        self.assertEqual(urlparse(test_url).netloc, 'www.amazon.com')

        test_url = amazonify(
            'http://www.amazon.co.uk/PostgreSQL-High-Performance-Gregory-Smith/dp/184951030X/ref=trdrt_tipp_dp_img_GWTB_507846',
            'rdegges-20')
        self.assertEqual(urlparse(test_url).netloc, 'www.amazon.co.uk')
Пример #3
0
def start(update: Update, context: CallbackContext) -> int:
    user = update.message.from_user.username
    reply = update.message.reply_to_message
    chat_id = update.message.chat_id

    message = update.message.text
    old_links = re.findall(REGEX_KEY, message, flags=re.IGNORECASE)
    new_links = [amazonify(u, AMAZON_AFFILIATE_TAG) for u in old_links]

    string_index = 0
    for index in range(0, len(old_links)):
        message = message[:string_index] + message[string_index:].replace(
            old_links[index], " " + new_links[index], 1)
        string_index = message[string_index:].index(new_links[index]) + len(
            new_links[index])

    if reply is None:
        context.bot.send_message(chat_id=chat_id,
                                 text="Inviato originariamente da: @" +
                                 str(user) + "\n\n" + str(message))
    else:
        context.bot.send_message(chat_id=chat_id,
                                 reply_to_message_id=reply.message_id,
                                 text="Inviato originariamente da: @" +
                                 str(user) + "\n\n" + str(message))

    update.message.delete()

    return ConversationHandler.END
Пример #4
0
 def test_promo_url_has_query_params(self):
     # test a URL that contains mandatory query params
     test_url = amazonify(
         'http://www.amazon.co.uk/gp/feature.html?docId=1000577623&ie=UTF8',
         'rdegges-20')
     qs = urlparse(test_url).query
     self.assertNotEqual(-1, qs.find('tag=rdegges-20'))
     self.assertNotEqual(-1, qs.find('docId=1000577623'))
Пример #5
0
def convert_link(link):
    new_link = None

    if "amazon." in urlparse(link).hostname:
        new_link = amazonify(link, AMAZON_AFFILIATE_TAG)

    if new_link:
        return new_link
    else:
        return link
Пример #6
0
def convert_link(link):
    new_link = None

    if "amazon." in urlparse(link).hostname:
        new_link = amazonify(link, AMAZON_AFFILIATE_TAG)

    if new_link:
        return new_link
    else:
        return link
Пример #7
0
 def amazonify(self):
     url = self.original_url
     if url.startswith(
         ("https://amazon.",
             "http://amazon.",
             "http://amzn.",
             "https://amzn.",
             "https://www.amazon.",
             "http://www.amazon.")
         ):
         url = amazonify(url, "mlinar-20")
     return url
def getBookInfoByIsbn(isbn):
    '''
    This function takes an string (with "-"'s is ok) isbn and gives back a python dict with
    link: the link to the book at amazon.com, with our assoc tag ;)
    usedprice: the used price
    newprice: the new price

    if no book info is found, an empty dict is returned
    '''

    # HERE WE LOOK UP THE AMAZON PAGE AND PRICE FOR EACH BOOK
    amazon = bottlenose.Amazon(AMAZON_API_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG)

    bookInfo = {}

    response = amazon.ItemLookup(ItemId=isbn.replace('-', ''),
        ResponseGroup="ItemAttributes, Offers ", SearchIndex="Books", IdType="ISBN")
    soup = BeautifulSoup.BeautifulSoup(response)


    # check to see that response exists, if not just return {}
    if not soup.find('items').findAll('item'):
        return bookInfo

    for item in soup.find('items').findAll('item'):
        if not(item.find('detailpageurl') and item.find('lowestusedprice') and item.find('lowestnewprice')):
            continue
        link = item.find('detailpageurl').text
        reflink = amazonify(link, AMAZON_ASSOC_TAG)
        bookInfo['link'] = reflink
        usedprice = item.find('lowestusedprice').find('formattedprice').text
        bookInfo['usedprice'] = usedprice
        newprice = item.find('lowestnewprice').find('formattedprice').text
        bookInfo['newprice'] = newprice

    return bookInfo
Пример #9
0
 def test_promo_url_has_query_params(self):
     # test a URL that contains mandatory query params
     test_url = amazonify('http://www.amazon.co.uk/gp/feature.html?docId=1000577623&ie=UTF8', 'rdegges-20')
     qs = urlparse(test_url).query
     self.assertNotEqual(-1, qs.find('tag=rdegges-20'))
     self.assertNotEqual(-1, qs.find('docId=1000577623'))
Пример #10
0
    def test_doesnt_change_netloc(self):
        test_url = amazonify('http://www.amazon.com/PostgreSQL-High-Performance-Gregory-Smith/dp/184951030X/ref=trdrt_tipp_dp_img_GWTB_507846', 'rdegges-20')
        self.assertEqual(urlparse(test_url).netloc, 'www.amazon.com')

        test_url = amazonify('http://www.amazon.co.uk/PostgreSQL-High-Performance-Gregory-Smith/dp/184951030X/ref=trdrt_tipp_dp_img_GWTB_507846', 'rdegges-20')
        self.assertEqual(urlparse(test_url).netloc, 'www.amazon.co.uk')
Пример #11
0
 def test_strips_original_querystrings(self):
     parsed_url = urlparse('http://www.amazon.com/PostgreSQL-High-Performance-Gregory-Smith/dp/184951030X/ref=trdrt_tipp_dp_img_GWTB_507846?pf_rd_p=1367759962&pf_rd_s=right-4&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1216X6HJC7KEWY0X3VD7')
     self.assertNotIn(parsed_url.query, amazonify(parsed_url.geturl(), 'rdegges-20'))
Пример #12
0
 def test_returns_none_for_invalid_urls(self):
     self.assertFalse(amazonify('', 'rdegges-20'))
     self.assertFalse(amazonify('http://?hi=there', 'rdegges-20'))
     self.assertFalse(amazonify('?hi=there', 'rdegges-20'))
     self.assertFalse(amazonify('/yo/yo/', 'rdegges-20'))
Пример #13
0
 def test_returns_string(self):
     self.assertIsInstance(amazonify('http://www.amazon.com/PostgreSQL-High-Performance-Gregory-Smith/dp/184951030X/ref=trdrt_tipp_dp_img_GWTB_507846?pf_rd_p=1367759962&pf_rd_s=right-4&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1216X6HJC7KEWY0X3VD7', 'rdegges-20'), str)
Пример #14
0
 def get_url(self):
     if self.shop.referer_id:
         return amazonify(self.url, self.shop.referer_id)
     return self.url
 def formatAmazonLink(self, link):
     formattedLink = amazonify(link, self.affiliateTag)
     # self.debug("formattedLink: " + formattedLink)
     return formattedLink