grants.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import sys
  2. import httpx
  3. from config import config
  4. def main() -> None:
  5. (username,) = sys.argv[1:]
  6. params = {'username': username, 'status': 'TERMINATED', 'limit': 200, 'page': 1}
  7. while True:
  8. (data,) = httpx.get(f'https://api.punoted.net/v1/contracts/?username={username}&limit=200', params=params,
  9. headers={'X-Data-Token': config.punoted_api_key}).raise_for_status().json()
  10. data['Contracts'].sort(key=lambda c: c['DateEpochMs'])
  11. for contract in data['Contracts']:
  12. conditions = contract['Conditions']
  13. if len(conditions) != 2:
  14. continue
  15. payment = None
  16. if conditions[0]['Type'] == 'PAYMENT' and conditions[1]['Type'] == 'DELIVERY':
  17. payment, delivery = conditions
  18. if payment['Amount'] < 100000 or payment['Amount'] > 1000000 or delivery['Address'] != 'JY-313f (JY-313)':
  19. continue
  20. elif conditions[0]['Type'] == 'LOAN_PAYOUT' and conditions[1]['Type'] == 'LOAN_INSTALLMENT':
  21. payment, installment = conditions
  22. if payment['Amount'] < 100000 or payment['Amount'] > 1000000:
  23. continue
  24. if payment is not None and payment['Status'] == 'FULFILLED':
  25. print(f'{payment["Amount"]:9,} {payment["Currency"]}', contract['Status'], contract['Timestamp'],
  26. contract['PartnerCode'], contract['PartnerName'])
  27. if len(data['Contracts']) < 200:
  28. break
  29. params['page'] += 1
  30. if __name__ == '__main__':
  31. main()