Topic Wiki

UPDATE:
@JoeyShmoe did a great job creating a Chrome Extension and a Firefox Extension to save us all the hassle of setting up a bookmarklet. The extension will place a button on any Amazon product page. When you click the button it will copy a link to your clipboard, which you can paste into any DDF post. The post will then contain the product title, image, and a working link to the product.

Thanks @JoeyShmoe!

NEW OPTION!
Works on mobile or desktop
Telegram Bot | Website


---

For anyone who doesn't want to install a browser extension, read below how to set up the bookmarklet:

Here is a bookmarklet that will make a DD link from any amazon item page, and format it with the title and an image so you can paste it into a DDF post.

Example:

Little Tikes Rocking Horse Magenta ($34.07)



(Not sure what a bookmarklet is? Read more about them in this thread: http://forums.dansdeals.com/index.php?topic=61269.5.)

Here's how to install the bookmarklet:

1. If you don't currently see a row of bookmarks on the top of your browser, you will need to show the bookmarks bar.
- In Chrome, click the 3 vertical dots at the top right of your screen, click Settings, and click Always Show the Bookmarks Bar.
- In Firefox, click the 3 horizontal lines at the top right of your screen, and click Customize. Then click Show/Hide Toolbars (bottom left of your screen) and check off the Bookmarks Toolbar.

2. Copy the following code. (To do so, click the SELECT button and then press control-c on your keyboard.)
Code: [Select]
javascript: (function() {
    var pattern = new RegExp("(https:\/\/www.amazon.com\/).*([dg]p\/)(?:product\/)?(..........).*|(https:\/\/smile.amazon.com\/).*([dg]p\/)(?:product\/)?(..........).*", "i"),
        match = location.href.match(pattern),
        image = document.getElementById('landingImage').src;
    var price = "";
    if (document.getElementById('priceblock_dealprice') !== null) {
        price = " (" + document.getElementById('priceblock_dealprice').innerHTML + ")";
    } else if (document.getElementById('priceblock_ourprice') !== null) {
        price = " (" + document.getElementById('priceblock_ourprice').innerHTML + ")";
    }
    var URL = (match[1] !== undefined) ? match[1] + "dp/" + match[3] + "/?tag=cl03f-20&smid=ATVPDKIKX0DER" : match[4] + "dp/" + match[6] + "/?tag=cl03f-20&smid=ATVPDKIKX0DER";
    var result = "[url=" + URL + "]" + document.title + price + "[/url][br][br][url=" + URL + "][img]" + image + "[/img][/url]";
    if (document.execCommand('copy') !== false) {
        var ddLink = document.createElement('span'),
            range = document.createRange();
        ddLink.id = "ddLink";
        ddLink.innerText = result;
        document.body.appendChild(ddLink);
        range.selectNode(document.getElementById('ddLink'));
        window.getSelection().addRange(range);
        document.execCommand('copy');
        document.getElementById('ddLink').remove();
        setTimeout(function() {
            alert('DD link copied to clipboard...')
        }, 1000);
    } else {
        window.prompt("Press control-c", result);
    }
    void(0);
})()

3. To create the bookmarklet, right click on your bookmarks bar and click "Add page" (if you're in Chrome) or "New bookmark" (Firefox).

For the Name, enter whatever you want (eg: Dan Amazon link), and for the URL/Location enter the code above, which you already copied.

4. Click Save (Chrome) or Add (Firefox)

To use the bookmarklet, simply click on the bookmark you created (in step 3) when you are on any amazon product page. Follow the prompts (you may need to press control-c to copy what pops up), and then paste it into any DDF post.

Enjoy!

Disclaimer: The code might need a little tweaking, so let me know if you have a link that it doesn't work on. If there are any changes I will update the wiki.
« Last edited by Yo ssi on February 23, 2021, 07:57:42 PM »

Author Topic: Amazon DD Bookmarklet: Have Chrome Make A DDF Friendly Link On Amazon  (Read 189689 times)

Offline stooges44

  • Dansdeals Lifetime Presidential Platinum Elite
  • *********
  • Join Date: Jan 2017
  • Posts: 6038
  • Total likes: 1905
  • DansDeals.com Hat Tips 262
    • View Profile
If it's not free shipping it's not worth it.

Offline etech0

  • Dansdeals Lifetime 10K Presidential Platinum Elite
  • *******
  • Join Date: Dec 2013
  • Posts: 12201
  • Total likes: 2211
  • DansDeals.com Hat Tips 1
    • View Profile
  • Location: not lakewood
  • Programs: DDF
I just tried again and this time it worked. I think it only works if the page is fully loaded when you click the bookmarklet.

Meanwhile, I tried clicking the watch (above) and it didn't work. Does it work for you? If not we might have to tweak the regex.
Workflowy. You won't know what you're missing until you try it.

Offline stooges44

  • Dansdeals Lifetime Presidential Platinum Elite
  • *********
  • Join Date: Jan 2017
  • Posts: 6038
  • Total likes: 1905
  • DansDeals.com Hat Tips 262
    • View Profile
I just tried again and this time it worked. I think it only works if the page is fully loaded when you click the bookmarklet.

Meanwhile, I tried clicking the watch (above) and it didn't work. Does it work for you? If not we might have to tweak the regex.

https://smile.amazon.com/dp/undefined/?tag=cl03f-20&smid=ATVPDKIKX0DER
If it's not free shipping it's not worth it.

Offline hide4

  • Dansdeals Lifetime Platinum Elite
  • *******
  • Join Date: Oct 2015
  • Posts: 1402
  • Total likes: 26
  • DansDeals.com Hat Tips 2
    • View Profile
  • Location: NY-Israel
I just tried again and this time it worked. I think it only works if the page is fully loaded when you click the bookmarklet.

Meanwhile, I tried clicking the watch (above) and it didn't work. Does it work for you? If not we might have to tweak the regex.
Meeting dogs

Offline JoeyShmoe

  • Dansdeals Lifetime Platinum Elite
  • *******
  • Join Date: Nov 2014
  • Posts: 1157
  • Total likes: 81
  • DansDeals.com Hat Tips 0
  • Gender: Male
    • View Profile
  • Location: Lakewood
I just tried again and this time it worked. I think it only works if the page is fully loaded when you click the bookmarklet.

Meanwhile, I tried clicking the watch (above) and it didn't work. Does it work for you? If not we might have to tweak the regex.
https://smile.amazon.com/dp/undefined/?tag=cl03f-20&smid=ATVPDKIKX0DER
Yep, working on it, I'm gonna need a minute
DDF A-Z Link Extension
Chrome
Firefox
Info

Offline JoeyShmoe

  • Dansdeals Lifetime Platinum Elite
  • *******
  • Join Date: Nov 2014
  • Posts: 1157
  • Total likes: 81
  • DansDeals.com Hat Tips 0
  • Gender: Male
    • View Profile
  • Location: Lakewood
Working now

Code: [Select]
javascript:(function(){
  var pattern = new RegExp("(https:\/\/www.amazon.com\/).*([dg]p\/)(?:product\/)?(..........).*|(https:\/\/smile.amazon.com\/).*([dg]p\/)(?:product\/)?(..........).*", "i"),
      match = location.href.match(pattern),
      image = document.getElementById('landingImage').src,
      price = document.getElementById('priceblock_ourprice').innerHTML,
      URL = (match[1] !== undefined) ? match[1] + "dp/" + match[3] +"/?tag=cl03f-20&smid=ATVPDKIKX0DER": match[4] + "dp/" + match[6] +"/?tag=cl03f-20&smid=ATVPDKIKX0DER",
      result = "[url="+URL+"]"+document.title+" [b]("+price+")[/b][/url][br][br][url="+URL+"][img]"+image+"[/img][/url]";
  if(document.execCommand('copy') !== false) {
    var ddLink = document.createElement('span'),
        range = document.createRange();
    ddLink.id = "ddLink";
    ddLink.innerText = result;
    document.body.appendChild(ddLink);
    range.selectNode(document.getElementById('ddLink'));
    window.getSelection().addRange(range);
    document.execCommand('copy');
    document.getElementById('ddLink').remove();
    setTimeout(function() {alert('DD link copied to clipboard...')}, 1000);
  } else {
    window.prompt("Press control-c",result);
  }
  void(0);
})()

AmazonSmile: Citizen Men's BM8434-58A Eco-Drive WR100 Sport Watch: Citizen: Watches ($93.75)

« Last Edit: June 14, 2017, 11:49:17 AM by JoeyShmoe »
DDF A-Z Link Extension
Chrome
Firefox
Info

Offline etech0

  • Dansdeals Lifetime 10K Presidential Platinum Elite
  • *******
  • Join Date: Dec 2013
  • Posts: 12201
  • Total likes: 2211
  • DansDeals.com Hat Tips 1
    • View Profile
  • Location: not lakewood
  • Programs: DDF
Works, thanks! I will update the wiki now.
Workflowy. You won't know what you're missing until you try it.

Offline mileagejunkie

  • Dansdeals Presidential Platinum Elite
  • ********
  • Join Date: Nov 2014
  • Posts: 2828
  • Total likes: 200
  • DansDeals.com Hat Tips 527
    • View Profile
Works, thanks! I will update the wiki now.

Works on Safari too, just need to create a bookmark for any webpage and then edit the address and put the code instead.

Offline myi

  • Dansdeals Lifetime 20K Presidential Platinum Elite
  • ********
  • Join Date: Feb 2015
  • Posts: 21479
  • Total likes: 1699
  • DansDeals.com Hat Tips 316
  • Gender: Male
    • View Profile
  • Location: InMyPants! 🙈
  • Programs: 2Many2List!
You guys are amazing, really great work.
 Better late then ever, finally get to see the price and items of the product when click on the deal link, without having to click on the amazon link, nor leave some comments where's the price? Or why is the link not correct, or the like.
 Amazing work @etech0 and to @JoeyShmoe for all the little tweaking.
Don't try to be someone else , be who you are because everyone else is taken.

Offline etech0

  • Dansdeals Lifetime 10K Presidential Platinum Elite
  • *******
  • Join Date: Dec 2013
  • Posts: 12201
  • Total likes: 2211
  • DansDeals.com Hat Tips 1
    • View Profile
  • Location: not lakewood
  • Programs: DDF
https://www.amazon.com/dp/B00D3KJN48?psc=1
 
 @etech0 cant get this to work with your bookmark??
Weird! @JoeyShmoe any idea why? It seems to work with the original bookmarklet, but not with our final version.
Workflowy. You won't know what you're missing until you try it.

Offline JoeyShmoe

  • Dansdeals Lifetime Platinum Elite
  • *******
  • Join Date: Nov 2014
  • Posts: 1157
  • Total likes: 81
  • DansDeals.com Hat Tips 0
  • Gender: Male
    • View Profile
  • Location: Lakewood
Weird! @JoeyShmoe any idea why? It seems to work with the original bookmarklet, but not with our final version.
I'll take a look next time I'm at my desk
DDF A-Z Link Extension
Chrome
Firefox
Info

Offline myi

  • Dansdeals Lifetime 20K Presidential Platinum Elite
  • ********
  • Join Date: Feb 2015
  • Posts: 21479
  • Total likes: 1699
  • DansDeals.com Hat Tips 316
  • Gender: Male
    • View Profile
  • Location: InMyPants! 🙈
  • Programs: 2Many2List!
Weird! @JoeyShmoe any idea why? It seems to work with the original bookmarklet, but not with our final version.
I'll take a look next time I'm at my desk
thanks for your time. You guys are great!
Don't try to be someone else , be who you are because everyone else is taken.

Offline JoeyShmoe

  • Dansdeals Lifetime Platinum Elite
  • *******
  • Join Date: Nov 2014
  • Posts: 1157
  • Total likes: 81
  • DansDeals.com Hat Tips 0
  • Gender: Male
    • View Profile
  • Location: Lakewood
Weird! @JoeyShmoe any idea why? It seems to work with the original bookmarklet, but not with our final version.
Fixed, code below. Interesting thing is that in the link you quoted the price isn't called "Price", rather "With Deal", and the id for field is also not priceblock_ourprice (which is what you have) rather priceblock_dealprice. That's why it was erroring, because the Price field was null. It also only worked with your original code that didn't include the price. I added a conditional statement that should only put in the price if one of the two above versions isn't null, otherwise there won't be a price included (I can add scenarios as we find them)

Code: [Select]
javascript:(function(){
  var pattern = new RegExp("(https:\/\/www.amazon.com\/).*([dg]p\/)(?:product\/)?(..........).*|(https:\/\/smile.amazon.com\/).*([dg]p\/)(?:product\/)?(..........).*", "i"),
      match = location.href.match(pattern),
      image = document.getElementById('landingImage').src;
  var price = "";
  if(document.getElementById('priceblock_dealprice') !== null) {
    price = " [b](" + document.getElementById('priceblock_dealprice').innerHTML + ")[/b]";
  } else if(document.getElementById('priceblock_ourprice') !== null) {
    price = " [b](" + document.getElementById('priceblock_ourprice').innerHTML + ")[/b]";
  }
  var URL = (match[1] !== undefined) ? match[1] + "dp/" + match[3] +"/?tag=cl03f-20&smid=ATVPDKIKX0DER": match[4] + "dp/" + match[6] +"/?tag=cl03f-20&smid=ATVPDKIKX0DER";
  var result = "[url="+URL+"]"+document.title + price + "[/url][br][br][url="+URL+"][img]"+image+"[/img][/url]";
  if(document.execCommand('copy') !== false) {
    var ddLink = document.createElement('span'),
        range = document.createRange();
    ddLink.id = "ddLink";
    ddLink.innerText = result;
    document.body.appendChild(ddLink);
    range.selectNode(document.getElementById('ddLink'));
    window.getSelection().addRange(range);
    document.execCommand('copy');
    document.getElementById('ddLink').remove();
    setTimeout(function() {
      alert('DD link copied to clipboard...')
    }, 1000);
  } else {
    window.prompt("Press control-c",result);
  } void(0);
})()

thanks for your time. You guys are great!
My pleasure :)
DDF A-Z Link Extension
Chrome
Firefox
Info

Offline etech0

  • Dansdeals Lifetime 10K Presidential Platinum Elite
  • *******
  • Join Date: Dec 2013
  • Posts: 12201
  • Total likes: 2211
  • DansDeals.com Hat Tips 1
    • View Profile
  • Location: not lakewood
  • Programs: DDF
Fixed, code below. Interesting thing is that in the link you quoted the price isn't called "Price", rather "With Deal", and the id for field is also not priceblock_ourprice (which is what you have) rather priceblock_dealprice. That's why it was erroring, because the Price field was null. It also only worked with your original code that didn't include the price. I added a conditional statement that should only put in the price if one of the two above versions isn't null, otherwise there won't be a price included (I can add scenarios as we find them)

Code: [Select]
javascript:(function(){
  var pattern = new RegExp("(https:\/\/www.amazon.com\/).*([dg]p\/)(?:product\/)?(..........).*|(https:\/\/smile.amazon.com\/).*([dg]p\/)(?:product\/)?(..........).*", "i"),
      match = location.href.match(pattern),
      image = document.getElementById('landingImage').src;
  var price = "";
  if(document.getElementById('priceblock_dealprice') !== null) {
    price = " [b](" + document.getElementById('priceblock_dealprice').innerHTML + ")[/b]";
  } else if(document.getElementById('priceblock_ourprice') !== null) {
    price = " [b](" + document.getElementById('priceblock_ourprice').innerHTML + ")[/b]";
  }
  var URL = (match[1] !== undefined) ? match[1] + "dp/" + match[3] +"/?tag=cl03f-20&smid=ATVPDKIKX0DER": match[4] + "dp/" + match[6] +"/?tag=cl03f-20&smid=ATVPDKIKX0DER";
  var result = "[url="+URL+"]"+document.title + price + "[/url][br][br][url="+URL+"][img]"+image+"[/img][/url]";
  if(document.execCommand('copy') !== false) {
    var ddLink = document.createElement('span'),
        range = document.createRange();
    ddLink.id = "ddLink";
    ddLink.innerText = result;
    document.body.appendChild(ddLink);
    range.selectNode(document.getElementById('ddLink'));
    window.getSelection().addRange(range);
    document.execCommand('copy');
    document.getElementById('ddLink').remove();
    setTimeout(function() {
      alert('DD link copied to clipboard...')
    }, 1000);
  } else {
    window.prompt("Press control-c",result);
  } void(0);
})()
My pleasure :)
Interesting! Thanks for figuring it out!!
Workflowy. You won't know what you're missing until you try it.

Offline myi

  • Dansdeals Lifetime 20K Presidential Platinum Elite
  • ********
  • Join Date: Feb 2015
  • Posts: 21479
  • Total likes: 1699
  • DansDeals.com Hat Tips 316
  • Gender: Male
    • View Profile
  • Location: InMyPants! 🙈
  • Programs: 2Many2List!
Curios to know as I never tried it, as to what happens when it's a ss item? (yes I'm not near a computer). ;)
Don't try to be someone else , be who you are because everyone else is taken.

Offline JoeyShmoe

  • Dansdeals Lifetime Platinum Elite
  • *******
  • Join Date: Nov 2014
  • Posts: 1157
  • Total likes: 81
  • DansDeals.com Hat Tips 0
  • Gender: Male
    • View Profile
  • Location: Lakewood
Curios to know as I never tried it, as to what happens when it's a ss item? (yes I'm not near a computer). ;)
Interesting question, this gets the main price that's directly under the title
DDF A-Z Link Extension
Chrome
Firefox
Info

Offline etech0

  • Dansdeals Lifetime 10K Presidential Platinum Elite
  • *******
  • Join Date: Dec 2013
  • Posts: 12201
  • Total likes: 2211
  • DansDeals.com Hat Tips 1
    • View Profile
  • Location: not lakewood
  • Programs: DDF
Interesting question, this gets the main price that's directly under the title
Good point. Maybe when I have a few minutes I'll see if we can pull in both.
Workflowy. You won't know what you're missing until you try it.

Offline JoeyShmoe

  • Dansdeals Lifetime Platinum Elite
  • *******
  • Join Date: Nov 2014
  • Posts: 1157
  • Total likes: 81
  • DansDeals.com Hat Tips 0
  • Gender: Male
    • View Profile
  • Location: Lakewood
Curios to know as I never tried it, as to what happens when it's a ss item? (yes I'm not near a computer). ;)
Good point. Maybe when I have a few minutes I'll see if we can pull in both.
I just tested it and it shows the regular price. It might be a bit complicated especially with the 5%/15% prices...
DDF A-Z Link Extension
Chrome
Firefox
Info

Offline myi

  • Dansdeals Lifetime 20K Presidential Platinum Elite
  • ********
  • Join Date: Feb 2015
  • Posts: 21479
  • Total likes: 1699
  • DansDeals.com Hat Tips 316
  • Gender: Male
    • View Profile
  • Location: InMyPants! 🙈
  • Programs: 2Many2List!
I just tested it and it shows the regular price. It might be a bit complicated especially with the 5%/15% prices...
Obviously it will pull what ever the page shows, whether you have 5+ items or not? 
Don't try to be someone else , be who you are because everyone else is taken.

Offline etech0

  • Dansdeals Lifetime 10K Presidential Platinum Elite
  • *******
  • Join Date: Dec 2013
  • Posts: 12201
  • Total likes: 2211
  • DansDeals.com Hat Tips 1
    • View Profile
  • Location: not lakewood
  • Programs: DDF
Obviously it will pull what ever the page shows, whether you have 5+ items or not?
The complicated part is that amazon doesn't display both prices on the page, but just because the OP is getting 15% (or 5%) off, doesn't mean that everyone else will.
Workflowy. You won't know what you're missing until you try it.