[notes][spam] pursuing dgit/gitopia

Undiscussed Horrific Abuse, One Victim of Many gmkarl at gmail.com
Tue Feb 15 02:56:33 PST 2022


# This is where I am right now.
# It shows tx ids, in theory, didn't find one on a block explorer, but
not commit hashes.
# This sourcefile is in https://github.com/xloem/gitlakepy under
scripts/git-remote-arweave
# This content is commit 67efbad6b03ed7a0ad53fac83a79d5b845ba177b

#!/usr/bin/env python3

import json
import requests

GRAPHQL_URI='https://arweave.net/graphql'

def get_page(uri, Type, cursor=''):
	resp = requests.post(uri,
		json={'query':'''
			query {
				transactions(
					tags: [
						{ name: "Type", values: [''' + json.dumps(Type) + '''] }
					]
					after: ''' + json.dumps(cursor) + '''
				) {
					edges {
						node {
							id
							owner {
								address
							}
							tags {
								name
								value
							}
						}
						cursor
					}
				}
			}
		'''}
	)
	cursor = None
	data = resp.json()
	if 'data' not in data:
		raise Exception(data)
	edges = data['data']['transactions']['edges']
	if len(edges):
		cursor = edges[-1]['cursor']
	objects = [
		dict(
			txid = node['id'],
			owner = node['owner']['address'],
			tags = {tag['name']: tag['value'] for tag in node['tags']}
		)
		for node in (edge['node'] for edge in edges)
	]
	return objects, cursor

def yield_all(uri, Type):
	cursor = None
	while True:
		objs, cursor = get_page(uri, Type, cursor = cursor)
		if not len(objs):
			break
		yield from objs


for obj in yield_all(GRAPHQL_URI, 'update-ref'):
	print(obj)

raise Exception('===> This is just a prototype to show git updates
from arweave. <===')


More information about the cypherpunks mailing list