Filmweb.pl eksport ocen (wersja poprawiona)

Skrypt pozwala na eksport ocen oraz chcę/nie chcę zobaczyć/zagrać do plików xls. Działa na własnym profilu oraz znajomych.

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        Filmweb.pl eksport ocen (wersja poprawiona)
// @namespace   kapela86

// @description Skrypt pozwala na eksport ocen oraz chcę/nie chcę zobaczyć/zagrać do plików xls. Działa na własnym profilu oraz znajomych.
// @match       *://filmweb.pl/user/*
// @match       *://www.filmweb.pl/user/*
// @version     1.8.2
// @grant       none
// @license     GPL-3.0-or-later
// @run-at      document-idle
// ==/UserScript==
"use strict";

/*
Changelog:
1.0		2015-04-14	pierwsze wydanie
1.1		2015-04-14	tytuły oryginalne są teraz klikalne i kierują do danego tytułu na stronie filmwebu
1.2		2015-04-21	dodano pobieranie komentarzy do ocen
1.3		2015-04-26	dodano pobieranie chcę/nie chcę zobaczyć/zagrać
1.4		2015-05-03	dodano pobieranie list znajomych
1.4.1	2015-05-04	różne drobne poprawki i optymalizacje kodu
1.4.2	2015-05-28	drobna poprawka dla osób mających spację w nicku
1.4.3	2016-11-27	poprawka dla osób które zainstalowały skrypt po 2016-10-04 i nie działał im przycisk zapisu do XLS
1.4.4	2017-07-09	naprawienie pobierania list "Chcę zobaczyć" (filmweb dodał kolumnę z datą dodania i to psuło wykonywanie skryptu)
1.5		2018-04-18	poprawienie skryptu aby mógł działać z nową wersją wyglądu profili i list ocen (na razie tylko pobieranie ocen zrobione)
1.6		2018-05-06	dodanie pobierania ocen programów i list "chcę zobaczyć/zagrać"
1.7		2018-05-27	dodanie pobierania list "nie interesuje mnie"
1.7.1	2018-05-29	poprawka dla nowego wyglądu strony profili
1.7.2	2018-07-22	poprawka drobnego błędu przy pobieraniu ocen
1.7.3	2019-04-14	poprawiłem błąd związany z nieładowaniem się skryptu i nieprawidłowym generowaniem odnośników do strony filmweb dla tytułów
1.7.4	2020-05-06  poprawilem błąd z brakiem polskich tytułów i roku produkcji (filmweb wprowadził drobne zmiany w kodzie strony); dodatkowo teraz kolumna z oryginalnym tytułem nie będzie pusta w sytuacji gdy jest on taki sam jak polski
1.7.5	2020-05-17  poprawilem błąd z niewyświetlaniem się panelu pobierania ocen (filmweb znowu wprowadził drobne zmiany w kodzie strony)
1.7.6	2021-09-19	tymczasowe obejście zmiań wprowadzonych w kodzie strony
1.7.7		        poprawki na zmiany w kodzie strony filmwebu i sposobie pobierania ocen
1.8     2022-11-15  poprawki dodane przez @tomfilmowiec, poprawione pobieranie danych (filmweb wprowdził drobne zmiany w kodzie strony), poprawione pobieranie ocen (teraz pobiera z osobnych requestów), dodane opóźnienia czasowe, poprawki kosmetyczne
1.8.1   2022-12-01  status pobierania widoczny w tytule strony
1.8.2   2023-11-18  poprawka dla nowego wyglądu profili

To do:
- kompatybilność z greasemonkey 4
- https://www.w3schools.com/howto/howto_js_progressbar.asp
- dogadać się z Grzegorz_Derebecki z FDB odnośnie nowych kolumn/formatu
- naprawić "w przypadku gdy polski tytuł jest taki sam jak oryginalny wtedy w kolumnie tytuł oryginalny zostawia puste pole."
- ogarnąć kwestię gdy ktoś nie ma ocen w danej kategorii lub nie mamy uprawnień do przeglądania ocen
- eksport ocen przy eksporcie listy chcę/nie chcę zobaczyć/zagrać
- eksport ocen aktorów
- eksport obejrzanych odcinków seriali wraz z ocenami
- przetestować ExcellentExport.js v3.x (eksport do xlsx, wiele arkuszy w pliku)
- sprawdzić czy da się też eksportować komentarze innych osób do naszej oceny
*/

/*
ExcellentExport.js v1.5
https://github.com/jmaister/excellentexport
https://raw.githubusercontent.com/jmaister/excellentexport/v1.5/excellentexport.min.js
*/

var n=String.fromCharCode,p;a:{try{document.createElement("$")}catch(q){p=q;break a}p=void 0} window.btoa||(window.btoa=function(b){for(var g,c,f,h,e,a,d=0,r=b.length,s=Math.max,l="";d<r;){g=b.charCodeAt(d++)||0;c=b.charCodeAt(d++)||0;a=b.charCodeAt(d++)||0;if(255<s(g,c,a))throw p;f=g>>2&63;g=(g&3)<<4|c>>4&15;h=(c&15)<<2|a>>6&3;e=a&63;c?a||(e=64):h=e=64;l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(f)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(g)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e)}return l}); window.atob||(window.atob=function(b){b=b.replace(/=+$/,"");var g,c,f,h,e=0,a=b.length,d=[];if(1===a%4)throw p;for(;e<a;)g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(e++)),c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(e++)),f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(e++)),h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(e++)),g=(g&63)<< 2|c>>4&3,c=(c&15)<<4|f>>2&15,f=(f&3)<<6|h&63,d.push(n(g)),c&&d.push(n(c)),f&&d.push(n(f));return d.join("")});
var ExcellentExport=function(){function b(e,a){return e.replace(RegExp("{(\\w+)}","g"),function(d,e){return a[e]})}var g={excel:"data:application/vnd.ms-excel;base64,",csv:"data:application/csv;base64,"},c={excel:'<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\x3c!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--\x3e</head><body><table>{table}</table></body></html>'},f= ",",h="\r\n";return{excel:function(e,a,d){a=a.nodeType?a:document.getElementById(a);var f=g.excel;a=b(c.excel,{a:d||"Worksheet",table:a.innerHTML});a=window.btoa(window.unescape(encodeURIComponent(a)));e.href=f+a;return!0},csv:function(e,a,d,b){void 0!==d&&d&&(f=d);void 0!==b&&b&&(h=b);a=a.nodeType?a:document.getElementById(a);var c="",l,k;for(d=0;d<a.rows.length;d++){l=a.rows[d];for(b=0;b<l.cells.length;b++){k=l.cells[b];var c=c+(b?f:""),m=k.textContent.trim();k=m;var t=-1!==m.indexOf(f)||-1!==m.indexOf("\r")|| -1!==m.indexOf("\n");(m=-1!==m.indexOf('"'))&&(k=k.replace(/"/g,'""'));if(t||m)k='"'+k+'"';c+=k}c+=h}a=g.csv+window.btoa(window.unescape(encodeURIComponent(c)));e.href=a;return!0}}}();

setTimeout(function()
{
    var TytulStrony = document.title;
    var OpoznieniePobraniaStrony = 750;
    var NazwaProfilu = TytulStrony.substring(0, TytulStrony.indexOf(" "));

    var KtoToJest;
    if (document.querySelector(".ico--photoThinMedium") !== null)
    {
        KtoToJest = "ja";
    }
    else if (document.querySelector(".ico--friendThin") !== null)
    {
        KtoToJest = "znajomy";
    }
    else
    {
        return;
    }

    if (window.location.pathname.toLowerCase() == "/user/"+NazwaProfilu.toLowerCase())
    {
        var Menu = document.querySelector("section").nextSibling;
        var KtoreElementy, NumerDiva, NumerPrzycisku, Tabela, RowSelector, CellSelector, KtoraStrona, CzyStrona, LiczbaOcen, LiczbaPobranychOcen, TempArray, TempNode;

        var TablicaDivow = [
            {selektor: "EksportOcen_DivOceny", id: "eksportocen", tytul: "pobierz oceny:"},
            {selektor: "EksportOcen_DivChcęZobaczyć", id: "eksportchcezobaczyc", tytul: "pobierz \"chcę zobaczyć/zagrać\":"},
            {selektor: "EksportOcen_DivNieInteresujeMnie", id: "eksportnieinteresujemnie", tytul: "pobierz \"nie interesuje mnie\":"}
        ];

        var TablicaPrzyciskow = [
            [
                {selektor: "EksportOcen_PrzyciskPobierzOcenyFilmow", tytul: "filmy", tytul_fw: "film", id: "0,0", ktoreelementy: "id,tytulpl,tytulorg,rokprod,ulubione,ocena,komentarz,gatunek,data", parametr: "film?page=", plik: " - oceny - filmy.xls"},
                {selektor: "EksportOcen_PrzyciskPobierzOcenySeriali", tytul: "seriale", tytul_fw: "serial", id: "0,1", ktoreelementy: "id,tytulpl,tytulorg,rokprod,ulubione,ocena,komentarz,gatunek,data", parametr: "serial?page=", plik: " - oceny - seriale.xls"},
                {selektor: "EksportOcen_PrzyciskPobierzOcenyProgramow", tytul: "programy", tytul_fw: "tvshow", id: "0,2", ktoreelementy: "id,tytulpl,tytulorg,rokprod,ulubione,ocena,komentarz,gatunek,data", parametr: "tvshow?page=", plik: " - oceny - programy.xls"},
                {selektor: "EksportOcen_PrzyciskPobierzOcenyGier", tytul: "gry", tytul_fw: "videogame", id: "0,3", ktoreelementy: "id,tytulpl,tytulorg,rokprod,ulubione,ocena,komentarz,gatunek,data", parametr: "videogame?page=", plik: " - oceny - gry.xls"},
                {selektor: "EksportOcen_PrzyciskZapiszOcenyDoXLS", tytul: "zapisz do XLS", id: "zapisocen"}
            ],
            [
                {selektor: "EksportOcen_PrzyciskPobierzChceZobaczycFilmy", tytul: "filmy", tytul_fw: "film", id: "1,0", ktoreelementy: "id,tytulpl,tytulorg,rokprod,jakbardzo,gatunek", parametr: "film?page=", plik: " - chcę zobaczyć - filmy.xls"},
                {selektor: "EksportOcen_PrzyciskPobierzChceZobaczycSeriale", tytul: "seriale", tytul_fw: "serial", id: "1,1", ktoreelementy: "id,tytulpl,tytulorg,rokprod,jakbardzo,gatunek", parametr: "serial?page=", plik: " - chcę zobaczyć - seriale.xls"},
                {selektor: "EksportOcen_PrzyciskPobierzChceZobaczycProgramy", tytul: "programy", tytul_fw: "tvshow", id: "1,2", ktoreelementy: "id,tytulpl,tytulorg,rokprod,jakbardzo,gatunek", parametr: "tvshow?page=", plik: " - chcę zobaczyć - programy.xls"},
                {selektor: "EksportOcen_PrzyciskPobierzChceZagrac", tytul: "gry", tytul_fw: "videogame", id: "1,3", ktoreelementy: "id,tytulpl,tytulorg,rokprod,jakbardzo,gatunek", parametr: "videogame?page=", plik: " - chcę zagrać.xls"},
                {selektor: "EksportOcen_PrzyciskZapiszChceZobaczycDoXLS", tytul: "zapisz do XLS", id: "zapischce"}
            ],
            [
                {selektor: "EksportOcen_PrzyciskPobierzNieInteresujeMnieFilmy", tytul: "filmy", tytul_fw: "film", id: "2,0", ktoreelementy: "id,tytulpl,tytulorg,rokprod,gatunek", parametr: "film?page=", plik: " - nie interesuje mnie - filmy.xls"},
                {selektor: "EksportOcen_PrzyciskPobierzNieInteresujeMnieSeriale", tytul: "seriale", tytul_fw: "serial", id: "2,1", ktoreelementy: "id,tytulpl,tytulorg,rokprod,gatunek", parametr: "serial?page=", plik: " - nie interesuje mnie - seriale.xls"},
                {selektor: "EksportOcen_PrzyciskPobierzNieInteresujeMnieProgramy", tytul: "programy", tytul_fw: "tvshow", id: "2,2", ktoreelementy: "id,tytulpl,tytulorg,rokprod,gatunek", parametr: "tvshow?page=", plik: " - nie interesuje mnie - programy.xls"},
                {selektor: "EksportOcen_PrzyciskPobierzNieInteresujeMnieGry", tytul: "gry", tytul_fw: "videogame", id: "2,3", ktoreelementy: "id,tytulpl,tytulorg,rokprod,gatunek", parametr: "videogame?page=", plik: " - nie interesuje mnie - gry.xls"},
                {selektor: "EksportOcen_PrzyciskZapiszNieInteresujeMnieDoXLS", tytul: "zapisz do XLS", id: "zapisnieinteresujemnie"}
            ]
        ];

        var ListaKolumn = {
            id: "ID",
            tytulpl: "Tytuł polski",
            tytulorg: "Tytuł oryginalny",
            rokprod: "Rok produkcji",
            jakbardzo: "Jak bardzo chcę",
            ulubione: "Ulubione",
            ocena: "Ocena",
            komentarz: "Komentarz",
            gatunek: "Gatunek",
            data: "Data",
        }

        var GlownyDiv = document.createElement("div");
        GlownyDiv.id = "glownydiv"
        GlownyDiv.style.display = "table";
        GlownyDiv.style.borderCollapse = "collapse";
        GlownyDiv.style.maxWidth = "66rem";
        GlownyDiv.style.width = "100%";
        GlownyDiv.style.margin = "0 auto";

        if (document.querySelector("#glownydiv") !== null)
        {
            document.querySelector("#glownydiv").remove();
        }

        Menu.parentNode.insertBefore(GlownyDiv, Menu.nextSibling);

        var GlownyDivBody = document.createElement("div");
        GlownyDivBody.id = "glownydivbody"
        GlownyDivBody.style.display = "table-row-group";
        GlownyDiv.appendChild(GlownyDivBody);

        for (var i = 0; i < TablicaDivow.length; i++)
        {
            window[TablicaDivow[i].selektor] = document.createElement("div");
            window[TablicaDivow[i].selektor].id = TablicaDivow[i].id;
            window[TablicaDivow[i].selektor].style.display = "table-row";
            GlownyDiv.appendChild(window[TablicaDivow[i].selektor]);
            TempNode = document.createElement("div");
            TempNode.style.border = "1px solid";
            TempNode.style.display = "table-cell";
            TempNode.style.padding = "6px 8px";

            if (TablicaDivow[i].id == "eksportnieinteresujemnie")
            {
                TempNode.style.color = "grey";
            }

            TempNode.textContent = TablicaDivow[i].tytul;
            window[TablicaDivow[i].selektor].appendChild(TempNode);

            for (var j = 0; j < TablicaPrzyciskow[i].length; j++)
            {
                TempNode = document.createElement("div");
                TempNode.style.border = "1px solid";
                TempNode.style.display = "table-cell";
                TempNode.style.padding = "6px 8px";
                window[TablicaDivow[i].selektor].appendChild(TempNode);
                window[TablicaPrzyciskow[i][j].selektor] = document.createElement("a");
                window[TablicaPrzyciskow[i][j].selektor].style.cursor = "pointer";
                TempNode.appendChild(window[TablicaPrzyciskow[i][j].selektor]);
            }
        }

        Reset();
    }

    function Reset()
    {
        for (var i = 0; i < TablicaPrzyciskow.length; i++)
        {
            for (var j = 0; j < TablicaPrzyciskow[i].length; j++)
            {
                window[TablicaPrzyciskow[i][j].selektor].textContent = TablicaPrzyciskow[i][j].tytul;
                window[TablicaPrzyciskow[i][j].selektor].id = TablicaPrzyciskow[i][j].id;
                window[TablicaPrzyciskow[i][j].selektor].style.color = "";

                if (j < 4)
                {
                    if (i < 2)
                    {
                        window[TablicaPrzyciskow[i][j].selektor].addEventListener("click", PrzygotowanieDoPobierania, false);
                    }
                    else
                    {
                        window[TablicaPrzyciskow[i][j].selektor].addEventListener("click", Nieaktywne, false);
                        window[TablicaPrzyciskow[i][j].selektor].style.color = "grey";
                    }
                }
                else
                {
                    window[TablicaPrzyciskow[i][j].selektor].addEventListener("click", Ostrzezenie, false);
                    window[TablicaPrzyciskow[i][j].selektor].style.color = "grey";
                }

                if (j === TablicaPrzyciskow[i].length-1)
                {
                    window[TablicaPrzyciskow[i][j].selektor].removeAttribute("download");
                    window[TablicaPrzyciskow[i][j].selektor].removeAttribute("href");
                }
            }
        }

        KtoraStrona = 0;
        CzyStrona = 1;
        LiczbaOcen = 0;
        LiczbaPobranychOcen = 0;

        EksportOcen_PrzyciskZapiszOcenyDoXLS.removeEventListener("click", ZapiszOcenyDoXLS, false);
        EksportOcen_PrzyciskZapiszChceZobaczycDoXLS.removeEventListener("click", ZapiszChceZobaczycDoXLS, false);
        EksportOcen_PrzyciskZapiszNieInteresujeMnieDoXLS.removeEventListener("click", ZapiszNieInteresujeMnieDoXLS, false);

        document.title = TytulStrony;
    }

    function PrzygotowanieDoPobierania()
    {
        TempArray = this.id.split(",");
        NumerDiva = parseInt(TempArray[0]);
        NumerPrzycisku = parseInt(TempArray[1]);
        Reset();

        StworzTabelke();
        window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "rozpoczynanie pobierania...";
        window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "darkorange";

        if (NumerDiva === 0)
        {
                var Request = new XMLHttpRequest();
                Request.onerror = function()
                {
                    window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "błąd pobierania";
                    window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "darkorange";
                };
                Request.onload = function()
                {
                   LiczbaOcen = this.response;
                };

                var Parametr;
                if (KtoToJest == "ja")
                {
                    Parametr = "logged/vote/"+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].tytul_fw+"/count";
                }
                else if (KtoToJest == "znajomy")
                {
                    Parametr = "user/"+NazwaProfilu+"/votes/"+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].tytul_fw+"/count";
                }

                Request.open("GET", "https://www.filmweb.pl/api/v1/"+Parametr, false);
                Request.send();

                if (LiczbaOcen > 0)
                {
                    PobierzOceny();
                }
                else
                {
                    window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "brak ocen";
                    window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "green";
                }
        }
        else if (NumerDiva === 1)
        {
                var Request = new XMLHttpRequest();
                Request.onerror = function()
                {
                    window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "błąd pobierania";
                    window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "darkorange";
                };
                Request.onload = function()
                {
                   LiczbaOcen = this.response;
                };

                var Parametr;
                if (KtoToJest == "ja")
                {
                    Parametr = "logged/want2see/"+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].tytul_fw+"/count";
                }
                else if (KtoToJest == "znajomy")
                {
                    Parametr = "user/"+NazwaProfilu+"/want2see/"+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].tytul_fw+"/count";
                }

                Request.open("GET", "https://www.filmweb.pl/api/v1/"+Parametr, false);
                Request.send();

                if (LiczbaOcen > 0)
                {
                    PobierzChce();
                }
                else
                {
                    window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "brak wpisów";
                    window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "green";
                }
        }
        else if (NumerDiva === 2)
        {
                var Request = new XMLHttpRequest();
                Request.onerror = function()
                {
                    window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "błąd pobierania";
                    window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "darkorange";
                };
                Request.onload = function()
                {
                   LiczbaOcen = this.response;
                };

                var Parametr;
                if (KtoToJest == "ja")
                {
                    Parametr = "logged/dontwant2see/"+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].tytul_fw+"/count";
                }
                else if (KtoToJest == "znajomy")
                {
                    Parametr = "user/"+NazwaProfilu+"/dontwant2see/"+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].tytul_fw+"/count";
                }

                Request.open("GET", "https://www.filmweb.pl/api/v1/"+Parametr, false);
                Request.send();

                if (LiczbaOcen > 0)
                {
                    PobierzNieInteresujeMnie();
                }
                else
                {
                    window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "brak wpisów";
                    window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "green";
                }
        }
    }

    function PobierzOceny()
    {
        KtoraStrona++;

        window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "pobrano "+LiczbaPobranychOcen+"/"+LiczbaOcen+" ocen";
        window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "darkorange";

        document.title = "(Pobrano "+Math.round(LiczbaPobranychOcen/LiczbaOcen*100)+"%) "+TytulStrony;

        if (CzyStrona && LiczbaPobranychOcen < LiczbaOcen)
        {
            var Request = new XMLHttpRequest();
            Request.onerror = function()
            {
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "błąd pobierania";
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "red";
            };
            Request.onload = PrzetworzOceny;

            var Parametr;
            if (KtoToJest == "ja")
            {
                Parametr = "logged/vote/title";
            }
            else if (KtoToJest == "znajomy")
            {
                Parametr = "logged/friend/"+NazwaProfilu+"/vote/title";
            }

            Request.open("GET", "https://www.filmweb.pl/api/v1/"+Parametr+"/"+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].parametr+KtoraStrona, true);
            Request.send();
        }
        else
        {
            EksportOcen_PrzyciskZapiszOcenyDoXLS.removeEventListener("click", Ostrzezenie, false);
            EksportOcen_PrzyciskZapiszOcenyDoXLS.addEventListener("click", ZapiszOcenyDoXLS, false);
            EksportOcen_PrzyciskZapiszOcenyDoXLS.setAttribute("download", NazwaProfilu+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].plik);
            EksportOcen_PrzyciskZapiszOcenyDoXLS.style.color = "";

            window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "green";
        }
    }

    function PobierzChce()
    {
        KtoraStrona++;

        window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "pobrano "+LiczbaPobranychOcen+"/"+LiczbaOcen+" wpisów";
        window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "darkorange";

        document.title = "(Pobrano "+Math.round(LiczbaPobranychOcen/LiczbaOcen*100)+"%) "+TytulStrony;

        if (CzyStrona && LiczbaPobranychOcen < LiczbaOcen)
        {
            var Request = new XMLHttpRequest();
            Request.onerror = function()
            {
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "błąd pobierania";
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "red";
            };
            Request.onload = PrzetworzChce;

            var Parametr;
            if (KtoToJest == "ja")
            {
                Parametr = "logged/want2see";
            }
            else if (KtoToJest == "znajomy")
            {
                Parametr = "logged/friend/"+NazwaProfilu+"/want2see";
            }

            Request.open("GET", "https://www.filmweb.pl/api/v1/"+Parametr+"/"+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].parametr+KtoraStrona, true);
            Request.send();
        }
        else
        {
            EksportOcen_PrzyciskZapiszChceZobaczycDoXLS.removeEventListener("click", Ostrzezenie, false);
            EksportOcen_PrzyciskZapiszChceZobaczycDoXLS.addEventListener("click", ZapiszChceZobaczycDoXLS, false);
            EksportOcen_PrzyciskZapiszChceZobaczycDoXLS.setAttribute("download", NazwaProfilu+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].plik);
            EksportOcen_PrzyciskZapiszChceZobaczycDoXLS.style.color = "";

            window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "green";
        }
    }

    function PobierzNieInteresujeMnie()
    {
        KtoraStrona++;

        window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "pobrano "+LiczbaPobranychOcen+"/"+LiczbaOcen+" wpisów";
        window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "darkorange";

        document.title = "(Pobrano "+Math.round(LiczbaPobranychOcen/LiczbaOcen*100)+"%) "+TytulStrony;

         if (CzyStrona && LiczbaPobranychOcen < LiczbaOcen)
        {
            var Request = new XMLHttpRequest();
            Request.onerror = function()
            {
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "błąd pobierania";
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "red";
            };
            Request.onload = PrzetworzNieInteresujeMnie;

            var Parametr;
            if (KtoToJest == "ja")
            {
                Parametr = "logged/dontwant2see";
            }
            else if (KtoToJest == "znajomy")
            {
                Parametr = "logged/friend/"+NazwaProfilu+"/dontwant2see";
            }

            Request.open("GET", "https://www.filmweb.pl/api/v1/"+Parametr+"/"+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].parametr+KtoraStrona, true);
            Request.send();
        }
        else
        {
            EksportOcen_PrzyciskZapiszNieInteresujeMnieDoXLS.removeEventListener("click", Ostrzezenie, false);
            EksportOcen_PrzyciskZapiszNieInteresujeMnieDoXLS.addEventListener("click", ZapiszNieInteresujeMnieDoXLS, false);
            EksportOcen_PrzyciskZapiszNieInteresujeMnieDoXLS.setAttribute("download", NazwaProfilu+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].plik);
            EksportOcen_PrzyciskZapiszNieInteresujeMnieDoXLS.style.color = "";

            window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "green";
        }
    }

    function PrzetworzOceny()
    {
        var PageInfo = JSON.parse(this.responseText);

        if (this.responseText == "[]")
        {
            CzyStrona = 0;

            PobierzOceny();

            return;
        }

        for (var i = 0; i < PageInfo.length; i++)
        {
            var ID = PageInfo[i].entity;

            var MovieInfo = null;
            var MovieURL = "https://www.filmweb.pl/api/v1/title/"+ID+"/info";

            var Request = new XMLHttpRequest();
            Request.onerror = function()
            {
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "błąd pobierania";
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "darkorange";
            };
            Request.onload = function()
            {
                try
                {
                    MovieInfo = JSON.parse(this.response);
                }
                catch (e)
                {
                    MovieInfo = null;
                }
            };
            Request.open("GET", MovieURL, false);
            Request.setRequestHeader("x-locale", "PL");
            Request.send();

            if (MovieInfo === null)
            {
                continue;
            }

            var VoteInfo = null;

            var Parametr;
            if (KtoToJest == "ja")
            {
                Parametr = "logged/vote";
            }
            else if (KtoToJest == "znajomy")
            {
                Parametr = "logged/friend/"+NazwaProfilu+"/vote";
            }

            var VoteURL = "https://www.filmweb.pl/api/v1/"+Parametr+"/"+TablicaPrzyciskow[NumerDiva][NumerPrzycisku].tytul_fw+"/"+ID+"/details";

            var Request = new XMLHttpRequest();
            Request.onerror = function()
            {
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "błąd pobierania";
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "darkorange";
            };
            Request.onload = function()
            {
                try
                {
                    VoteInfo = JSON.parse(this.response);
                }
                catch (e)
                {
                    VoteInfo = null;
                }
            };
            Request.open("GET", VoteURL, false);
            Request.send();

            if (VoteInfo === null)
            {
                continue;
            }

            RowSelector = Tabela.insertRow();

            //ID
            CellSelector = RowSelector.insertCell();
            CellSelector.textContent = ID;

            //Tytuł polski
            CellSelector = RowSelector.insertCell();
            CellSelector.textContent = MovieInfo.title;

            //Tytuł oryginalny
            CellSelector = RowSelector.insertCell();
            CellSelector.textContent = MovieInfo.originalTitle;

            //Rok produkcji
            CellSelector = RowSelector.insertCell();
            CellSelector.textContent = MovieInfo.year;

            //Ulubione
            CellSelector = RowSelector.insertCell();
            if (VoteInfo.favorite)
            {
                CellSelector.textContent = "tak";
            }

            //Ocena
            CellSelector = RowSelector.insertCell();
            VoteInfo.rate == 0 ? CellSelector.textContent = "brak oceny" : CellSelector.textContent = VoteInfo.rate;

            //Komentarz
            CellSelector = RowSelector.insertCell();
            if (VoteInfo.comment)
            {
                CellSelector.textContent = VoteInfo.comment;
            }

            //Gatunek
            CellSelector = RowSelector.insertCell();

            //Data
            CellSelector = RowSelector.insertCell();
            if (VoteInfo.viewDate)
            {
                var date = VoteInfo.viewDate.toString().substring(0, 4);
                if (VoteInfo.viewDate.toString().substring(4, 6) != "00")
                {
                    date = VoteInfo.viewDate.toString().substring(4, 6)+"-"+date;
                    if (VoteInfo.viewDate.toString().substring(6, 8) != "00")
                    {
                        date = VoteInfo.viewDate.toString().substring(6, 8)+"-"+date;
                    }
                }

                CellSelector.textContent = date;
            }

            LiczbaPobranychOcen++;
        }

        setTimeout(function()
        {
           PobierzOceny();
        }, OpoznieniePobraniaStrony);
    }

    function PrzetworzChce()
    {
        var PageInfo = JSON.parse(this.responseText);

        if (this.responseText == "[]")
        {
            CzyStrona = 0;

            PobierzChce();

            return;
        }

        for (var i = 0; i < PageInfo.length; i++)
        {
            var ID = PageInfo[i].entity;

            var MovieInfo = null;
            var MovieURL = "https://www.filmweb.pl/api/v1/title/"+ID+"/info";

            var Request = new XMLHttpRequest();
            Request.onerror = function()
            {
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "błąd pobierania";
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "darkorange";
            };
            Request.onload = function()
            {
                try
                {
                   MovieInfo = JSON.parse(this.response);
                }
                catch (e)
                {
                    MovieInfo = null;
                }
            };
            Request.open("GET", MovieURL, false);
            Request.setRequestHeader("x-locale", "PL");
            Request.send();

            if (MovieInfo === null)
            {
                continue;
            }

            RowSelector = Tabela.insertRow();

            //ID
            CellSelector = RowSelector.insertCell();
            CellSelector.textContent = ID;

            //Tytuł polski
            CellSelector = RowSelector.insertCell();
            CellSelector.textContent = MovieInfo.title;

            //Tytuł oryginalny
            CellSelector = RowSelector.insertCell();
            CellSelector.textContent = MovieInfo.originalTitle;

            //Rok produkcji
            CellSelector = RowSelector.insertCell();
            CellSelector.textContent = MovieInfo.year;

            //Jak bardzo chce
            var levels;
            if (KtoToJest == "ja")
            {
                levels = ["Interesuje mnie", "Kiedyś obejrzę", "Na pewno obejrzę", "Muszę obejrzeć", "Umrę jak nie zobaczę"];
            }
            else if (KtoToJest == "znajomy")
            {
                levels = ["Jest zainteresowany", "Kiedyś obejrzy", "Na pewno obejrzy", "Musi obejrzeć", "Umrze jak nie zobaczy"];
            }
            CellSelector = RowSelector.insertCell();
            CellSelector.textContent = levels[PageInfo[i].level - 1];

            //Gatunek
            CellSelector = RowSelector.insertCell();

            LiczbaPobranychOcen++;
        }

        setTimeout(function()
        {
            PobierzChce();
        }, OpoznieniePobraniaStrony);
    }

    function PrzetworzNieInteresujeMnie()
    {
        var PageInfo = JSON.parse(this.responseText);

        if (this.responseText == "[]")
        {
            CzyStrona = 0;

            PobierzNieInteresujeMnie();

            return;
        }

        for (var i = 0; i < PageInfo.length; i++)
        {
            var ID = PageInfo[i].entity;

            var MovieInfo = null;
            var MovieURL = "https://www.filmweb.pl/api/v1/title/"+ID+"/info";

            var Request = new XMLHttpRequest();
            Request.onerror = function()
            {
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].textContent = "błąd pobierania";
                window[TablicaPrzyciskow[NumerDiva][NumerPrzycisku].selektor].style.color = "darkorange";
            };
            Request.onload = function()
            {
                try
                {
                   MovieInfo = JSON.parse(this.response);
                }
                catch (e)
                {
                    MovieInfo = null;
                }
            };
            Request.open("GET", MovieURL, false);
            Request.setRequestHeader("x-locale", "PL");
            Request.send();

            if (MovieInfo === null)
            {
                continue;
            }

            RowSelector = Tabela.insertRow();

            //Tytuł polski
            CellSelector = RowSelector.insertCell();
            CellSelector.textContent = MovieInfo.title;

            //Tytuł oryginalny
            CellSelector = RowSelector.insertCell();
            CellSelector.textContent = MovieInfo.originalTitle;

            //Rok produkcji
            CellSelector = RowSelector.insertCell();
            CellSelector.textContent = MovieInfo.year;

            //Gatunek
            CellSelector = RowSelector.insertCell();

            LiczbaPobranychOcen++;
        }

        setTimeout(function()
        {
            PobierzNieChce();
        }, OpoznieniePobraniaStrony);
    }

    function ZapiszOcenyDoXLS()
    {
        return ExcellentExport.excel(EksportOcen_PrzyciskZapiszOcenyDoXLS, "userscript", "Oceny");
    }

    function ZapiszChceZobaczycDoXLS()
    {
        return ExcellentExport.excel(EksportOcen_PrzyciskZapiszChceZobaczycDoXLS, "userscript", "Chcę zobaczyć");
    }

    function ZapiszNieInteresujeMnieDoXLS()
    {
        return ExcellentExport.excel(EksportOcen_PrzyciskZapiszNieInteresujeMnieDoXLS, "userscript", "Nie interesuje mnie");
    }

    function StworzTabelke()
    {
        Tabela = document.querySelector("#userscript");
        if (Tabela !== null)
        {
            document.body.removeChild(Tabela);
        }
        Tabela = document.createElement("table");
        Tabela.id = "userscript";
        Tabela.style.display = "none";
        document.body.appendChild(Tabela);
        RowSelector = Tabela.insertRow();

        KtoreElementy = TablicaPrzyciskow[NumerDiva][NumerPrzycisku].ktoreelementy.split(",");
        for (var i = 0; i < KtoreElementy.length; i++)
        {
            CellSelector = document.createElement("th");
            CellSelector.id = "abc";
            CellSelector.textContent = ListaKolumn[KtoreElementy[i]];
            RowSelector.appendChild(CellSelector);
        }
    }

    function Ostrzezenie()
    {
        alert("Najpierw pobierz którąś kategorię.");
    }

    function Nieaktywne()
    {
        alert("Niestety Filmweb nie udostępnia aktualnie tych danych.");
    }

}, 2000);