__filename__ = "migrate.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" __version__ = "1.1.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" import os def migrateFollows(followFilename: str,oldHandle: str,newHandle: str) -> None: """Changes a handle within following or followers list """ if not os.path.isfile(followFilename): return if oldHandle not in open(followFilename).read(): return followData=None with open(followFilename, 'r') as followFile: followData=followFile.read() if not followData: return newFollowData=followData.replace(oldHandle,newHandle) if followData==newFollowData: return with open(followFilename, 'w') as followFile: followFile.write(newFollowData) def migrateAccount(baseDir: str,oldHandle: str,newHandle: str) -> None: """If a followed account changes then this modifies the following and followers lists for each account accordingly """ if oldHandle.startswith('@'): oldHandle=oldHandle[1:] if '@' not in oldHandle: return if newHandle.startswith('@'): ewHandle=newHandle[1:] if '@' not in newHandle: return # update followers and following lists for each account for subdir, dirs, files in os.walk(baseDir+'/accounts'): for handle in dirs: if '@' in handle: accountDir=baseDir+'/accounts/'+handle followFilename=accountDir+'/following.txt' migrateFollows(followFilename,oldHandle,newHandle) followFilename=accountDir+'/followers.txt' migrateFollows(followFilename,oldHandle,newHandle)