<p><p>#!/usr/bin/python</p><p><br></p><p>import getopt</p><p>import os</p><p>import subprocess</p><p>import sys</p><p>import time</p><p><br></p><p>def usage():</p><p> print</p><p> print "Usage:"</p><p> print</p><p> print "options:"</p><p> print "-e <episode range> (default: 1-1)"</p><p> print "-t <title id>"</p><p> print "-n <title string> (optional)"</p><p> print "-o <output directory> (default: ./)"</p><p> print</p><p> print "sample:"</p><p> print "webtoon.py -e 1-10 -t 22897 (episode 1 ~ 10 download)"</p><p> print</p><p> sys.exit(2)</p><p><br></p><p>def main(argv):</p><p> title_id = ''</p><p> title = ''</p><p> episode_start = 1</p><p> episode_end = 2</p><p> output_dir = './'</p><p> finish = False</p><p><br></p><p> try:</p><p> opts, args = getopt.getopt(argv, "he:t:n:o:")</p><p> except getopt.GetoptError, e:</p><p> print "[ERROR] GetoptError: "+str(e)</p><p> sys.exit(2)</p><p><br></p><p> for opt, arg in opts:</p><p> if opt == "-h":</p><p> usage()</p><p> elif opt == "-e":</p><p> try:</p><p> parse = arg.split("-")</p><p> episode_start = int(parse[0])</p><p> episode_end = int(parse[1]) + 1</p><p> except:</p><p> print "[ERROR] Incorrect episode range"</p><p> usage()</p><p> elif opt == "-t":</p><p> title_id = arg</p><p> elif opt == "-n":</p><p> title = arg</p><p> elif opt == "-o":</p><p> output_dir = arg</p><p> if output_dir[-1] != '/':</p><p> output_dir += '/'</p><p><br></p><p> if title_id == '':</p><p> usage()</p><p><br></p><p></p><p> if (episode_start > episode_end):</p><p> print "[ERROR] Incorrect episode range"</p><p><br></p><p> if not os.path.isdir(output_dir+title_id):</p><p> os.system('mkdir '+output_dir+title_id)</p><p><br></p><p> find_string = 'http://imgcomic.naver.com/webtoon/'+title_id+'/'</p><p><br></p><p> for episode in range(episode_start, episode_end):</p><p> if os.path.isfile('./output.output'):</p><p> os.system('rm ./output.output')</p><p> page_url = "http://comic.naver.com/webtoon/detail.nhn?titleId=%s\\&no=%d"%(title_id, episode)</p><p> curl_cmd = 'curl -s -o ./output.output '+page_url</p><p><br></p><p> curl = subprocess.Popen(curl_cmd, shell=True)</p><p><br></p><p> for i in range(0,30): # 3 seconds</p><p> time.sleep(0.1)</p><p> if curl.poll() != None:</p><p> break</p><p><br></p><p> if not os.path.isfile('./output.output'):</p><p> print '[INFO] Finish!'</p><p> break</p><p><br></p><p> output_file = open('./output.output', 'r')</p><p><br></p><p> for line in output_file.readlines():</p><p> line = line.strip()</p><p> s_idx = line.find(find_string)</p><p> if s_idx != -1:</p><p> e_idx = line[s_idx:].find('"')</p><p> url = line[s_idx:s_idx+e_idx]</p><p> url_split = url.split('/')</p><p> output_name = "%s%s/%s_%03d_%s.jpg" %\</p><p> (output_dir, title_id, title, episode, url_split[-1])</p><p><br></p><p> wget_cmd = 'wget -O '+output_name+' '+url</p><p> result = os.system(wget_cmd)</p><p> if result != 0:</p><p> print '[ERROR] Failed download'</p><p><br></p><p> output_file.close()</p><p><br></p><p>if __name__ == '__main__':</p><p> main(sys.argv[1:])</p><p><br></p><p> </p><div><br></div><p></p></p>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.