mirror of
https://github.com/vishalxl/nostr_console.git
synced 2025-07-03 20:11:01 +02:00
processed kind 0 events to populate a global name map, which is used to print user names. formatting changes too.
This commit is contained in:
@ -10,77 +10,83 @@ var userPublickey = "3235036bd0957dfb27ccda02d452d7c763be40c91a1ac082ba6983b2
|
|||||||
|
|
||||||
const request = "request";
|
const request = "request";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void printEventsAsTree(events) {
|
void printEventsAsTree(events) {
|
||||||
if( events.length == 0) {
|
events.forEach( (x) => getNames(x));
|
||||||
print("events length = 0");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
events.removeWhere( (item) => item.eventData.kind != 1 );
|
|
||||||
// remove duplicate events
|
|
||||||
final ids = Set();
|
|
||||||
events.retainWhere((x) => ids.add(x.eventData.id));
|
|
||||||
|
|
||||||
// create tree from events
|
if( events.length == 0) {
|
||||||
Tree node = Tree.fromEvents(events);
|
print("events length = 0");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
events.removeWhere( (item) => item.eventData.kind != 1 );
|
||||||
|
// remove duplicate events
|
||||||
|
final ids = Set();
|
||||||
|
events.retainWhere((x) => ids.add(x.eventData.id));
|
||||||
|
|
||||||
// print all the events in tree form
|
// create tree from events
|
||||||
node.printTree(0, true);
|
Tree node = Tree.fromEvents(events);
|
||||||
|
|
||||||
print('\nnumber of all events: ${events.length}');
|
// print all the events in tree form
|
||||||
|
node.printTree(0, true);
|
||||||
|
|
||||||
|
print('\nnumber of all events: ${events.length}');
|
||||||
|
print("number or names kind 0: ${gKindONames.length}");
|
||||||
|
|
||||||
|
//print(gKindONames);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> main(List<String> arguments) async {
|
Future<void> main(List<String> arguments) async {
|
||||||
List<Event> events = [];
|
List<Event> events = [];
|
||||||
int numEvents = 6;
|
int numEvents = 6;
|
||||||
|
|
||||||
final parser = ArgParser()..addOption(request, abbr: 'r');
|
final parser = ArgParser()..addOption(request, abbr: 'r');
|
||||||
ArgResults argResults = parser.parse(arguments);
|
ArgResults argResults = parser.parse(arguments);
|
||||||
|
|
||||||
if( argResults[request] != null) {
|
if( argResults[request] != null) {
|
||||||
stdout.write("got argument request ${argResults[request]}");
|
stdout.write("got argument request ${argResults[request]}");
|
||||||
sendRequest("wss://nostr-pub.wellorder.net", argResults[request], events);
|
sendRequest("wss://nostr-pub.wellorder.net", argResults[request], events);
|
||||||
Future.delayed(const Duration(milliseconds: 6000), () {
|
Future.delayed(const Duration(milliseconds: 6000), () {
|
||||||
printEventsAsTree(events);
|
printEventsAsTree(events);
|
||||||
exit(0);
|
exit(0);
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// the default in case no arguments are given is:
|
|
||||||
// get a user's events, then from its type 3 event, gets events of its follows,
|
|
||||||
// then get the events of user-id's mentioned in p-tags of received events
|
|
||||||
// then display them all
|
|
||||||
getUserEvents(defaultServerUrl, userPublickey, events, numEvents);
|
|
||||||
|
|
||||||
print('waiting for user events to come in');
|
|
||||||
Future.delayed(const Duration(milliseconds: 2000), () {
|
|
||||||
|
|
||||||
for( int i = 0; i < events.length; i++) {
|
|
||||||
var e = events[i];
|
|
||||||
if( e.eventData.kind == 3) {
|
|
||||||
print('calling getfeed');
|
|
||||||
getFeed(e.eventData.contactList, events, 20);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
print('waiting for feed to come in');
|
|
||||||
Future.delayed(const Duration(milliseconds: 4000), () {
|
|
||||||
|
|
||||||
print('====================all events =================');
|
// the default in case no arguments are given is:
|
||||||
|
// get a user's events, then from its type 3 event, gets events of its follows,
|
||||||
|
// then get the events of user-id's mentioned in p-tags of received events
|
||||||
|
// then display them all
|
||||||
|
getUserEvents(defaultServerUrl, userPublickey, events, numEvents);
|
||||||
|
|
||||||
List<String> pTags = getpTags(events);
|
print('waiting for user events to come in');
|
||||||
print("Total number of pTags = ${pTags.length}\n");
|
Future.delayed(const Duration(milliseconds: 2000), () {
|
||||||
|
|
||||||
for(int i = 0; i < pTags.length; i++) {
|
for( int i = 0; i < events.length; i++) {
|
||||||
getUserEvents( defaultServerUrl, pTags[i], events, 10);
|
var e = events[i];
|
||||||
|
if( e.eventData.kind == 3) {
|
||||||
|
print('calling getfeed');
|
||||||
|
getFeed(e.eventData.contactList, events, 20);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print('waiting for feed to come in');
|
||||||
Future.delayed(const Duration(milliseconds: 4000), () {
|
Future.delayed(const Duration(milliseconds: 4000), () {
|
||||||
printEventsAsTree(events);
|
|
||||||
exit(0);
|
print('====================all events =================');
|
||||||
|
|
||||||
|
List<String> pTags = getpTags(events);
|
||||||
|
print("Total number of pTags = ${pTags.length}\n");
|
||||||
|
|
||||||
|
for(int i = 0; i < pTags.length; i++) {
|
||||||
|
getUserEvents( defaultServerUrl, pTags[i], events, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future.delayed(const Duration(milliseconds: 4000), () {
|
||||||
|
printEventsAsTree(events);
|
||||||
|
exit(0);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
@ -9,6 +9,30 @@ const int spacesPerDepth = 8;
|
|||||||
int keyLenPrinted = 6;
|
int keyLenPrinted = 6;
|
||||||
String defaultServerUrl = 'wss://nostr.onsats.org';
|
String defaultServerUrl = 'wss://nostr.onsats.org';
|
||||||
|
|
||||||
|
Map<String, String> gKindONames = {};
|
||||||
|
|
||||||
|
void getNames(Event e) {
|
||||||
|
print("In getNames: for event content: ${e.eventData.content}");
|
||||||
|
//e.printEvent(0);
|
||||||
|
if( e.eventData.kind == 0) {
|
||||||
|
String name = "";
|
||||||
|
String content = e.eventData.content;
|
||||||
|
if( content.isEmpty) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dynamic json = jsonDecode(content);
|
||||||
|
|
||||||
|
gKindONames[e.eventData.pubkey] = json["name"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String getAuthorName(String pubkey) {
|
||||||
|
String max3(String v) => v.length > 3? v.substring(0,3) : v.substring(0, v.length);
|
||||||
|
String name = max3(pubkey);
|
||||||
|
name = gKindONames[pubkey]??name;
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
void printDepth(int d) {
|
void printDepth(int d) {
|
||||||
if( d == 0) {
|
if( d == 0) {
|
||||||
return;
|
return;
|
||||||
@ -148,15 +172,16 @@ class EventData {
|
|||||||
print("debug: createdAt == 0 for event $content");
|
print("debug: createdAt == 0 for event $content");
|
||||||
}
|
}
|
||||||
|
|
||||||
content = rightShiftContent(content, spacesPerDepth * depth + 10);
|
String contentShifted = rightShiftContent(content, spacesPerDepth * depth + 10);
|
||||||
void printGreen(String s) => stdout.write("\x1B[32m$s\x1B[0m");
|
void printGreen(String s) => stdout.write("\x1B[32m$s\x1B[0m");
|
||||||
printDepth(depth);
|
printDepth(depth);
|
||||||
stdout.write("+-------+-------------\n");
|
stdout.write("+-------+-------------\n");
|
||||||
printDepth(depth);
|
printDepth(depth);
|
||||||
stdout.write("|Message: ");
|
stdout.write("|Message: ");
|
||||||
printGreen("$content\n");
|
printGreen("$contentShifted\n");
|
||||||
printDepth(depth);
|
printDepth(depth);
|
||||||
stdout.write("|Author : ${max3(pubkey)}\n");
|
String name = getAuthorName(pubkey);
|
||||||
|
stdout.write("|Author : $name\n");
|
||||||
printDepth(depth);
|
printDepth(depth);
|
||||||
stdout.write("|\n");
|
stdout.write("|\n");
|
||||||
printDepth(depth);
|
printDepth(depth);
|
||||||
@ -330,7 +355,20 @@ void printEvents(List<Event> events) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* reply/root example for e tag
|
/*
|
||||||
|
kind 0 event
|
||||||
|
{
|
||||||
|
"id": "63de3e2fe397fedef9d8f1937e8c7f73727bd6410d2e7578eb348d4ee059feaf",
|
||||||
|
"pubkey": "004db7605cfeba09b15625deb77c9369029f370591d68231b7c4dfd43f8f6f4f",
|
||||||
|
"created_at": 1659944329,
|
||||||
|
"kind": 0,
|
||||||
|
"tags": [],
|
||||||
|
"content": "{\"name\":\"IrredeemablePussy@minds.com\",\"about\":\"\",\"picture\":\"https://www.minds.com/icon/742483671239368719/medium/1502397901/1659944329/1659944329\"}",
|
||||||
|
"sig": "c500f7f8e27c3d1a41ed196931f66253cdd42dbb1e53b15fd1916da5c261b4d0e06d0008b39016775b3be56e6397c8d747d98174106f04c5874650fbe9d930b0"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
reply/root example for e tag
|
||||||
{
|
{
|
||||||
"id": "4019debf44a087b973b7d8776e7ce74ee84a15e9c3dbed0b60dfdec23d170911",
|
"id": "4019debf44a087b973b7d8776e7ce74ee84a15e9c3dbed0b60dfdec23d170911",
|
||||||
"pubkey": "2ef93f01cd2493e04235a6b87b10d3c4a74e2a7eb7c3caf168268f6af73314b5",
|
"pubkey": "2ef93f01cd2493e04235a6b87b10d3c4a74e2a7eb7c3caf168268f6af73314b5",
|
||||||
|
Reference in New Issue
Block a user