From 9685d8aa8a5095abf19f21ef29d7cd1d6b339703 Mon Sep 17 00:00:00 2001 From: Alexander Popov Date: Wed, 19 Oct 2016 14:04:20 +0300 Subject: [PATCH] 0.1.1 --- .gitignore | 1 + LICENSE => LICENSE.txt | 0 README.md | 18 ++++++++++++++---- lastfm-import.py => lastfm_import.py | 28 +++++++++++++++++----------- samples/getTracks.py | 15 +++++++++++++++ setup.cfg | 2 ++ setup.py | 26 ++++++++++++++++++++++++++ 7 files changed, 75 insertions(+), 15 deletions(-) rename LICENSE => LICENSE.txt (100%) rename lastfm-import.py => lastfm_import.py (82%) create mode 100644 samples/getTracks.py create mode 100644 setup.cfg create mode 100644 setup.py diff --git a/.gitignore b/.gitignore index a6c57f5..819e677 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.json +*.pyc diff --git a/LICENSE b/LICENSE.txt similarity index 100% rename from LICENSE rename to LICENSE.txt diff --git a/README.md b/README.md index a40b7b8..01680b6 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,19 @@ -**How to use** +![Version](https://img.shields.io/pypi/v/lastfm_import.svg?style=flat-square) +![License](https://img.shields.io/pypi/l/lastfm_import.svg.svg?style=flat-square) +![PyVersion](https://img.shields.io/pypi/pyversions/lastfm_import.svg.svg?style=flat-square) + +**How to use as standartalone app** 1. Rename `config.json.example` to `config.json` and edit. -2. Run this `python lastfm-import.py` or `~/lastfm-import.py`. -3. PROFIT!! +2. Run this `python lastfm_import.py` or `~/lastfm_import.py`. +3. PROFIT!! + +***How to use as library** +see [getTracks.py](https://github.com/iiiypuk/lastfm-import/blob/master/samples/getTracks.py). + +My `>57,5k` tracks scrobbles sized `~8.2Mb`. **TODO** `-` web service `-` more output types (sqlite, csv) -`-` confirugurabled output +`-` confirugurabled output +`-` continue backup diff --git a/lastfm-import.py b/lastfm_import.py similarity index 82% rename from lastfm-import.py rename to lastfm_import.py index fbeb3b6..b9fc9e2 100644 --- a/lastfm-import.py +++ b/lastfm_import.py @@ -4,12 +4,9 @@ import json import urllib.request __author__ = 'Alexander Popov' -__version__ = (0, 1, 0,) +__version__ = '0.1.1' __license__ = 'Unlicense' -with open('./config.json') as f: - CONFIG = json.loads(f.read()) - def get_pages(username, api_key): response = urllib.request.urlopen( @@ -20,19 +17,28 @@ def get_pages(username, api_key): return(pages) + +def get_scrobbles(username, api_key, page): + response = json.loads( + urllib.request.urlopen( + 'http://ws.audioscrobbler.com/2.0/' + '?method=user.getrecenttracks&user=%s' + '&api_key=%s&page=%d&format=json' % + (username, api_key, page,)) + .read().decode("utf8"))['recenttracks']['track'] + + return(response) + if __name__ == '__main__': + with open('./config.json') as f: + CONFIG = json.loads(f.read()) + PAGES = get_pages(CONFIG['username'], CONFIG['api_key']) COUNT = 1 TRACKS = [] while COUNT <= PAGES: print('\r%d%%' % (COUNT * 100 / PAGES), end='') - response = json.loads( - urllib.request.urlopen( - 'http://ws.audioscrobbler.com/2.0/' - '?method=user.getrecenttracks&user=%s' - '&api_key=%s&page=%d&format=json' % - (CONFIG['username'], CONFIG['api_key'], COUNT,)) - .read().decode("utf8"))['recenttracks']['track'] + response = get_scrobbles(CONFIG['username'], CONFIG['api_key'], COUNT) for track in response: TRACKS.append({'artist': track['artist']['#text'], diff --git a/samples/getTracks.py b/samples/getTracks.py new file mode 100644 index 0000000..28dde6f --- /dev/null +++ b/samples/getTracks.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 + +import lastfm_import as lfm + +API_KEY = '0e5070361556658180f9b1518b341eda' +USERNAME = 'goodgame' + +if __name__ == '__main__': + pages = lfm.get_pages(USERNAME, API_KEY) + + for page in range(1, pages + 1): + tracks = lfm.get_scrobbles(USERNAME, API_KEY, page) + + for track in tracks: + print('%s - %s' % (track['artist']['#text'], track['name'],)) diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..12871ff --- /dev/null +++ b/setup.cfg @@ -0,0 +1,2 @@ +[metadata] +description-file=README.md diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..0314fab --- /dev/null +++ b/setup.py @@ -0,0 +1,26 @@ +from distutils.core import setup + +import lastfm_import + +setup( + name='lastfm_import', + version=lastfm_import.__version__, + description='Last.fm backup scrobbles library' + ' and standartalone program.', + author=lastfm_import.__author__, + author_email='iiiypuk@fastmail.fm', + url='https://github.com/iiiypuk/lastfm-import', + py_modules=['lastfm_import'], + scripts=['lastfm_import.py'], + license=lastfm_import.__license__, + platforms='any', + keywords=['last.fm', 'lastfm', 'import'], + classifiers=['License :: Public Domain', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.2', + 'Programming Language :: Python :: 3.3', + 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', + ], +)