-
-
Save alana314/6bdc9af962fd8620a4fb to your computer and use it in GitHub Desktop.
//Now with less jquery | |
//1) go to your my-list page, and scroll to the bottom to make sure it's all loaded: | |
//http://www.netflix.com/browse/my-list | |
//2) Next, paste this in your developer tools console and hit enter: | |
[...document.querySelectorAll('.slider [aria-label]')].map(ele => ele.getAttribute('aria-label')) | |
//or use this to copy the list to your clipboard: | |
copy([...document.querySelectorAll('.slider [aria-label]')].map(ele => ele.getAttribute('aria-label'))) |
I didn't try the above code snippets but this extension worked great for me: https://github.com/daltonmenezes/netflix-list-exporter
I didn't try these snippets, but I posted https://gist.github.com/cliffordp/122c8eda56e2302926b74aec65be4363 to export Netflix's My List, Watch History, and thumbs up/down or ratings. Hope it helps someone else.
Oh wow, didn't realize this was so active. I updated the script to use https. I'm surprised it still works but it does. Thanks all
Thank you help me to migrate my account :) and it worked.
Updated this to not use jquery. In my other gists I also made a script to export a soundcloud playlist
Thanks! I could export all titles and then I had to figure out how to add them to my new profile.
Found a very patchy way but did the job. Hope someone will need this.
1. Login & Select your old
Account -> Profile
2. Go to My List (old
profile)
3. Run this code in your Browser Developer console to Export and save My List
var tmpList = (function() {
var list = []
document.querySelectorAll('.title-card a[aria-label]').forEach(
function(item) {
try {
list.push({
name: item.getAttribute('aria-label'),
link: ("https://www.netflix.com" + item.getAttribute("href").split("?")[0]).replace('watch', 'title')
})
} catch (err) {
console.error("ERROR: Ignored err", err, item)
}
})
return (JSON.stringify(list));
}());
localStorage.setItem('tmpList',tmpList);
4. Logout old account
5. Login & Select your new
Account -> Profile
6. Run this Code in your Browser Developer console to Import My List
saved in step 3
(function(){
var list = JSON.parse(localStorage.getItem('tmpList'))
var counter = 0;
function openWin(e){
var popup;
popup = window.open(list[e].link);
popup.onload = function(){
setTimeout(function(){
if(popup.document.querySelector('.nf-flat-button-icon-mylist-add + span')){
popup.document.querySelector('.nf-flat-button-icon-mylist-add + span').click();
setTimeout(function(){popup.close()}, 500);
console.log('Added', list[e].name);
} else {
popup.close();
console.log('Already added', list[e].name);
}
}, 500)
}
var timer = setInterval(function() {
if(popup && popup.closed) {
clearInterval(timer);
if(list.length-1 > counter){
openWin(++counter);
} else {
console.log('Added');
localStorage.removeItem('tmpList');
}
}
}, 1000);
}
openWin(counter)
}())
7. Done
@joyblanks Fancy! Thanks!
@joyblanks, Awesome!
jhult's suggestion - "netflix-list-exporter" extension was an easier solution. Thanks.
Is there a way to transfer the viewing history from one account? I know I can export it to a file, but then how do I import it in another profile?
This works for me to generate a json or unquoted csv version of the titles and suggested ratings from the DVD In Queue page. (Yes, I still have a DVD account what do you want from me!?) Doesn't pull "Saved items" (the ones that aren't available at this time).
titles=[...document.querySelectorAll('#inqueueList .title.ondelhide')].map(ele => ele.text)
ratings=[...document.querySelectorAll('#inqueueList .starbar')].map(ele => ele.getAttribute('data-rating'))
titles_ratings = []
for (var i = 0; i < titles.length; i++) {
titles_ratings.push([titles[i].replace('\\"', ''), ratings[i]])
}
json = JSON.stringify(titles_ratings)
csv = titles_ratings.map(function(d){
return d.join();
}).join('\n');
Example csv output:
Hamlet,3.3
The Lion King,4.1
Westworld,4.2
Westworld,4.2
Westworld,4.2
Alien vs. Predator,2.3
Is there a way to transfer the viewing history from one account? I know I can export it to a file, but then how do I import it in another profile?
@shahsahilj You can't. The only reason this script works is because it scrapes DOM elements that are already exposed by the Netflix website.
To make an import script you would have to create a script to automate the reinsertion of the data. Which can be as easy as pushing it to the Netflix API if you can reverse engineer it or hope that there's an officially supported way.
TL;DR Exporting account info such as "My List" is easy.
Importing the same info is a bit more tricky.
Thanks! I could export all titles and then I had to figure out how to add them to my new profile.
Found a very patchy way but did the job. Hope someone will need this.1. Login & Select your
old
Account -> Profile
2. Go to My List (old
profile)
3. Run this code in your Browser Developer console to Export and saveMy List
var tmpList = (function() { var list = [] document.querySelectorAll('.title-card a[aria-label]').forEach( function(item) { try { list.push({ name: item.getAttribute('aria-label'), link: ("https://www.netflix.com" + item.getAttribute("href").split("?")[0]).replace('watch', 'title') }) } catch (err) { console.error("ERROR: Ignored err", err, item) } }) return (JSON.stringify(list)); }()); localStorage.setItem('tmpList',tmpList);
4. Logout old account
5. Login & Select yournew
Account -> Profile
6. Run this Code in your Browser Developer console to ImportMy List
saved in step 3(function(){ var list = JSON.parse(localStorage.getItem('tmpList')) var counter = 0; function openWin(e){ var popup; popup = window.open(list[e].link); popup.onload = function(){ setTimeout(function(){ if(popup.document.querySelector('.nf-flat-button-icon-mylist-add + span')){ popup.document.querySelector('.nf-flat-button-icon-mylist-add + span').click(); setTimeout(function(){popup.close()}, 500); console.log('Added', list[e].name); } else { popup.close(); console.log('Already added', list[e].name); } }, 500) } var timer = setInterval(function() { if(popup && popup.closed) { clearInterval(timer); if(list.length-1 > counter){ openWin(++counter); } else { console.log('Added'); localStorage.removeItem('tmpList'); } } }, 1000); } openWin(counter) }())
7. Done
Thanks, but the code is not working for me.... Getting a cannot set property 'onload' of null
Any ideas?
The exporting script worked for me, but I had issues with the importing script.
The Chrome popup blocker needs to be disabled while importing.
Settings -> Site Settings -> Popups and Redirects
Second, I modified the code as follows:
(function(){
var list = JSON.parse(localStorage.getItem('tmpList'))
var counter = 0;
function openWin(e){
var popup;
popup = window.open(list[e].link);
popup.onload = function(){
setTimeout(function(){
if(popup.document.querySelector('[data-uia="add-to-my-list"]')){
popup.document.querySelector('[data-uia="add-to-my-list"]').click();
setTimeout(function(){popup.close()}, 500);
console.log('Added', list[e].name);
} else {
popup.close();
console.log('Already added', list[e].name);
}
}, 500)
}
var timer = setInterval(function() {
if(popup && popup.closed) {
clearInterval(timer);
if(list.length-1 > counter){
openWin(++counter);
} else {
console.log('Added');
localStorage.removeItem('tmpList');
}
}
}, 1000);
}
openWin(counter)
}())
Does anyone have an idea how to hide movies if they are either upvoted or downvoted? I only have a solution for downvotes if they are "greyed out". Maybe one could combine the scripts from here with this one?
// ==/UserScript==
var $ = window.jQuery;
setInterval(function(){
$('.slider-item:has(.is-disliked)').remove();
}, 1000);
I suggest to take a look to https://github.com/origamiofficial/docker-netflix-migrate for exporting and importing netflix ratings
In case somebody need real JSON, I slightly modified @trebor74hr's version