2987个中文用户id(2023-05-11更新)

首先,以50个初始用户ID,通过AI提供的Python脚本,从rbr.bio爬到11万个关注者ID。

然后,以11万个关注者ID,利用rbr.bio里的用户元数据信息,通过AI提供的Python脚本,共筛选出2987个中文用户ID。

https://pic.abaiba.top/file/nostrpic/nostr_id_public_keys_china_users.txt

需要转码的,请移步:

https://8nostr.com/hex2npub/

后续的计划:

1、 以2987个中文用户ID作为初始用户ID,通过AI提供的Python脚本继续往下爬取关注者ID,看看能从rbr.bio爬到多少个关注者ID;

2、 利用2987个中文用户ID在rbr.bio里的中继数据信息,通过AI提供的Python脚本,找到六个及以上中文用户共同使用的中继列表清单(至于为什么是六个,参考六度空间理论,通过六个人你就能够认识任何一个陌生人,同理通过六个共用的中继,你就能够链接到任何一个陌生中文用户ID)。

https://blog.csdn.net/yiwaite/article/details/100520442

有关用户ID、关注者、中继的数据分析和利用,如果有更好的想法和建议,请在下面跟帖讨论。

Reply to this note

Please Login to reply.

Discussion

谢谢分享,若是能有方法从中再筛选出近期较活跃高质量值得关注的用户就好了。手动筛选有点累人。

lightning:cndx@btcdv.com 🐇ᥬ[🐕]᭄🌿

这个我直接就提议了,应该直接忽略低质量用户,比如没有用户名,没有头像,没有发言,没有横幅,没有nip5,没有闪电地址,没有转发或者评论互动。

前者做一个用户大目录,后者做一个中文版精选热门用户目录。为中文鸵鸟网络注入流量和用户粘性

#[3]​ 中继里是否可以获得活跃用户的信息,比如1周内有发文或回复?

当然可以,看该用户最后发布的事件的时间。

在哪里可以查询,是网页查询还是调用api?

Nostr协议,NIP01

是这样吗:

nostr:note1u47qte2yfspjkll7x42qylq2kqprc96r0hrq8u3cqp8esrpt5mfqknfx9g

哪里有NIP-01的api,需要自己搭建吗?

这个机器人瞎说的,你看下协议

哈哈,机器人特别擅长一本正经地胡说八道。

机器人一本正经地胡说八道,原来是一种功能。

nostr:note1zuxepz7wavdd3rl6evt8s0a55unzjgctc3979ge9tluvtdrxe34szljz5g

https://github.com/nostr-protocol/nips/blob/master/01.md

尝试使用 https://nostr.info/relayr/ 可以指定relays查询特定的公钥,返回的查询中“created_at”就是发帖子的时间戳。

AI编的脚本,已经能读到指定ID用户最近的帖子内容了

https://pic.abaiba.top/file/nostrpic/IMG_6626.MOV

from selenium import webdriver

from selenium.webdriver.common.by import By

import requests

import json

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.keys import Keys

import time

import re

def npub_to_live(driver, input_str):

# 添加显式等待,直到所需元素变得可见

wait = WebDriverWait(driver, 10)

# 等待直到 connectionState 元素的文本内容包含 "Connected"

connection_state = wait.until(

EC.visibility_of_element_located((By.ID, "connectionState"))

)

wait.until(

lambda _: "Connected" in connection_state.text

)

# 寻找hex输入框,并获取hex_key值

query_input = driver.find_element(By.ID, 'input')

query_input.clear()

query_input.send_keys(input_str)

# 点击 id 为 "send" 的按钮

send_button = driver.find_element(By.ID, 'send')

send_button.click()

time.sleep(1)

query_output = driver.find_element(By.ID, 'output')

query_output = query_output.get_attribute('value')

return query_output

def main():

with open(“nostr_id_public_keys_china_users.txt”, “r”) as f:

npub_keys = [line.strip() for line in f]

unique_followers = set()

# 创建WebDriver实例

driver = webdriver.Safari()

url = 'https://nostr.info/relayr/'

driver.get(url)

# 添加显式等待,直到所需元素变得可见

wait = WebDriverWait(driver, 10)

relay_input = wait.until(EC.visibility_of_element_located((By.ID, 'relay')))

# 寻找relay输入框,并设置relay_key值

relay_input.clear()

relay_input.send_keys("wss://offchain.pub", Keys.RETURN)

for npub_key in npub_keys:

input_str = f'["REQ","cn",{{"authors":["{npub_key}"],"kinds":[1],"limit":1}} ]'

query_output = npub_to_live(driver, input_str)

print(f"{npub_key} Processed: {query_output} ")

# 提取 created_at 时间戳

created_at_match = re.search('"created_at":(\d+)', query_output)

if created_at_match:

created_at = int(created_at_match.group(1))

# 计算当前时间戳和 created_at 的差值

current_timestamp = int(time.time())

time_difference = current_timestamp - created_at

# 判断是否在过去30天内

if time_difference < 30 * 24 * 60 * 60:

with open("nostr_crawler_live_zh_users_list.txt", "a") as f:

f.write(f"{npub_key}\n")

# 关闭WebDriver实例

driver.quit()

if name == “main”:

main()

很棒的工作,开源的社交网络就是这么便利。不过关注隐私的话,目前得自己保护好匿名性。