|
@@ -21,7 +21,8 @@ const infoboxList = [
|
|
'.infobox',
|
|
'.infobox',
|
|
'.portable-infobox',
|
|
'.portable-infobox',
|
|
'.infoboxtable',
|
|
'.infoboxtable',
|
|
- '.notaninfobox'
|
|
|
|
|
|
+ '.notaninfobox',
|
|
|
|
+ '.tpl-infobox'
|
|
];
|
|
];
|
|
|
|
|
|
const removeClasses = [
|
|
const removeClasses = [
|
|
@@ -159,6 +160,7 @@ function parse_page(msg, content, embed, wiki, reaction, {title, contentmodel},
|
|
let infobox = $(infoboxList.join(', ')).first();
|
|
let infobox = $(infoboxList.join(', ')).first();
|
|
if ( embed.thumbnail?.url === thumbnail ) {
|
|
if ( embed.thumbnail?.url === thumbnail ) {
|
|
let image = infobox.find([
|
|
let image = infobox.find([
|
|
|
|
+ 'tr:eq(1) img',
|
|
'div.images img',
|
|
'div.images img',
|
|
'figure.pi-image img',
|
|
'figure.pi-image img',
|
|
'div.infobox-imagearea img'
|
|
'div.infobox-imagearea img'
|
|
@@ -171,25 +173,28 @@ function parse_page(msg, content, embed, wiki, reaction, {title, contentmodel},
|
|
}
|
|
}
|
|
let rows = infobox.find([
|
|
let rows = infobox.find([
|
|
'> tbody > tr',
|
|
'> tbody > tr',
|
|
|
|
+ '> table > tbody > tr',
|
|
'div.section > div.title',
|
|
'div.section > div.title',
|
|
'div.section > table > tbody > tr',
|
|
'div.section > table > tbody > tr',
|
|
'h2.pi-header',
|
|
'h2.pi-header',
|
|
'div.pi-data',
|
|
'div.pi-data',
|
|
'table.infobox-rows > tbody > tr'
|
|
'table.infobox-rows > tbody > tr'
|
|
].join(', '));
|
|
].join(', '));
|
|
|
|
+ let tdLabel = true;
|
|
for ( let i = 0; i < rows.length; i++ ) {
|
|
for ( let i = 0; i < rows.length; i++ ) {
|
|
if ( embed.fields.length >= 25 || embed.length > 5400 ) break;
|
|
if ( embed.fields.length >= 25 || embed.length > 5400 ) break;
|
|
let row = rows.eq(i);
|
|
let row = rows.eq(i);
|
|
if ( row.is('tr, div.pi-data') ) {
|
|
if ( row.is('tr, div.pi-data') ) {
|
|
- let label = row.children('th, td, h3.pi-data-label').eq(0);
|
|
|
|
|
|
+ let label = row.children(( tdLabel ? 'td, ' : '' ) + 'th, h3.pi-data-label').eq(0);
|
|
label.find(removeClasses.join(', ')).remove();
|
|
label.find(removeClasses.join(', ')).remove();
|
|
let value = row.children('td, div.pi-data-value').eq(( label.is('td') ? 1 : 0 ));
|
|
let value = row.children('td, div.pi-data-value').eq(( label.is('td') ? 1 : 0 ));
|
|
value.find(removeClasses.join(', ')).remove();
|
|
value.find(removeClasses.join(', ')).remove();
|
|
|
|
+ if ( !label.is('td') && label.html()?.trim() && value.html()?.trim() ) tdLabel = false;
|
|
label = htmlToPlain(label).trim().split('\n')[0];
|
|
label = htmlToPlain(label).trim().split('\n')[0];
|
|
value = htmlToDiscord(value, wiki.articleURL.href, true).trim().replace( /\n{3,}/g, '\n\n' );
|
|
value = htmlToDiscord(value, wiki.articleURL.href, true).trim().replace( /\n{3,}/g, '\n\n' );
|
|
if ( label.length > 100 ) label = label.substring(0, 100) + '\u2026';
|
|
if ( label.length > 100 ) label = label.substring(0, 100) + '\u2026';
|
|
if ( value.length > 500 ) value = limitLength(value, 500, 250);
|
|
if ( value.length > 500 ) value = limitLength(value, 500, 250);
|
|
- if ( label && value ) embed.addField( label, value );
|
|
|
|
|
|
+ if ( label && value ) embed.addField( label, value, true );
|
|
}
|
|
}
|
|
else if ( row.is('div.title, h2.pi-header') ) {
|
|
else if ( row.is('div.title, h2.pi-header') ) {
|
|
row.find(removeClasses.join(', ')).remove();
|
|
row.find(removeClasses.join(', ')).remove();
|
|
@@ -207,6 +212,9 @@ function parse_page(msg, content, embed, wiki, reaction, {title, contentmodel},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ if ( embed.fields.length && embed.fields[embed.fields.length - 1].name === '\u200b' ) {
|
|
|
|
+ embed.spliceFields( embed.fields.length - 1, 1 );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if ( embed.thumbnail?.url === thumbnail ) {
|
|
if ( embed.thumbnail?.url === thumbnail ) {
|
|
let image = response.body.parse.images.find( pageimage => ( /\.(?:png|jpg|jpeg|gif)$/.test(pageimage.toLowerCase()) && pageimage.toLowerCase().includes( title.toLowerCase().replace( / /g, '_' ) ) ) );
|
|
let image = response.body.parse.images.find( pageimage => ( /\.(?:png|jpg|jpeg|gif)$/.test(pageimage.toLowerCase()) && pageimage.toLowerCase().includes( title.toLowerCase().replace( / /g, '_' ) ) ) );
|