Userscripts moved to
http://userscripts-mirror.org/ because of a lot of malicious scripts being uploaded. Not sure this site will fare much better, but it could take awhile to reach the point where userscripts.org gave up. A lot of the older scripts were moved over to the new site as well.
I checked B&N and there's a few comic books that still have a download link, but it seems all ebooks purchased can only be read instantly. I have the original Greasemonkey script that I installed about 1.5+ years ago, and the code is below if you just want to create your own file. The script itself is named 152985.user.js and located in BN-Dload directory. I noticed there's a few books it doesn't work on though*, but the majority of my books can still be downloaded via the Alternative Download link that the script gives you for each book.
I'm glad the first thing I do when I purchase books from anywhere is to removed DRM for when stores do things like this or go the way of the Dodo bird.
*Edit: Actually I logged back in and reloaded the page with my library and all books can now be downloaded again using the script. Maybe my session timed out when I first tried.
And oops, I missed that FizzyWater basically had the same info, but here's the script without dealing with PMs (unless this violates a forum rule, and I'm sure I'll find out soon
).
Spoiler:
// ==UserScript==
// @name BN-Dload
// @namespace
http://www.mailinator.com/J-man
// @include
https://mynook.barnesandnoble.com/library.html*
// @include
https://mynook.barnesandnoble.com/productDetail.html*
// @grant none
// @version 20121119
// ==/UserScript==
function doIt() {
if ($('#adl1').length == 0) {
$('[action$="deleteItem"]').each(function(index) {
if ($(this).parent().find('[action$="EDSDeliverItem.aspx"]').length == 0) {
var delid = $(this).find('input').attr('value');
$(this).after('<span class="vb2"></span><form id="adl' + index + '" action="https://edelivery.barnesandnoble.com/EDS/EDSDeliverItem.aspx" class="download"><input value="' + delid + '" type="hidden" name="delid"><input type="hidden" value="Browser" name="clienttype"><input type="hidden" value="browser" name="deviceinfo"><button class="download "name="download">Alternative Download</button></form>');
}
});
}
setTimeout (function() {
doIt();
}, 3000 );
}
doIt();