# HG changeset patch # User Fabien Ninoles # Date 1346033909 14400 # Node ID 3675dd7daf593377d9c54309e4b3c134e1ea7d28 # Parent fb1ab147b2dd33922f0d47816944b071dc2b4dc9 Take filename from command line arguments, add copyright and better readme text. diff -r fb1ab147b2dd -r 3675dd7daf59 update-hib.py --- a/update-hib.py Sun Aug 26 22:03:23 2012 -0400 +++ b/update-hib.py Sun Aug 26 22:18:29 2012 -0400 @@ -1,4 +1,21 @@ #!/usr/bin/python3 +# +# Update HIB - Scrapper for the HumbleBundle library page. +# Copyright (C) 2012, Fabien Ninoles <- fabien - AT - tzone . org -> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + from html.parser import HTMLParser from pprint import pprint @@ -247,35 +264,39 @@ def __call__(self, dls): return self.chooseDownloads(dls) -selector = FileSelector() +def main(fn): + selector = FileSelector() + downloads = [] + for game in parseGamesFromFile(fn): + for dls in game.downloads: + scores = selector(dls) + choosen = list(dl for score, dl in scores if score >= 0)[:1] + for score, dl in scores: + print("[%s] %2d | %-20s | %-10s | %-25s | %s " % ( + "*" if dl in choosen else " ", + score, + game.title, + dls.id, + ", ".join(sorted(dl.attrs)), + dl.torrent)) + if dl in choosen: + downloads.append(dl) + if not scores: + print("No download for",dls.id) + print("-" * 80) -downloads = [] -for game in parseGamesFromFile("tidy_bundle.html"): - for dls in game.downloads: - scores = selector(dls) - choosen = list(dl for score, dl in scores if score >= 0)[:1] - for score, dl in scores: - print("[%s] %2d | %-20s | %-10s | %-25s | %s " % ( - "*" if dl in choosen else " ", - score, - game.title, - dls.id, - ", ".join(sorted(dl.attrs)), - dl.torrent)) - if dl in choosen: - downloads.append(dl) - if not scores: - print("No download for",dls.id) - print("-" * 80) + import urllib.request + import urllib.parse + import os + opener = urllib.request.build_opener() + for dl in downloads: + fn = os.path.basename(urllib.parse.urlsplit(dl.torrent).path) + print("Saving",dl.torrent,"as",fn) + with opener.open(dl.torrent) as u: + with open(fn,"wb") as f: + f.write(u.read()) -import urllib.request -import urllib.parse -import os -opener = urllib.request.build_opener() -for dl in downloads: - fn = os.path.basename(urllib.parse.urlsplit(dl.torrent).path) - print("Saving",dl.torrent,"as",fn) - with opener.open(dl.torrent) as u: - with open(fn,"wb") as f: - f.write(u.read()) +if __name__ == '__main__': + import sys + main(sys.argv[1])