Skip to content

Instantly share code, notes, and snippets.

@guchimon99
Created November 14, 2018 05:35
Show Gist options
  • Select an option

  • Save guchimon99/09d6ce5e8358a5b35de3cb7925c7aed7 to your computer and use it in GitHub Desktop.

Select an option

Save guchimon99/09d6ce5e8358a5b35de3cb7925c7aed7 to your computer and use it in GitHub Desktop.
function sleep(ms) {
return new Promise((resolve) => setTimeout(() => resolve(), ms))
}
function getOldestMessageTimestamp() {
var d = (document.querySelector('.im_message_date_split_text')||{}).innerText
if (!d) {
var date = new Date()
d = date.getFullYear() + '/' + (date.getMonth()+1) + '/' + date.getDate()
}
var t = document.querySelector('.im_message_date_text').getAttribute('data-content')
return new Date(d + ' ' + t).getTime()
}
async function scrollToTime(timestamp) {
if (timestamp >= getOldestMessageTimestamp()) {
console.log('load completed')
return
}
var wrap = document.querySelector('.im_history_scrollable_wrap')
wrap.scrollTo(0,0)
await sleep(300)
return await scrollToTime(timestamp)
}
function generateAddressesListAsCSV(amount) {
var users = {}
Array.from(document.querySelectorAll('.im_message_wrap')).forEach(ele => {
if (!ele.querySelector('.im_message_text') || !ele.querySelector('.im_message_author')) return null
var address = (ele.querySelector('.im_message_text').innerText.match(/[a-zA-Z0-9]{35}/)||[])[0]
if (!address) return null
users[address] = [
address,
amount
]
})
var csv = Object.keys(users).map(address => {
row = users[address]
return row.join(',')
}).join('\n')
return csv
}
function downloadCsv(csv) {
var anchor = document.createElement('a')
var blob = new Blob([csv], { "type" : "text/plain" })
anchor.download = "address.csv"
anchor.href = URL.createObjectURL(blob)
document.body.appendChild(anchor)
anchor.click()
}
(async function main() {
try {
var date = new Date('2018-11-01 00:00:00')
var timestamp = date.getTime()
await scrollToTime(timestamp)
var csv = generateAddressesListAsCSV(100)
downloadCsv(csv)
} catch (error) {
console.error(error)
}
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment