PythonでMegaを使用しオンラインストレージにファイルをアップロードしてみます。
MegaはMega.co.nz(オンラインストレージサービス)のAPI用のライブラリです。Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。
なお、Mega.co.nz(オンラインストレージサービス)を利用するためには、事前にアカウントを取得する必要があります。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■Megaをインストールする
Megaをインストールを行いますが、今回はpipを経由してインストールを行うので、まずWindowsのコマンドプロンプトを起動します。
pip install mega.py
起動後、上記のコマンドを入力し、Enterキーを押します。
なお、今回は、pythonランチャーを使用しており、Python Version 3.8.5にインストールを行うために、pipを使う場合にはコマンドでの切り替えを行います。
py -3.8 -m pip install mega.py
切り替えるために、上記のコマンドを入力し、Enterキーを押します。
Defaulting to user installation because normal site-packages is not writeable Collecting mega.py Downloading mega.py-1.0.8-py2.py3-none-any.whl (19 kB) Collecting tenacity<6.0.0,>=5.1.5 Downloading tenacity-5.1.5-py2.py3-none-any.whl (34 kB) Collecting pathlib==1.0.1 Downloading pathlib-1.0.1.tar.gz (49 kB) |████████████████████████████████| 49 kB 1.5 MB/s Collecting pycryptodome<4.0.0,>=3.9.6 Downloading pycryptodome-3.10.1-cp35-abi3-win_amd64.whl (1.6 MB) |████████████████████████████████| 1.6 MB 1.6 MB/s Requirement already satisfied: requests>=0.10 in c:\users\user_\appdata\roaming\python\python38\site-packages (from mega.py) (2.25.1) Requirement already satisfied: six>=1.9.0 in c:\users\user_\appdata\roaming\python\python38\site-packages (from tenacity<6.0.0,>=5.1.5->mega.py) (1.16.0) Requirement already satisfied: idna<3,>=2.5 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests>=0.10->mega.py) (2.10) Requirement already satisfied: chardet<5,>=3.0.2 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests>=0.10->mega.py) (4.0.0) Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests>=0.10->mega.py) (1.26.5) Requirement already satisfied: certifi>=2017.4.17 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests>=0.10->mega.py) (2021.5.30) Using legacy setup.py install for pathlib, since package 'wheel' is not installed. Installing collected packages: tenacity, pathlib, pycryptodome, mega.py Running setup.py install for pathlib ... done Successfully installed mega.py-1.0.8 pathlib-1.0.1 pycryptodome-3.10.1 tenacity-5.1.5
Enterキーを押すと、インストールが開始され、上記のように「Successfully installed」と表示されます。これが表示されれば、Megaが正常にインストールされたことになります。
なお、今回はMegaのバージョン1.0.8をインストールしました。
■Megaのユーザー(アカウント)の詳細を取得する
インストール後、まずはMegaのユーザー(アカウント)の詳細を取得するスクリプトを書いていきます。
■コード
from mega import Mega mega = Mega() email = "メールアドレス" password = "パスワード" m = mega.login(email,password) details = m.get_user() print(details)
インポートでMegaモジュールを呼び出します。次にmegaという変数を作成し、Mega.pyのインスタンスを作成します。その後、email,passwordという変数を作成し、Megaのログイン情報(メールアドレスとパスワード)をそれぞれ入力し、格納します。
格納後、mという変数を作成し、その中でmega.login()関数を使用します。mega.login()関数の括弧内の第1の引数,パラメータに、email変数を渡します。第2の引数,パラメータに、password変数を渡します。これでログインを行います。
その後、detailsという変数を作成し、その中でget_user()関数を使用します。これでユーザー(アカウント)の詳細を取得します。
取得した情報をprint()関数で出力します。
■実行
このスクリプトを「uploadfiles_storage.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行してみると、ユーザー(アカウント)の詳細情報が出力されました。
■Megaを使用しオンラインストレージにファイルをアップロード
次に、Megaを使用しオンラインストレージにファイルをアップロードするスクリプトを書いていきます。
■コード
from mega import Mega mega = Mega() email = "メールアドレス" password = "パスワード" m = mega.login(email,password) file = m.upload(r"C:\Users\user_\test\test.xlsx") print(m.get_upload_link(file))
オンラインストレージにファイルをアップロードするためには、mという変数を作成し、その中でmega.login()関数を使用します。mega.login()関数の括弧内の第1の引数,パラメータに、email変数を渡します。第2の引数,パラメータに、password変数を渡します。これでログインを行います。
その後、fileという変数を作成し、その中でupload()関数を使用します。upload()関数の括弧内には、引数,パラメーターとして、アップロードするファイルの名前と場所を渡します。渡した後、格納。これでアップロードができます。
最後に、get_upload_link()関数を使用します。get_upload_link()関数の括弧内には、file変数を渡します。これでアップロードした後にパブリックリンク(共有リンク)を取得することができます。
取得したパブリックリンク(共有リンク)をprint()関数で出力してみます。
なお、今回アップロードするファイルは「test.xlsx」です。ファイルが置かれている場所は「C:\Users\user_\test(フォルダパス)」です。
■実行
先ほどの「uploadfiles_storage.py」のスクリプトを変更し、コマンドプロンプトから実行してみます。
実行してみると、ファイルがアップロードされ、パブリックリンク(共有リンク)が発行。発行されたパブリックリンク(共有リンク)を出力させることができました。
アップロードするファイルによっては、アップロードに時間がかかる場合があります。
アップロード後、MEGA(https://mega.nz/)にログインし、実際にアップロードされたか確認しましたが、今回指定したファイルがアップロードされていることが確認できました。
コメント