fork(1) download
  1. import os, urllib.request, re, time
  2. from random import *
  3. def folder(tag):
  4. try:
  5. os.mkdir(tag,mode=0o777)
  6. except FileExistsError:
  7. pass
  8. os.chdir(tag)
  9. return "starting..."
  10. def prev(tags, n):
  11. try:
  12. n = int(n)
  13. except ValueError:
  14. n = 2**25
  15. out = []
  16. k = 0
  17. t = 0
  18. req = 'http://g...content-available-to-author-only...u.com/index.php?page=post&s=list&tags='
  19. pid = '&pid='
  20. while len(out) < n:
  21. t = 0
  22. page = urllib.request.urlopen(req+tags+pid+str(k)).read().decode()
  23. time.sleep(float('0.'+str(randint(2,9)))) #На всякий случай. А то вдруг нас примут за ботов и стукнут банхаммером. ^_^ По своему усмотрению удалите эту строчку.
  24. for elem in re.findall(r'id\=\d+\" ><img src=\"([^\"]+)', page):
  25. out.append(elem)
  26. t+=1
  27. k+=42
  28. if t == 0:
  29. break
  30. return out[:n]
  31. def link(pre):
  32. my_link = 'http://g...content-available-to-author-only...u.com//images'
  33. p = re.sub(r'thumbnail_', '', re.search(r'(?<=nails)(.+)',pre).group())
  34. return (my_link+p, (my_link+p).replace('jpg','jpeg'),
  35. (my_link+p).replace('jpg','gif'),(my_link+p).replace('jpg','png'))
  36. def randname(x):
  37. return ''. join(sample(str(randint(11111111111, 99999999999)*3) + ''.join([chr(i)* randint(1,3) for i in range(97,123)]), x))
  38. def download(tag, x):
  39. prw = prev(tag, x)
  40. print('loading...')
  41. for i in prw:
  42. q = link(i)
  43. for elem in q:
  44. try:
  45. my_pic = urllib.request.urlopen(elem).read()
  46. f = open(randname(16) + re.search(r'\.[a-z]{3,4}(?=\?)', elem).group(), 'wb')
  47. f.write(my_pic)
  48. f.close()
  49. break
  50. except urllib.error.HTTPError:
  51. continue
  52. print('done')
  53. print('Введите тэг(и) gelbooru здесь, разделяя их знаком "+" \n Например: "pino", "ononoki_yotsugi+blush", "nagato_yuki+bondage+mirror" (без кавычек): ')
  54. tag = input('\ ')
  55. print('Укажите кол-во изображений.\n Если кол-во не указано, будут загружаться все доступные картинки по заданным тэгам: ')
  56. x = input('\ ')
  57. print(folder(tag))
  58. download(tag, x)
Runtime error #stdin #stdout #stderr 0.23s 15208KB
stdin
Standard input is empty
stdout
Введите тэг(и) gelbooru здесь, разделяя их знаком "+" 
 Например: "pino", "ononoki_yotsugi+blush", "nagato_yuki+bondage+mirror" (без кавычек): 
\ 
stderr
Traceback (most recent call last):
  File "./prog.py", line 54, in <module>
EOFError: EOF when reading a line