增加一些铭文数据的爬取

This commit is contained in:
CounterFire2023 2024-04-07 14:52:35 +08:00
parent 0ddb3a0720
commit 9e1ada1e7c
4 changed files with 134 additions and 7 deletions

View File

@ -1,8 +1,7 @@
[
{
"chain": 421614,
"rpc": "https://arb-sepolia.g.alchemy.com/v2/EKR1je8ZGia332kkemNc4mtXQuFskIq3",
"fromBlock": 26760154,
"chain": 5611,
"fromBlock": 25594195,
"filters": [{
"key": "input",
"op": "eq",
@ -17,9 +16,8 @@
"dataModel": "CheckIn"
},
{
"chain": 421614,
"rpc": "https://arb-sepolia.g.alchemy.com/v2/EKR1je8ZGia332kkemNc4mtXQuFskIq3",
"fromBlock": 26760154,
"chain": 5611,
"fromBlock": 25594195,
"filters": [{
"key": "input",
"op": "like",
@ -32,5 +30,53 @@
"value": "0x50a8e60041a206acaa5f844a1104896224be6f39"
}],
"dataModel": "ChestRecord"
},
{
"chain": 5611,
"fromBlock": 25594195,
"filters": [{
"key": "input",
"op": "like",
"type": "regex",
"value": "data:,{\"p\":\"cf-20\",\"op\":\"task_claim\",\"val\":\"(.+?)\"}"
},{
"key": "to",
"op": "eq",
"type": "address",
"value": "0x50a8e60041a206acaa5f844a1104896224be6f39"
}],
"dataModel": "GenernalScription"
},
{
"chain": 5611,
"fromBlock": 25594195,
"filters": [{
"key": "input",
"op": "like",
"type": "regex",
"value": "data:,{\"p\":\"cf-20\",\"op\":\"explore\",\"val\":\"(.+?)\"}"
},{
"key": "to",
"op": "eq",
"type": "address",
"value": "0x50a8e60041a206acaa5f844a1104896224be6f39"
}],
"dataModel": "GenernalScription"
},
{
"chain": 5611,
"fromBlock": 25594195,
"filters": [{
"key": "input",
"op": "like",
"type": "regex",
"value": "data:,{\"p\":\"cf-20\",\"op\":\"chest_enhance\",\"val\":\"(.+?)\"}"
},{
"key": "to",
"op": "eq",
"type": "address",
"value": "0x50a8e60041a206acaa5f844a1104896224be6f39"
}],
"dataModel": "GenernalScription"
}
]

View File

@ -301,6 +301,22 @@ export const AllChains: IChain[] = [
symbol: 'ONE',
explorerurl: 'https://explorer.harmony.one',
},
{
name: 'opBNB Mainnet',
type: 'Mainnet',
rpc: 'https://opbnb-rpc.publicnode.com',
id: 204,
symbol: 'BNB',
explorerurl: 'https://mainnet.opbnbscan.com',
},
{
name: 'opBNB Testnet',
type: 'Testnet',
rpc: 'https://opbnb-testnet-rpc.bnbchain.org',
id: 5611,
symbol: 'tBNB',
explorerurl: 'https://opbnb-testnet.bscscan.com',
},
{
name: 'Local Testnet',
type: 'Local',

View File

@ -0,0 +1,63 @@
import { getModelForClass, index, modelOptions, prop } from '@typegoose/typegoose'
import { dbconn } from 'decorators/dbconn'
import { BaseModule } from './Base'
import { hexToUtf8 } from 'zutils/utils/string.util'
import logger from 'logger/logger'
@dbconn()
@index({ from: 1 }, { unique: false })
@index({ hash: 1 }, { unique: true })
@index({ from: 1, blockTime: 1 }, { unique: false })
@modelOptions({
schemaOptions: { collection: 'general_scription_record', timestamps: true },
})
export class GeneralScriptionClass extends BaseModule {
@prop({ required: true })
public from!: string
@prop()
public to: string
@prop({ required: true })
public hash: string
@prop()
public blockNumber: string
@prop()
public blockHash: string
@prop()
public blockTime: number
@prop()
public dateTag: string
@prop()
public data: string
@prop()
public op: string
@prop()
public value: string
@prop()
public input: string
public static async saveEvent(event: any) {
const dataStr = hexToUtf8(event.input)
const regexp = /data:,{\"p\":\"cf-20\",\"op\":\"(.+?)\",\"val\":\"(.+?)\"}/
const match = dataStr.match(regexp)
if (!match) {
logger.log('not a general scription:', event.hash)
return
}
event.op = match[1]
event.data = match[2]
logger.log('general scription with op:', event.op, ' data:', event.data)
return GeneralScription.insertOrUpdate({ hash: event.hash }, event)
}
public toJson() {
return {
address: this.from,
day: this.dateTag,
time: this.blockTime,
}
}
}
export const GeneralScription = getModelForClass(GeneralScriptionClass, {
existingConnection: GeneralScriptionClass['db'],
})

View File

@ -13,6 +13,7 @@ import { CheckIn } from 'models/CheckIn'
import { ZRedisClient } from 'zutils'
import { hexToUtf8 } from 'zutils/utils/string.util'
import { ChestRecord } from 'models/ChestRecord'
import { GeneralScription } from 'models/GeneralScription'
let svrs: any[] = []
let lock = false
@ -20,6 +21,7 @@ let lock = false
let eventProcessers = {
CheckIn: CheckIn,
ChestRecord: ChestRecord,
GenernalScription: GeneralScription,
}
global.hexToUtf8 = hexToUtf8
@ -79,6 +81,6 @@ async function parseAllEvents() {
await initEventSvrs()
setInterval(function () {
parseAllEvents()
}, 6000)
}, 3000)
parseAllEvents()
})()