Wikibooks:Elenchi generati offline/Libri non linkati nei ripiani: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica |
m pagina in disuso |
||
Riga 1: | Riga 1: | ||
{{pagina in disuso}} |
|||
{{Elenco offline |
{{Elenco offline |
||
|data=18 settembre 2012 |
|data=18 settembre 2012 |
Versione delle 22:38, 8 ago 2017
Template:Pagina in disuso Questo elenco generato il 18 settembre 2012 da una query su una copia del database di Wikibooks raccoglie tutte le pagine che sono libri non linkati in alcun ripiano.
Query
Alternative
- Apri la console Javascript del browser.
- Crea un array con tutti i titoli dei libri (per es. dall'apposito elenco gen. offline).
- Incolla questo codice nella console ed eseguilo:
codificaTitoli(); // modifica l'array titoli libriLinkati = libriLinkatiNeiRipiani(); libriNonLinkati = $.grep( titoli, function(obj, index) { return !isTitoloInArray(obj, libriLinkati) } ); stampaArray( libriNonLinkati ); // @return Un array con i titoli dei libri linkati nei ripiani. function libriLinkatiNeiRipiani() { ripiani = elencaRipiani(); ripianiInFormatoHtml = scaricaRipianiInHtml(ripiani); var libriLinkati = []; for(i = 0; i < ripianiInFormatoHtml.length; i++) { libriLinkati = libriLinkati.concat( libriLinkatiNellHtml(ripianiInFormatoHtml[i]) ); } return libriLinkati; } // @return Un array con i nomi dei ripiani. function elencaRipiani() { console.log("Scarico elenco dei ripiani...") json = apiSync({ action: 'query', format: 'json', list: 'allpages', apnamespace: 102, aplimit: 500 }); pagine = JSON.parse( json ).query.allpages; elenco = []; for(i = 0; i < pagine.length; i++) { elenco.push(pagine[i].title); } // Workaround temporaneo: finché le vecchie sottopagine dei ripiani, che non hanno il DynamicPageList, non sono cancellate. elenco = $.grep(elenco, function(obj) {return obj.indexOf('/') == -1;}); return elenco; } // @return Un array il cui elemento i-esimo è il contenuto in html del ripiano // il cui titolo è ripiani[i]. function scaricaRipianiInHtml(ripiani) { risultato = []; for(i = 0; i < ripiani.length; i++) { console.log("Scarico ripiano " + (i + 1) + "/" + ripiani.length); json = apiSync({ action: 'parse', format: 'json', page: ripiani[i] }); html = JSON.parse( json ).parse.text["*"]; risultato.push(html); } return risultato; } // @return Un array dei titoli dei libri linkati nel codice html specificato. function libriLinkatiNellHtml(html) { var libriLinkati = []; // Il selettore jQuery che segue è un po' "strano", ma empiricamente pare che non funzioni se lo modifico $(html).children("").children("li a").each(function() { href = $(this).attr("href"); // Prendendo ciò che viene dopo "/wiki/", escludo automaticamente i link che non puntano a MediaWiki. // Tuttavia, potrebbero esserci dei link che puntano a wiki diverse da it.wikibooks. match = (/\/wiki\/(.*)$/).exec( href ); // null se non c'è corrispondenza. Altrimenti, [0] è il testo comprensivo di "/wiki/", [1] è il capturing group. if (match != null) { libriLinkati.push(match[1]); } }); return libriLinkati; } // Richiesta sincrona alle API di MediaWiki. function apiSync(data) { return $.ajax({ url:mw.util.wikiScript('api'), data: data, async:false }) .responseText; } function codificaTitoli() { for(i = 0; i < titoli.length; i++) { titoli[i] = mw.util.wikiUrlencode(titoli[i]); } } // @return true se il titolo è nell'array di titoli specificato, false altrimenti. function isTitoloInArray(titolo, array) { for(i = 0; i < array.length; i++) { if (titolo == array[i] || mw.util.wikiUrlencode(titolo) == array[i]) return true; } return false; } function stampaArray(array) { console.log( "Libri non linkati nei ripiani:" ); console.log( "# [[" + array.join("]]\n# [[") + "]]" ); console.log( "Fine elenco" ); }
Nota: alcuni potrebbero essere falsi positivi, in particolare i titoli che contengono segni di punteggiatura.
Elenco
- Accademie_teatrali_nel_mondo
- Aziende_di_Erogazione,_Azienda_dello_Stato_e_Enti_Locali
- Bavaria_(Nervesa_della_Battaglia)
- Carmina_(Catullo)
- Catalogo_Monete_Italiane_1946-2001
- F-104_Starfighter
- Fondamenti_di_automatica
- Informatica_ecologica
- Italia
- La_terra_per_nutrire_il_pianeta
- Orto
- Pagina_principale
- Poesie_(Palazzeschi)
- Reti_logiche
- Semplici_modelli_differenziali
- Storia_delle_miniere_di_sale_siciliane
- Yu-Gi-Oh!