[英]How to Save Login Session in mega.py?
请问我怎样才能在超级帐户中保存我的登录名(保存会话)并重用它谢谢!
我的代码:
from mega import Mega
mega = Mega()
account = mega.login("here_email","here_passowrd")
print(account.get_files())
我需要再次登录而不使用 email 和密码再次可用吗?
所以可能是这样的? 从文本文件写入和读取,因此您不必每次都写入密码和/或 email
with open("email.txt", "r") as read_email :
email = read_email.read().strip()
with open("password.txt", "r") as read_password :
password = read_password.read().strip()
def save_info():
with open("email.txt", "w") as f :
f.write(input('Email: '))
with open("password.txt", "w") as f :
f.write(input('Password: '))
with open("email.txt", "r") as read_email :
email = read_email.read().strip()
with open("password.txt", "r") as read_password :
password = read_password.read().strip()
print('\nemail: ' + email, '\npassword: ' + password)
credentials = input(f'Email = {email} \npassword = {password}. \nEdit login credentials press Y. \nTo continue press N: ')
if credentials == 'y'.lower():
save_info()
else:
# something
print(email, password)
# something else
> 1st run:
> /home/PycharmProjects/pythonProject/venv/bin/python
> /home/PycharmProjects/pythonProject/LysAlarm/test.py Email = 123
> password = 4. Edit login credentials press Y. To continue press N: y
> Email: hei123@gmail.com Password: lololol1234
>
> email: hei123@gmail.com password: lololol1234
>
> Process finished with exit code 0
>
>
> 2nd run:
>
> /home/PycharmProjects/pythonProject/venv/bin/python
> /home/PycharmProjects/pythonProject/LysAlarm/test.py Email =
> hei123@gmail.com password = lololol1234. Edit login credentials
> press Y. To continue press N: n hei123@gmail.com lololol1234
>
> Process finished with exit code 0
您可以pickle
Mega 客户端 object,将其保存到文件中,稍后加载以继续使用相同的登录 session。
例子:
import pickle
import mega
SESSION_CACHE = 'mega_session.pickle'
MEGA_USER = 'person@example.com'
MEGA_PASSWORD = 'pAsSwOrD'
def get_mega_client():
"""
Load Mega session from filename and return the client.
If no session is available, return None.
"""
try:
with open(SESSION_CACHE, 'rb') as f:
mega_client = pickle.load(f)
# Quick call to trigger a RequestError if the session is expired
mega_client.get_quota()
print("Successfully loaded saved Mega session")
return mega_client
except FileNotFoundError:
print("No saved Mega session")
pass
except mega.errors.RequestError:
print("Saved Mega session was bad")
pass
# We didn't get a good client. Generate a new one, cache
# it in the file, and return it.
print("Generating new Mega login session")
mega_client = mega.Mega()
mega_client.login(MEGA_USER, MEGA_PASSWORD)
with open(SESSION_CACHE, 'wb') as f:
pickle.dump(mega_client, f)
return mega_client
if __name__ == '__main__':
mega_client = get_mega_client()
print("Your current storage is:")
print(mega_client.get_storage_space())
这带有pickle is insecure的常见警告,但在这种情况下应该没问题。 我怀疑 Mega 的资历会被武器化。 :)
我看到你为此提出了一个功能请求,但它似乎没有太多的爱。 如果 mega.py 作者能写一个 serialize() 方法就好了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.