nickodemos

Extract imdb data latest RF

Mar 18th, 2020
4,029
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     // ==UserScript==
  2.     // @name         RF
  3.     // @version      0.5.7
  4.     // @description  Extract imdb data into ILC format
  5.     // @author       Chameleon + dimi401
  6.     // @include      http*://*imdb.com/title/tt*
  7.     // @include      http*://pretome.info/details.php?id=*
  8.     // @match        file:///home/dim/test/testpage.html
  9.     // @updateURL    https://pastebin.com/MVi83dqj
  10.     // @downloadURL  https://pastebin.com/MVi83dqj
  11.     // @grant        GM_getValue
  12.     // @grant        GM_setValue
  13.     // ==/UserScript==
  14. //setTimeout(
  15. //function() {
  16. //  window.scrollTo(0,document.body.scrollHeight); }
  17. //, 0);
  18.     (function() {
  19.         'use strict';
  20.  
  21.         //IMDB BUTTON
  22.         if (window.location.href.includes('www.imdb.com')) {
  23.         //autorun check
  24.         if (GM_getValue('auto')==1) {
  25.           collect();
  26.         }
  27.         var a=document.createElement('a');
  28.         a.innerHTML='RF';
  29.         a.addEventListener('click', collect);
  30.         a.href='javascript:void(0);';
  31.         var place=document.getElementsByClassName('subtext')[0];
  32.         var span=document.createElement('span');
  33.         span.setAttribute('class', 'ghost');
  34.         span.innerHTML='|';
  35.         place.appendChild(span);
  36.         place.appendChild(a);
  37.         }
  38.  
  39.       //SCENE SITE BUTTON\
  40.       if (window.location.href.includes('pretome')) {
  41.           var a=document.createElement('a');
  42.         a.innerHTML='ILC Extract';
  43.         a.addEventListener('click', fill_text);
  44.         a.href='javascript:void(0);';
  45.         var place=document.getElementsByClassName('mf_middle_middle')[1];
  46.       var span=document.createElement('span');
  47.         span.setAttribute('class', 'ghost');
  48.         span.innerHTML='|';
  49.         place.appendChild(span);
  50.         place.appendChild(a);
  51.       }
  52.  
  53.     })();
  54.  
  55.     function fill_text()
  56.     {
  57.         GM_setValue('auto',1);
  58.         GM_setValue('fill',0);
  59.         if ( document.body.innerHTML.match(/www.imdb.com\/title\/tt[0-9]*/) != null ) {
  60.         url = document.body.innerHTML.match(/www.imdb.com\/title\/tt[0-9]*/)[0];
  61.         url = 'https://' + url + '/';
  62.         window.open(url);
  63.         interval = setInterval(checkfill,1500);
  64.         }
  65.     }
  66.  
  67.     function checkfill()
  68.     {
  69.       if ( GM_getValue('fill') != 0) {
  70.         vard = GM_getValue('fill');
  71.         document.getElementById('text').value = vard;
  72.         clearInterval(interval);
  73.       }
  74.     }
  75.  
  76.     function close()
  77.     {
  78.         document.body.removeChild(document.getElementById('ilc_extract'));
  79.     }
  80.  
  81. function collect()
  82. {
  83.   // Get AKAs before running the collect on the main page
  84.   var imdbId=window.location.href.split('/title/tt')[1].split('/')[0];
  85.   var xhr = new XMLHttpRequest();
  86.   xhr.open('GET', "https://www.imdb.com/title/tt"+imdbId+"/releaseinfo");
  87.   xhr.onreadystatechange = function()
  88.   {
  89.     if(xhr.readyState == 4 && xhr.status==200)
  90.     {
  91.       var newDoc=document.implementation.createHTMLDocument();
  92.       newDoc.body.innerHTML=xhr.responseText;
  93.       try
  94.       {
  95.         var trs=newDoc.getElementById('akas').nextElementSibling.getElementsByTagName('tr');
  96.         var akas=[];
  97.         for(var i=0; i<trs.length; i++)
  98.         {
  99.           var tds=trs[i].getElementsByTagName('td');
  100.           var found=false;
  101.           for(var j=0; j<akas.length; j++)
  102.           {
  103.             if(akas[j].title == tds[1].textContent)
  104.             {
  105.               found=true;
  106.               break;
  107.             }
  108.           }
  109.           if(found)
  110.             continue;
  111.           akas.push({name:tds[0].textContent, title:tds[1].textContent});
  112.         }
  113.         collect1(akas);
  114.       }
  115.       catch(e){ console.log(e); }
  116.     }
  117.   }
  118.   xhr.send();
  119. }
  120.     function collect1(akas)
  121.     {
  122.  
  123.         var div=document.getElementById('ilc_extract');
  124.         if(!div)
  125.         {
  126.             div=document.createElement('div');
  127.             div.id='ilc_extract';
  128.             div.setAttribute('style', 'background:rgba(0,0,0,0.8); width: 1200px; min-height:800px; top:200px; position: absolute; left:0; right:0; margin:auto; z-index:200;');
  129.             document.body.appendChild(div);
  130.         }
  131.         var textarea=document.createElement('textarea');
  132.         textarea.setAttribute('style', 'width: calc(100% - 15px); margin:5px; border:none; resize:none;');
  133.         div.appendChild(textarea);
  134.         var a=document.createElement('a');
  135.         a.innerHTML='Close';
  136.         a.href='javascript:void(0)';
  137.         a.addEventListener('click', close);
  138.         div.appendChild(a);
  139.         a.setAttribute('style', 'display:block; text-align:center; color:white; margin:10px;');
  140.  
  141.         var movie={};
  142.  
  143.         var h1=document.getElementsByTagName('h1')[0];
  144.         movie.title=h1.firstChild.textContent.trim();
  145.         if (document.getElementsByClassName('poster')[0]!=null){
  146.           movie.poster=document.getElementsByClassName('poster')[0].getElementsByTagName('img')[0].src;
  147.           //above is the image link from the main page
  148.           if ( movie.poster.match(/https:\/\/m.media-amazon.com.*V1_/) != null ) {
  149.             movie.poster=movie.poster.match(/https:\/\/m.media-amazon.com.*V1_/)[0];
  150.             movie.poster=movie.poster + 'SY600.jpg';
  151.           }
  152.           else {
  153.             //here include additional code for more full resolution posters
  154.           }
  155.         }
  156.         if (h1.firstElementChild!=null){
  157.             movie.year=parseInt(h1.firstElementChild.textContent.split('(')[1]);
  158.         }
  159.         else{
  160.             movie.year=extract_release_date('Release Date:')
  161.  
  162.         }
  163.         movie.id=window.location.href.split('/title/tt')[1].split('/')[0];
  164.         if(document.getElementsByTagName('time')[0]!=null){
  165.             movie.runtime=document.getElementsByTagName('time')[0].textContent.trim();
  166.         }
  167.         movie.genres=extract('Genres:', 'title?genres=');
  168.         movie.languages=extract('Language:', 'primary_language');
  169.         movie.countries=extract('Country:', 'country_of_origin');
  170.         if (document.getElementById('titleStoryLine').getElementsByTagName('p')[0] != undefined) {
  171.           movie.plot = document.getElementById('titleStoryLine').getElementsByTagName('p')[0].getElementsByTagName('span')[0].textContent.trim();
  172.         }
  173.         movie.directors=extract('Director:', 'name/nm');
  174.         movie.writers=extract('Writers:', 'name/nm');
  175.         movie.creators=extract('Creators:', 'name/nm');
  176.         movie.cast=[];
  177.         if (document.getElementsByClassName('cast_list')[0]!=undefined) {
  178.           var trs=document.getElementsByClassName('cast_list')[0].getElementsByTagName('tr');
  179.           for(var i=1; i<trs.length; i++)
  180.           {
  181.               var actor={};
  182.               var tds=trs[i].getElementsByTagName('td');
  183.               if (tds[1]!=undefined) {
  184.                   var a=tds[1].getElementsByTagName('a')[0];
  185.                   actor.link=a.href;
  186.                   if(actor.link.indexOf('name/nm')==-1)
  187.                   {
  188.                       continue;
  189.                   }
  190.                   actor.name=a.textContent.trim();
  191.                   actor.role=tds[3].textContent.split('\n')[1].trim();
  192.                   movie.cast.push(actor);
  193.               }
  194.           }
  195.         }
  196.         textarea.innerHTML+="[size=6]"+movie.title+ "[/size] | [url=https://retroflix.club/forums.php?action=search&keywords=tt"+movie.id+"]Actors[/url]\n";
  197.         if(movie.poster){
  198.           textarea.innerHTML+="[img]"+movie.poster+"[/img]\n";
  199.         }
  200.         textarea.innerHTML+="https://www.imdb.com/title/tt"+movie.id+"\n";
  201.         textarea.innerHTML+="\n";
  202.         textarea.innerHTML+="[b]Year:[/b] "+movie.year+"\n";
  203.         textarea.innerHTML+="[b]Runtime:[/b] "+movie.runtime+"\n";
  204.         textarea.innerHTML+="[b]Genre";
  205.         if(movie.genres.length>1)
  206.             textarea.innerHTML+="s";
  207.         textarea.innerHTML+=":[/b] "+join(movie.genres)+"\n";
  208.         textarea.innerHTML+="[b]Language"
  209.         if(movie.languages.length>1)
  210.             textarea.innerHTML+="s";
  211.         textarea.innerHTML+=":[/b] "+join(movie.languages)+"\n";
  212.         textarea.innerHTML+="[b]Countr"
  213.         if(movie.countries.length>1)
  214.             textarea.innerHTML+="ies";
  215.         else
  216.             textarea.innerHTML+='y';
  217.         textarea.innerHTML+=":[/b] "+join(movie.countries)+"\n";
  218.         textarea.innerHTML+="[b]Plot:[/b] "+movie.plot+"\n";
  219.         if(movie.directors.length>0){
  220.             textarea.innerHTML+="\n";
  221.             textarea.innerHTML+="[b]Director"
  222.             if(movie.directors.length>1)
  223.                 textarea.innerHTML+="s";
  224.             textarea.innerHTML+=":[/b]\n";
  225.             for(var i=0; i<movie.directors.length; i++)
  226.             {
  227.                 var d=movie.directors[i];
  228.                 textarea.innerHTML+='[url='+d.link+']'+d.name+'[/url]\n';
  229.             }
  230.         }
  231.         if(movie.writers.length>0){
  232.         textarea.innerHTML+="\n";
  233.         textarea.innerHTML+="[b]Writer"
  234.             if(movie.writers.length>1)
  235.                 textarea.innerHTML+="s";
  236.         textarea.innerHTML+=":[/b]\n";
  237.         for(var i=0; i<movie.writers.length; i++)
  238.         {
  239.             var w=movie.writers[i];
  240.             textarea.innerHTML+='[url='+w.link+']'+w.name+'[/url]\n';
  241.         }
  242.         }
  243.         if(movie.creators.length>0){
  244.             textarea.innerHTML+="\n";
  245.             textarea.innerHTML+="[b]Creator"
  246.             if(movie.creators.length>1)
  247.                 textarea.innerHTML+="s";
  248.             textarea.innerHTML+=":[/b]\n";
  249.             for(var i=0; i<movie.creators.length; i++)
  250.             {
  251.                 var w=movie.creators[i];
  252.                 textarea.innerHTML+='[url='+w.link+']'+w.name+'[/url]\n';
  253.             }
  254.         }
  255.         if (movie.cast.length>0){
  256.           textarea.innerHTML+="\n";
  257.           textarea.innerHTML+="[b]Cast:[/b]\n";
  258.           for(var i=0; i<movie.cast.length; i++)
  259.           {
  260.               var c=movie.cast[i];
  261.               textarea.innerHTML+='[url='+c.link+']'+c.name+'[/url] - '+c.role+'\n';
  262.           }
  263.         }
  264.       //textarea.innerHTML+="\n";
  265.       //textarea.innerHTML+="\n";
  266.         if(akas.length>0)
  267.         {
  268.           textarea.innerHTML+='\n';
  269.           textarea.innerHTML+="[b]AKAs:[/b]\n";
  270.           for(var i=0; i<akas.length; i++)
  271.           {
  272.             textarea.innerHTML+=akas[i].title.trim()+'\n';
  273.           }
  274.         }
  275.       //textarea.innerHTML+="I am wondering if adding the movie information is worth it. Send me a PM if you think I should continue.";
  276.         textarea.style.height=textarea.scrollHeight+'px';
  277.         //RESET AUTO VALUE
  278.         GM_setValue('fill',textarea.innerHTML);
  279.  
  280.         //vard = GM_getValue('testing');
  281.         //console.log(vard);
  282.         //Copyt to clipboard
  283.         textarea.select();
  284.         document.execCommand('copy');
  285.         if (GM_getValue('auto') == 1 ) {
  286.           GM_setValue('auto',0)
  287.           window.close();
  288.         }
  289.  
  290.         //Unselect Everything
  291.         document.getSelection().removeAllRanges();
  292.         //document.getSelection().addRange(selected); // dimi, not sure what you were doing here but 'selected' doesn't exist?
  293.  
  294.  
  295.     }
  296.  
  297.     function join(list)
  298.     {
  299.         if(list.length==0)
  300.             return "";
  301.         var str=list[0].name;
  302.         for(var i=1; i<list.length; i++)
  303.         {
  304.             str+=', '+list[i].name;
  305.         }
  306.         return str;
  307.     }
  308.  
  309.     function extract(h4_text, restrict)
  310.     {
  311.         var holder=false;
  312.         var h4s=document.getElementsByTagName('h4');
  313.         var res=[];
  314.         for(var i=0; i<h4s.length; i++)
  315.         {
  316.             var h4=h4s[i];
  317.             if(h4.textContent.substr(0,5)==h4_text.substr(0,5)&&h4.textContent.substr(-1)==h4_text.substr(-1))
  318.             {
  319.                 holder=h4.parentNode;
  320.                 break;
  321.             }
  322.         }
  323.         if(holder)
  324.         {
  325.             var as=holder.getElementsByTagName('a');
  326.             for(var i=0; i<as.length; i++)
  327.             {
  328.                 if(as[i].href.indexOf(restrict)==-1)
  329.                 {
  330.                     continue;
  331.                 }
  332.                 res.push({name:as[i].textContent.trim(), link:as[i].href});
  333.             }
  334.         }
  335.         return res;
  336.  
  337.     }
  338.  
  339.  
  340.     function extract_release_date(h4_text)
  341.     {
  342.         var h4s=document.getElementsByTagName('h4');
  343.         var year='Not Available';
  344.         for(var i=0; i<h4s.length; i++)
  345.         {
  346.             var h4=h4s[i];
  347.             if(h4.textContent.substr(0,5)==h4_text.substr(0,5)&&h4.textContent.substr(-1)==h4_text.substr(-1))
  348.             {
  349.                 if(h4.nextSibling.textContent.match(/(19|20)[0-9][0-9]/g)!=null){
  350.                     year=h4.nextSibling.textContent.match(/(19|20)[0-9][0-9]/g)[0];
  351.                     break;
  352.                 }
  353.             }
  354.         }
  355.         return year;;
  356.     }
Advertisement
Add Comment
Please, Sign In to add comment