hdrezka rating

add rating to films cover

// ==UserScript==
// @name         hdrezka rating
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  add rating to films cover
// @author       cjvnjde
// @match        http://hdrezka.ag/series/*
// @match        http://hdrezka.ag/films/*
// @match        http://hdrezka.ag/index.php?do=search*
// @grant        GM_xmlhttpRequest
// @run-at       document-body
// ==/UserScript==

(function() {
    'use strict';
    const listOfFilms = document.querySelectorAll('.b-content__inline_item-link');
    const listOfLinks = [];
    const listOfStat = [];
    for(let i = 0; i < listOfFilms.length; i++){
        listOfLinks.push(listOfFilms[i].querySelector('a').href);
        listOfStat.push(listOfFilms[i].querySelector('div'));
    }
    const getRating = (link) => {
        return new Promise((resolve => {
            GM_xmlhttpRequest({
                method: 'GET',
                url: link,
                onload: function({response}) {
                    const ratingSpan = /<span id="rating-layer-num-.{1,60}<\/span/.exec(response)
                    let rating = '';
                    if(ratingSpan[0]){
                        rating = /(>)(.*)(<\/)/.exec(ratingSpan[0])
                    }
                    sessionStorage.setItem(link, rating[2]);
                    resolve({rating: rating[2], link: link});
                },
              onerror: function(e){
                console.error(e);
              }
            })
        }))
    }
    const ListOfRating = listOfLinks.map(link => {
        if(sessionStorage.getItem(link)){
            return {rating: sessionStorage.getItem(link), link: link}
        }
        return getRating(link);
    })

    Promise.all(ListOfRating).then(data => {
        if(data.length === listOfFilms.length){
            data.forEach((data, id) => {
                listOfStat[id].innerHTML += `, ${data.rating}`;
            })
        }
    })
})();