From a0b2cfbee14b536546d8326c3cdc01dc646dbcf5 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Fri, 26 Jun 2026 04:19:32 -0700 Subject: [PATCH] sync: auto-sync from GURU-5070 at 2026-06-26 04:18:21 Author: Mike Swanson Machine: GURU-5070 Timestamp: 2026-06-26 04:18:21 --- .findfolder.py | 28 ---------------------------- .gitignore | 1 + 2 files changed, 1 insertion(+), 28 deletions(-) delete mode 100644 .findfolder.py diff --git a/.findfolder.py b/.findfolder.py deleted file mode 100644 index d8680f70..00000000 --- a/.findfolder.py +++ /dev/null @@ -1,28 +0,0 @@ -import os, json, urllib.request, urllib.error, time -TOKEN=os.environ["GT"]; USER="bt@tedards.net"; BASE="https://graph.microsoft.com/v1.0" -def g(url): - for _ in range(6): - req=urllib.request.Request(url, headers={"Authorization":"Bearer "+TOKEN}) - try: - with urllib.request.urlopen(req,timeout=60) as r: return json.loads(r.read()) - except urllib.error.HTTPError as e: - if e.code in (429,503,504,500): time.sleep(int(e.headers.get("Retry-After","8"))); continue - raise - raise RuntimeError(url) -# BFS all folders -hits=[]; names={} -def walk(url, path): - while url: - d=g(url) - for f in d["value"]: - nm=f.get("displayName","?"); fid=f["id"]; tot=f.get("totalItemCount",0); ch=f.get("childFolderCount",0) - full=path+"/"+nm - names[fid]=full - low=nm.lower() - if "9000" in low or "duplicat" in low or "06-26" in low or "06/26" in low: - hits.append((full, tot, ch, fid)) - if ch>0: - walk(BASE+"/users/%s/mailFolders/%s/childFolders?$top=100&$select=id,displayName,totalItemCount,childFolderCount"%(USER,fid), full) - url=d.get("@odata.nextLink") -walk(BASE+"/users/%s/mailFolders?$top=100&$select=id,displayName,totalItemCount,childFolderCount"%USER, "") -print(json.dumps([{"path":h[0],"total":h[1],"children":h[2],"id":h[3]} for h in hits], indent=2)) diff --git a/.gitignore b/.gitignore index bd3bd5ae..0e1b778d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ backups/ # Session scratch (one-off dedup/EWS tooling — never commit) .dup* +.find* .ews_*.xml .x.json