From c990ed7fcbb85bc3973678e1f47b48e3b04ca869 Mon Sep 17 00:00:00 2001 From: Jay MOULIN Date: Thu, 1 Nov 2018 18:08:19 +0100 Subject: [PATCH] fixes #13 - Add device_id parameter (default iface by default) --- README.rst | 25 ++++++++------ downloader/README.rst | 11 ++++-- .../download.py | 24 ++++++++++--- downloader/setup.py | 4 +-- uploader/README.rst | 4 +-- .../uploader_daemon.py | 34 +++++++++++++------ uploader/setup.py | 2 +- 7 files changed, 69 insertions(+), 35 deletions(-) diff --git a/README.rst b/README.rst index c6340f8..a729b4e 100644 --- a/README.rst +++ b/README.rst @@ -91,16 +91,16 @@ It will *NOT* upload already existing files, *ONLY* new files while the daemon i [--uploader_id UPLOADER_ID] [-o] optional arguments: - -h, --help show this help message and exit - --directory DIRECTORY, -d DIRECTORY + -h, --help show this help message and exit + --directory DIRECTORY, -d DIRECTORY Music Folder to upload from (default: .) - --oauth OAUTH, -a OAUTH + --oauth OAUTH, -a OAUTH Path to oauth file (default: ~/oauth) - -r, --remove Remove files if present (default: False) - --uploader_id UPLOADER_ID, -u UPLOADER_ID + -r, --remove Remove files if present (default: False) + --uploader_id UPLOADER_ID, -u UPLOADER_ID Uploader identification (should be an uppercase MAC address) (default: ) - -o, --oneshot Upload folder and exit (default: False) + -o, --oneshot Upload folder and exit (default: False) Downloader ~~~~~~~~~~ @@ -112,11 +112,14 @@ This program will download all your uploaded musics from Google Music to a given usage: google-music-download [-h] [--directory DIRECTORY] [--oauth OAUTH] optional arguments: - -h, --help show this help message and exit - --directory DIRECTORY, -d DIRECTORY - Music Folder to download to (default: .) - --oauth OAUTH, -a OAUTH - Path to oauth file (default: ~/oauth) + -h, --help show this help message and exit + --directory DIRECTORY, -d DIRECTORY + Music Folder to download to (default: .) + --oauth OAUTH, -a OAUTH + Path to oauth file (default: ~/oauth) + --device_id DEVICE_ID, -i DEVICE_ID + Device identification (should be an uppercase MAC + address) (default: ) ===== diff --git a/downloader/README.rst b/downloader/README.rst index 9e87741..337a726 100644 --- a/downloader/README.rst +++ b/downloader/README.rst @@ -27,6 +27,8 @@ This work is based upon `Simon Weber's Google Music API ) ===== diff --git a/downloader/google_music_manager_downloader/download.py b/downloader/google_music_manager_downloader/download.py index 219ddae..754e919 100755 --- a/downloader/google_music_manager_downloader/download.py +++ b/downloader/google_music_manager_downloader/download.py @@ -1,18 +1,21 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -import sys, time, logging, os.path, argparse, os +import sys, time, logging, os.path, netifaces, argparse, os from gmusicapi import Musicmanager __all__ = ['download'] +__DEFAULT_IFACE__ = netifaces.gateways()['default'][netifaces.AF_INET][1] +__DEFAULT_MAC__ = netifaces.ifaddresses(__DEFAULT_IFACE__)[netifaces.AF_LINK][0]['addr'].upper() -def download(directory=".", oauth=os.environ['HOME'] + "/oauth"): + +def download(directory=".", oauth=os.environ['HOME'] + "/oauth", device_id=__DEFAULT_MAC__): logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) logger.info("Init Daemon - Press Ctrl+C to quit") api = Musicmanager() - if not api.login(oauth): + if not api.login(oauth, device_id): print("Error with oauth credentials") sys.exit(1) @@ -32,9 +35,20 @@ def download(directory=".", oauth=os.environ['HOME'] + "/oauth"): def main(): parser = argparse.ArgumentParser() parser.add_argument("--directory", '-d', default='.', help="Music Folder to download to (default: .)") - parser.add_argument("--oauth", '-a', default=os.environ['HOME'] + '/oauth', help="Path to oauth file (default: ~/oauth)") + parser.add_argument( + "--oauth", + '-a', + default=os.environ['HOME'] + '/oauth', + help="Path to oauth file (default: ~/oauth)" + ) + parser.add_argument( + "--device_id", + '-i', + default=__DEFAULT_MAC__, + help="Uploader identification (should be an uppercase MAC address) (default: )" + ) args = parser.parse_args() - download(args.directory, args.oauth) + download(args.directory, oauth=args.oauth, device_id=args.device_id) if __name__ == "__main__": diff --git a/downloader/setup.py b/downloader/setup.py index 4c882ba..c7480e9 100644 --- a/downloader/setup.py +++ b/downloader/setup.py @@ -3,7 +3,7 @@ from setuptools import setup, find_packages -__version__ = '1.1.0' +__version__ = '1.2.0' setup( name='google_music_manager_downloader', @@ -14,7 +14,7 @@ author_email="jaymoulin@gmail.com", description="Google MusicManager package to manage your music library to Google Music - Download module", long_description=open('README.rst').read(), - install_requires=["google_music_manager_auth"], + install_requires=["google_music_manager_auth", "netifaces"], include_package_data=True, url='http://github.com/jaymoulin/google-music-manager', classifiers=[ diff --git a/uploader/README.rst b/uploader/README.rst index 760d823..3d6fb1f 100644 --- a/uploader/README.rst +++ b/uploader/README.rst @@ -78,8 +78,8 @@ It will *NOT* upload already existing files, *ONLY* new files while the daemon i --oauth OAUTH, -a OAUTH Path to oauth file (default: ~/oauth) -r, --remove Remove files if present (default: False) - --uploader_id UPLOADER_ID, -u UPLOADER_ID - Uploader identification (should be an uppercase MAC + --device_id DEVICE_ID, -i DEVICE_ID + Device identification (should be an uppercase MAC address) (default: ) -o, --oneshot Upload folder and exit (default: False) diff --git a/uploader/google_music_manager_uploader/uploader_daemon.py b/uploader/google_music_manager_uploader/uploader_daemon.py index 6773cbb..715d86b 100755 --- a/uploader/google_music_manager_uploader/uploader_daemon.py +++ b/uploader/google_music_manager_uploader/uploader_daemon.py @@ -20,12 +20,12 @@ def on_created(self, event): if os.path.isdir(self.path): files = [file for file in glob.glob(glob.escape(self.path) + '/**/*', recursive=True)] for file_path in files: - upload_file(self.api, file_path, self.logger, self.oauth, self.uploader_id, self.remove) + upload_file(self.api, file_path, self.logger, remove=self.remove) else: - upload_file(self.api, event.src_path, self.logger, self.oauth, self.uploader_id, self.remove) + upload_file(self.api, event.src_path, self.logger, remove=self.remove) -def upload_file(api, file_path, logger, oauth=os.environ['HOME'] + '/oauth', uploader_id=__DEFAULT_MAC__, remove=False): +def upload_file(api, file_path, logger, remove=False): retry = 5 while retry > 0: try: @@ -46,8 +46,13 @@ def upload_file(api, file_path, logger, oauth=os.environ['HOME'] + '/oauth', upl raise e -def upload(directory='.', oauth=os.environ['HOME'] + '/oauth', remove=False, uploader_id=__DEFAULT_MAC__, - oneshot=False): +def upload( + directory='.', + oauth=os.environ['HOME'] + '/oauth', + remove=False, + uploader_id=__DEFAULT_MAC__, + oneshot=False +): logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) logger.info("Init Daemon - Press Ctrl+C to quit") @@ -70,7 +75,7 @@ def upload(directory='.', oauth=os.environ['HOME'] + '/oauth', remove=False, upl observer.start() files = [file for file in glob.glob(glob.escape(directory) + '/**/*', recursive=True)] for file_path in files: - upload_file(api, file_path, logger, oauth, uploader_id, remove) + upload_file(api, file_path, logger, remove=remove) if oneshot: sys.exit(0) try: @@ -84,12 +89,19 @@ def upload(directory='.', oauth=os.environ['HOME'] + '/oauth', remove=False, upl def main(): parser = argparse.ArgumentParser() parser.add_argument("--directory", '-d', default='.', help="Music Folder to upload from (default: .)") - parser.add_argument("--oauth", '-a', default=os.environ['HOME'] + '/oauth', - help="Path to oauth file (default: ~/oauth)") + parser.add_argument( + "--oauth", + '-a', + default=os.environ['HOME'] + '/oauth', + help="Path to oauth file (default: ~/oauth)" + ) parser.add_argument("-r", "--remove", action='store_true', help="Remove files if present (default: False)") - parser.add_argument("--uploader_id", '-u', - default=__DEFAULT_MAC__, - help="Uploader identification (should be an uppercase MAC address) (default: )") + parser.add_argument( + "--uploader_id", + '-u', + default=__DEFAULT_MAC__, + help="Uploader identification (should be an uppercase MAC address) (default: )" + ) parser.add_argument("--oneshot", '-o', action='store_true', help="Upload folder and exit (default: False)") args = parser.parse_args() upload(args.directory, args.oauth, args.remove, args.uploader_id, args.oneshot) diff --git a/uploader/setup.py b/uploader/setup.py index b05d965..7357179 100644 --- a/uploader/setup.py +++ b/uploader/setup.py @@ -3,7 +3,7 @@ from setuptools import setup, find_packages -__version__ = '1.2.3' +__version__ = '1.2.4' setup( name='google_music_manager_uploader',