I have updated this plugin, please use the new BETTER version – Click Here
Netflix is awesome, most of the time the fact that I have to click the “Play next episode” button does not bother me, usually I am at my computer anyway. But, if you are like me, you enjoy throwing on a show (say Futurama) and having a few episodes play while you go to sleep. The ~22 minutes an episode is just not enough, I like to have about 3 play. Netflix does not have a way for me to do this. I thought to myself “How hard could this be?” and spent the rest of the night throwing this baby together:
Netflix Autoplay Bookmarklet
If you don’t know how bookmarklets work, simply drag the above link onto you link bar.
To use it, just start an episode of the show you want to watch, click the bookmark, enter the number of episodes you want it to play, then just let it run. It should keep playing episodes, until either the season ends, or it reaches the number you entered.
javascript:(function(){
var eppsWatched = 1,
movieIDrgx = /movieid=\d*[&|#]/,
trackIDrgx = /trkid=\d*[&|#]/,
episoIDrgx = /episodeMovieId=\d*[&|#]/,
idregx = /\d+/,
epps, movieId, trkId, eppId, sl, tmp;
//grab netflix JS interface for player
try {
sl = netflix.Silverlight.MoviePlayer.getPlugin().getScriptInterface() || false;
} catch (e) {
sl = false;
}
if(!sl) {
alert('Please start the first episode you wish to watch.');
} else {
epps = prompt('How many episodes would you like to play?', '3'),
//number of episodes the user wants to watch
epps = parseInt(epps, 10);
//extract the IDs from the url
movieId = parseInt((idregx.exec(movieIDrgx.exec(window.location)) || [0])[0], 10);
eppId = parseInt((idregx.exec(episoIDrgx.exec(window.location)) || [0])[0], 10);
trkId = parseInt((idregx.exec(trackIDrgx.exec(window.location)) || [0])[0], 10);
//add even to movie finished
sl.OnMovieWatched = function() {
var waiting = null; //make our timeer
//check if we have finished watching
if(eppsWatched < epps) {
//move to the next episode
if(trkId !== 0) {
trkId++;
}
if(eppId !== 0) {
eppId++;
}
if(movieId !== 0) {
movieId++;
}
if(!waiting) { //this event triggers about 2 minutes before the end of a show - and multiple times, my guess it is how they move their index to know they should start with the next epp next time
waiting = setTimeout(function() {
//tell netflix to play the next epp
sl.PlayMovie({movieId: movieId, episodeMovieId: eppId, trackId: trkId});
//increment our episode counter
eppsWatched++;
clearTimeout(waiting);
waiting = null;
},2*60*1000);
}
}
}
}
})();
Some caveats:
This works for me in Chrome and Firefox, if you are using some other shitty browser, or an old version and it does not work for you, I don't care. Use a better browser.
There is a good chance this does not work with all shows. In fact I would be shock if it worked on all shows. If you find a show it does not work on, feel free to let me know and I might take a look! If you want to fix it yourself and send me the update, even better!
So, Netflix could easily stop this from working, but I hope they don't. Fortunately, probably only about 3 people read my blog, so I think this should be pretty safe!
How did I figure this out? Well, I don't want to type that up right now, so it will have to wait for another post.
Pingback: URL
OH MY GOD!
Thank you so much… I have been hoping that Netflix would add such a feature… Recently I realized it probably was never coming.
Respect.
thank you i really i appreciate you doing this, i just got netflix i always thought it had a autoplay feature included but disappointed when i saw i had to pay 5 dollars for the feature that i thought should be included anyway. Then i stumbled upon your site, thank you very very very much