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'))
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')
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
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'))
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
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
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'))
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')
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'))
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'))
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)
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