2011年11月10日木曜日

DL用スクリプト

DLするときに既にダウンロードされているモノに関してはignoreするスクリプト。
wgetを使っているため、それにパスが通ってないとエラーする。
#! /usr/bin/env python
#-*- coding: utf-8 -*-
import os
import optparse
import subprocess

def main():
    parser = optparse.OptionParser()
    opts, args = parser.parse_args()

    args = list(set(args))

    if len(args) < 1:
        parser.error('parameter empty.')
        
    cur = os.path.dirname(__file__)
    os.chdir(cur)

    with open(os.path.join(cur, 'url.list'), 'a+t') as urllist:
        alreadies = urllist.readlines()
        alreadies = map(lambda l: l.strip(), alreadies)
        not_yet = filter(lambda l: l not in alreadies, args)
        ignore  = filter(lambda l: l in alreadies, args)
        for ign in ignore:
            print 'ignore: {0}'.format(ign)

    url_child = {}
    
    for url in not_yet:
        child = subprocess.Popen(['wget', url])
        url_child[url] = child

    with open(os.path.join(cur, 'url.list'), 'a+t') as urllist:
        for url, child in url_child.iteritems():
            rc = child.wait()
            if rc == 0:
                urllist.write(url + os.linesep)
            else:
                sys.stderr.write('error: {0} ({1})'.format(url, rc))

if __name__ == '__main__':
    main()

0 件のコメント:

コメントを投稿