Arweave-Auto-Manifest-Update - Version 1a

Arweave Auto-Manifest Update from Simplified Privacy, Arweave name: Privacy

First you're updating the Arweave folders and Arweave wallet.  Then you're either using our default "zenaku" or changing the folder on your local PC that you're uploading.  Then running the Linux script from INSIDE the folder, with your WALLET OUTSIDE THE FOLDER.  DO NOT UPLOAD YOUR WALLET
This commit is contained in:
Support 2024-09-20 21:15:52 +00:00
commit 5eb52d4add
2 changed files with 150 additions and 0 deletions

8
script.sh Normal file
View file

@ -0,0 +1,8 @@
for i in *; do ardrive upload-file --local-path "$i" --parent-folder-id "000000-insert-your-folder-000000" -w ~/path/to/your/wallet.json; done > rawupload1.txt
python3 path/to/python/simple.py rawupload1.txt zenaku/ output.json
ardrive upload-file --content-type "application/x.arweave-manifest+json" --local-path output-html.json --parent-folder-id "000000-insert-your-folder-000000" -w ~/path/to/your/wallet > output2.txt
ardrive upload-file --content-type "application/x.arweave-manifest+json" --local-path output-xml.json --parent-folder-id "000000-insert-your-folder-000000" -w ~/path/to/your/wallet > output3.txt

142
simple.py Normal file
View file

@ -0,0 +1,142 @@
import re
import json
import shutil
import argparse
import os
def main():
parser = argparse.ArgumentParser(description='Procesar archivos JSON a partir de un archivo de entrada.')
parser.add_argument('input_file', type=str, help='Ruta al archivo de entrada (.txt)')
parser.add_argument('folder', type=str, help='Nombre del directorio para eliminar del URI')
parser.add_argument('output_file', type=str, help='Nombre del archivo de salida (.json)')
args = parser.parse_args()
input_file = args.input_file
folder = args.folder
output_file = args.output_file
if step_1(input_file):
new_data = step_2(input_file, folder)
update_json(output_file, new_data)
create_output_copies(output_file) # Crear copias del archivo JSON
def step_1(file_path):
return file_path.endswith('.txt') or print("Archive is not txt, please contact support.")
def folder_guide(source_uri, folder):
return source_uri.split(folder, 1)[1] if folder in source_uri else source_uri
def step_2(file_path, folder):
with open(file_path, 'r') as file:
content = file.read()
pattern = r'\{[^{}]*"sourceUri"[^{}]*"dataTxId"[^{}]*|[^{}]*"dataTxId"[^{}]*"sourceUri"[^{}]*\}'
data = {}
for match in re.findall(pattern, content):
source_uri_match = re.search(r'"sourceUri"\s*:\s*"([^"]*)"', match)
data_tx_id_match = re.search(r'"dataTxId"\s*:\s*"([^"]*)"', match)
if source_uri_match and data_tx_id_match:
source_uri = folder_guide(source_uri_match.group(1), folder)
data[source_uri] = {'id': data_tx_id_match.group(1)}
print(f'Number of valid pairs found: {len(data)}')
return data
def update_json(output_file, new_data):
try:
with open(output_file, 'r') as file:
existing_data = json.load(file)
print(f'Successfully loaded {output_file}')
except FileNotFoundError:
print(f'File {output_file} not found. Creating a new one.')
existing_data = {
"manifest": "arweave/paths",
"version": "0.1.0",
"index": {
"path": "index.html"
},
"paths": {}
}
except json.JSONDecodeError:
print(f'Error in decoding JSON from {output_file}. Creating a new one.')
existing_data = {
"manifest": "arweave/paths",
"version": "0.1.0",
"index": {
"path": "index.html"
},
"paths": {}
}
index_keys = ['index.html', 'index.xml']
for key in index_keys:
if key in new_data:
existing_data['paths'][key] = new_data.pop(key)
existing_data['paths'].update(new_data)
with open(output_file, 'w') as file:
json.dump(existing_data, file, indent=4)
print(f'Updated JSON file: {output_file}')
def create_output_copies(output_file):
base_name, ext = os.path.splitext(output_file)
html_copy = f'{base_name}-html{ext}'
xml_copy = f'{base_name}-xml{ext}'
try:
shutil.copy(output_file, html_copy)
print(f'Successfully copied {output_file} to {html_copy}')
except FileNotFoundError:
print(f'Error: {output_file} not found. Could not copy to {html_copy}.')
return
except Exception as e:
print(f'Error copying {output_file} to {html_copy}: {e}')
return
try:
shutil.copy(output_file, xml_copy)
print(f'Successfully copied {output_file} to {xml_copy}')
except FileNotFoundError:
print(f'Error: {output_file} not found. Could not copy to {xml_copy}.')
return
except Exception as e:
print(f'Error copying {output_file} to {xml_copy}: {e}')
return
try:
with open(xml_copy, 'r') as file:
data = json.load(file)
print(f'Successfully loaded {xml_copy} for modification.')
except FileNotFoundError:
print(f'Error: {xml_copy} not found. Could not modify.')
return
except json.JSONDecodeError:
print(f'Error: {xml_copy} contains invalid JSON. Could not modify.')
return
except Exception as e:
print(f'Error reading {xml_copy}: {e}')
return
if 'index' in data and 'path' in data['index']:
if data['index']['path'] == 'index.html':
data['index']['path'] = 'index.xml'
print(f'Successfully changed "index.html" to "index.xml" in {xml_copy}.')
else:
print(f'No changes made to "index.html" in {xml_copy}. The path was not "index.html".')
else:
print(f'No "index" or "path" field found in {xml_copy}. No changes made.')
try:
with open(xml_copy, 'w') as file:
json.dump(data, file, indent=4)
print(f'Successfully saved changes to {xml_copy}.')
except Exception as e:
print(f'Error saving changes to {xml_copy}: {e}')
if __name__ == "__main__":
main()