[A] getMessages() - GRP, E2E, GIF, metadata

This commit is contained in:
Jan 2019-05-06 01:46:05 +02:00
commit 17d331f4d2
4 changed files with 151 additions and 0 deletions

5
.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
# https://git-scm.com/docs/gitignore
# https://help.github.com/articles/ignoring-files
# Example .gitignore files: https://github.com/github/gitignore
/bower_components/
/node_modules/

16
functions/getChats.js Normal file
View file

@ -0,0 +1,16 @@
function getChats() {
let chats = [];
document.querySelectorAll('._2EXPL').forEach(chat => {
const c = {
profilePic: chat.querySelector('img') ? chat.querySelector('img').src : '',
name: chat.querySelector('._1wjpf').textContent,
message: chat.querySelector('._2_LEW ').textContent,
time: chat.querySelector('._3T2VG').textContent,
unreadMessages: false, // TODO unreadMessages
unreadCount: 0, // TODO unreadCount
}
chats.push(c);
})
return chats;
}
getChats()

128
functions/getMessages.js Normal file
View file

@ -0,0 +1,128 @@
function getMessages() {
let messages = [];
document.querySelectorAll('.vW7d1').forEach(msg => {
let m, meta = {
type: 'message',
direction: 'out',
status: null,
date: null,
time: null,
};
// meta
if (msg.querySelector('._1DZAH')) {
// time
meta.time = msg.querySelector('._3EFt_').textContent;
//date
if (msg.querySelector('.copyable-text')) {
meta.date = msg.querySelector('.copyable-text').getAttribute('data-pre-plain-text').split('] ')[0].slice(1).split(', ')[1];
} else if (messages.length > 0) {
meta.date = messages[messages.length - 1].date;
}
// status
if (msg.querySelector('._32uRw span')) {
if (msg.querySelector('._32uRw span').getAttribute('data-icon').includes('dblcheck')) {
meta.status = 'read';
} else if (msg.querySelector('._32uRw span').getAttribute('data-icon').includes('check')) {
meta.status = 'send';
}
} else {
meta.direction = 'in';
}
console.log(meta.date, meta.time, meta.direction, meta.status)
}
// content
if (msg.classList.contains('_3rjxZ')) {
// SYSTEM MESSAGES
if (msg.querySelector('._14b5J') != null) {
// E2E _14b5J
meta.type = 'e2e',
m = {
txt: msg.querySelector('._14b5J div').textContent,
}
} else if (msg.querySelector('._2ArBI') != null) {
console.log('GRP ANNOUNCEMENT', msg)
// GRP ANNOUNCEMENT _2ArBI
meta.type = 'groupEvent',
m = {
txt: msg.querySelector('._2ArBI span').textContent,
}
} else {
console.log('date', msg)
// DATE
meta.type = 'date';
m = {
txt: msg.querySelector('span').textContent,
}
}
} else if (msg.querySelector('._3v3PK') != null) {
console.log('media', msg)
// img .message-out
meta.type = 'media';
m = {
image: msg.querySelector('img').src,
}
// msg.querySelector('.WEu0O').style.backgroundImage
} else if(msg.querySelector('._10MiG') != null) {
console.log('GIF', msg)
// gif ._10MiG
meta.type = 'gif';
m = {
preview: msg.querySelector('.WEu0O').style.backgroundImage.slice(5, msg.querySelector('.WEu0O').style.backgroundImage.length-2),
video: msg.querySelector('._1Y0rl').src
}
} else if(msg.querySelector('._2hOiI') != null) {
// // ggf. alles gif ist in ._3CnDa
// console.log('GIF2', msg)
// // gif ._2hOiI
// // DAS IST EIN GIF, DAS GERADE LÄUFT
// meta.type = 'gif2';
// m = {
// preview: msg.querySelector('.WEu0O').style.backgroundImage.slice(5, msg.querySelector('.WEu0O').style.backgroundImage.length-2),
// video: msg.querySelector('._1Y0rl').src
// }
} else if (msg.querySelector('._3FDzO') != null) {
// link ._3FDzO
meta.type = 'link';
m = {
preview: {
img: msg.querySelector('._2H6ea').src,
content: msg.querySelector('._3BCzw').textContent
},
message: msg.querySelector('._3zb-j.ZhF0n .selectable-text.copyable-text').textContent,
}
} else if (msg.querySelector('.quoted-mention') != null) {
console.log('response', msg)
// response .quoted-mention
meta.type = 'response',
m = {
name: msg.querySelector('.copyable-text').getAttribute('data-pre-plain-text').split('] ')[1].replace(':', '').trim(),
message: msg.querySelector('.copyable-text.selectable-text').textContent,
r_name: msg.querySelector('._2a1Yw').textContent,
r_message: msg.querySelector('.quoted-mention').textContent,
}
} else {
console.log('message', msg)
// message .Tkt2p
m = {
name: msg.querySelector('.copyable-text').getAttribute('data-pre-plain-text').split('] ')[1].replace(':', '').trim(),
message: msg.querySelector('.copyable-text').textContent,
}
}
// TODO message - function getText() bauen, welche statt textContent innerHTML nimmt und emojis im text verarbeitet & integriert
messages.push({
meta: meta ? meta : null,
content: m ? m : null,
});
})
return messages;
}
function test() {
let x = getMessages();
console.log(x.length, 'messages', x);
console.table(x.find(m => m.meta.type === 'message'))
console.table(x.find(m => m.meta.type === 'response'))
console.table(x.find(m => m.meta.type === 'gif'))
console.table(x.find(m => m.meta.type === 'link'))
}
test()

2
index.js Normal file
View file

@ -0,0 +1,2 @@
// TODO export functions
// TODO build module