繁体   English   中英

如何在mega.py中保存登录Session?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM