share.py 1021 B

123456789101112131415161718192021222324252627282930
  1. import sys
  2. import typing
  3. import httpx
  4. def main():
  5. jwt,= sys.argv[1:]
  6. client = httpx.Client(headers={'Authorization': 'Bearer ' + jwt})
  7. plans: typing.Sequence[Plan] = client.get('https://api.prunplanner.org/baseplanner/').raise_for_status().json()
  8. shared: typing.Mapping[str, str] = {s['plan_uuid']: s['shared_uuid']
  9. for s in client.get('https://api.prunplanner.org/shared/list').raise_for_status().json()}
  10. for plan in plans:
  11. if plan['uuid'] not in shared:
  12. print('sharing', plan['uuid'], plan['name'])
  13. client.put('https://api.prunplanner.org/shared/baseplanner/' + plan['uuid']).raise_for_status()
  14. # refresh shared UUIDs
  15. shared: typing.Mapping[str, str] = {s['plan_uuid']: s['shared_uuid']
  16. for s in client.get('https://api.prunplanner.org/shared/list').raise_for_status().json()}
  17. for plan in plans:
  18. shared_uuid = shared[plan['uuid']]
  19. print(plan['name'], 'https://prunplanner.org/shared/' + shared_uuid)
  20. class Plan(typing.TypedDict):
  21. uuid: str
  22. name: str
  23. if __name__ == '__main__':
  24. main()