增加一些铭文数据的爬取
This commit is contained in:
parent
0ddb3a0720
commit
9e1ada1e7c
@ -1,8 +1,7 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"chain": 421614,
|
"chain": 5611,
|
||||||
"rpc": "https://arb-sepolia.g.alchemy.com/v2/EKR1je8ZGia332kkemNc4mtXQuFskIq3",
|
"fromBlock": 25594195,
|
||||||
"fromBlock": 26760154,
|
|
||||||
"filters": [{
|
"filters": [{
|
||||||
"key": "input",
|
"key": "input",
|
||||||
"op": "eq",
|
"op": "eq",
|
||||||
@ -17,9 +16,8 @@
|
|||||||
"dataModel": "CheckIn"
|
"dataModel": "CheckIn"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"chain": 421614,
|
"chain": 5611,
|
||||||
"rpc": "https://arb-sepolia.g.alchemy.com/v2/EKR1je8ZGia332kkemNc4mtXQuFskIq3",
|
"fromBlock": 25594195,
|
||||||
"fromBlock": 26760154,
|
|
||||||
"filters": [{
|
"filters": [{
|
||||||
"key": "input",
|
"key": "input",
|
||||||
"op": "like",
|
"op": "like",
|
||||||
@ -32,5 +30,53 @@
|
|||||||
"value": "0x50a8e60041a206acaa5f844a1104896224be6f39"
|
"value": "0x50a8e60041a206acaa5f844a1104896224be6f39"
|
||||||
}],
|
}],
|
||||||
"dataModel": "ChestRecord"
|
"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"
|
||||||
}
|
}
|
||||||
]
|
]
|
@ -301,6 +301,22 @@ export const AllChains: IChain[] = [
|
|||||||
symbol: 'ONE',
|
symbol: 'ONE',
|
||||||
explorerurl: 'https://explorer.harmony.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',
|
name: 'Local Testnet',
|
||||||
type: 'Local',
|
type: 'Local',
|
||||||
|
63
src/models/GeneralScription.ts
Normal file
63
src/models/GeneralScription.ts
Normal 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'],
|
||||||
|
})
|
@ -13,6 +13,7 @@ import { CheckIn } from 'models/CheckIn'
|
|||||||
import { ZRedisClient } from 'zutils'
|
import { ZRedisClient } from 'zutils'
|
||||||
import { hexToUtf8 } from 'zutils/utils/string.util'
|
import { hexToUtf8 } from 'zutils/utils/string.util'
|
||||||
import { ChestRecord } from 'models/ChestRecord'
|
import { ChestRecord } from 'models/ChestRecord'
|
||||||
|
import { GeneralScription } from 'models/GeneralScription'
|
||||||
|
|
||||||
let svrs: any[] = []
|
let svrs: any[] = []
|
||||||
let lock = false
|
let lock = false
|
||||||
@ -20,6 +21,7 @@ let lock = false
|
|||||||
let eventProcessers = {
|
let eventProcessers = {
|
||||||
CheckIn: CheckIn,
|
CheckIn: CheckIn,
|
||||||
ChestRecord: ChestRecord,
|
ChestRecord: ChestRecord,
|
||||||
|
GenernalScription: GeneralScription,
|
||||||
}
|
}
|
||||||
|
|
||||||
global.hexToUtf8 = hexToUtf8
|
global.hexToUtf8 = hexToUtf8
|
||||||
@ -79,6 +81,6 @@ async function parseAllEvents() {
|
|||||||
await initEventSvrs()
|
await initEventSvrs()
|
||||||
setInterval(function () {
|
setInterval(function () {
|
||||||
parseAllEvents()
|
parseAllEvents()
|
||||||
}, 6000)
|
}, 3000)
|
||||||
parseAllEvents()
|
parseAllEvents()
|
||||||
})()
|
})()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user