diff --git a/migrate.py b/migrate.py new file mode 100644 index 00000000..ce3fc585 --- /dev/null +++ b/migrate.py @@ -0,0 +1,50 @@ +__filename__ = "migrate.py" +__author__ = "Bob Mottram" +__license__ = "AGPL3+" +__version__ = "1.0.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)