Snippet pro export z nového TP

:slight_smile: Vytvořila jsem code snippet, který po vložení do console vysosne typ (cvičení/video/článek), název, odkaz a počty slov (nepřeložená, k revizi, hotová). Po zkopírování z výstupu do google sheet se do sloupců rozdělí pomocí rozdělovače dvě mezery :slight_smile: Je to takový můj prototýpek (trochu prasárnička, radši bych to nikde moc nesdílela :sweat_smile:), tak prosím vyzkoušejte…

const listOfLinks = Array.from(document.getElementsByClassName("_1t2gxwxk"));
const listOfCounts = Array.from(document.getElementsByClassName("_fgt1vz7"));

const listOfCountsNotNull = [];
listOfCounts.forEach(obj => {
    let numbersArr = obj.getElementsByClassName("_18no3ex1");
    if (numbersArr[0].children[0].innerHTML !== "--") {
        listOfCountsNotNull.push(numbersArr[0].children[0].innerHTML + "  " + numbersArr[1].children[0].innerHTML + "  " + numbersArr[2].children[0].innerHTML);
    }
})

listOfLinks.forEach((obj,ind) => {
    let link = obj.href;
    console.log("  " + link.match(/(?<=cs\/).*?(?=\/)/g) + "  " + obj.children[0].innerHTML+ "  " + link + "  " + listOfCountsNotNull[ind])
});

2 Likes

Hustý! :smiley:
Příště vyzkouším a jsem zvědavá, jak to zafunguje! :slight_smile:

1 Like

Ahojky, ten snippet úplně nefunguje, asi se změnily ty class names, který tam mám tak prasácky natvrdo. Každopádně sdílím aspoň skriptík (ukradený :)), který vyexportuje názvy obsahů s linky. Zkusím do něj pak ještě doplnit počty

const results = [
    ['Url', 'Anchor Text', 'External']
];
var urls = document.getElementsByTagName('a');
for (urlIndex in urls) {
    const url = urls[urlIndex]
    const externalLink = url.host !== window.location.host
    if(url.href && url.href.indexOf('://')!==-1) results.push([url.href, url.text, externalLink]) // url.rel
}
const csvContent = results.map((line)=>{
    return line.map((cell)=>{
        if(typeof(cell)==='boolean') return cell ? 'TRUE': 'FALSE'
        if(!cell) return ''
        let value = cell.replace(/[\f\n\v]*\n\s*/g, "\n").replace(/[\t\f ]+/g, ' ');
        value = value.replace(/\t/g, ' ').trim();
        return `"${value}"`
    }).join('\t')
}).join("\n");
console.log(csvContent)

nalezeno na Extracy all URLs from a webpage - Datablist

1 Like

Tak nakonec se mi podařilo do toho ještě nacpat i část pro exportování počtu slov <3

const results = [
  ['Url', 'Name', 'Total', 'Untranslated', 'To Approve', 'Completed']
];
const spans = document.getElementsByTagName('span');
const wordCountsPartialGrouped = [];
let wordCountsPartial = [];
let wordCountsNumber;
let wordCountIterator = 0;
for (line in spans) {
  const span = spans[line].innerHTML;
  if (span) {
    wordCountsNumber = Number(span.replace(',', ''));
    if (wordCountsNumber >= 0) {
      wordCountsPartial.push(wordCountsNumber);
      wordCountIterator++
      if (wordCountIterator === 4) {
        wordCountsPartialGrouped.push(wordCountsPartial)
        wordCountIterator = 0;
        wordCountsPartial = [];
      }
    }
  }
}
var urls = document.getElementsByTagName('a');
let urlIterator = 0;
for (urlIndex in urls) {
  const url = urls[urlIndex]
  if (url.href && url.href.indexOf('://') !== -1 && url.text) {
    results.push([url.href, url.text, ...wordCountsPartialGrouped[urlIterator]])
    urlIterator++
  }
}

const csvContent = results.map((line) => {
  return line.map((cell) => {
    if (typeof (cell) === 'number') return cell
    if (!cell) return ''
    if (typeof (cell) === 'string') {
      let value = cell.replace(/[\f\n\v]*\n\s*/g, "\n").replace(/[\t\f ]+/g, ' ');
      value = value.replace(/\t/g, ' ').trim();
      return `"${value}"`
    }
  }).join('\t')
}).join("\n");
console.log(csvContent)

Takhle by měl vypadat výsledek, i s kopírovacím tlačítkem :smiling_face:

Zkuste, prosím, @Petra @Marketa , budu ráda za feedback :slight_smile:

2 Likes

Bravo! A děkuji!!!

2 Likes