import os, urllib.request, re, time
from random import *
def folder(tag):
    try:
        os.mkdir(tag,mode=0o777)
    except FileExistsError:
        pass
    os.chdir(tag)
    return "starting..."
def prev(tags, n):
    try:
        n = int(n)
    except ValueError:
        n = 2**25
    out = []
    k = 0
    t = 0
    req = 'http://g...content-available-to-author-only...u.com/index.php?page=post&s=list&tags='
    pid = '&pid='
    while len(out) < n:
        t = 0
        page = urllib.request.urlopen(req+tags+pid+str(k)).read().decode()
        time.sleep(float('0.'+str(randint(2,9)))) #На всякий случай. А то вдруг нас примут за ботов и стукнут банхаммером. ^_^ По своему усмотрению удалите эту строчку.
        for elem in re.findall(r'id\=\d+\" ><img src=\"([^\"]+)', page):
            out.append(elem)
            t+=1
        k+=42
        if t == 0:
            break
    return out[:n]
def link(pre):
    my_link = 'http://g...content-available-to-author-only...u.com//images'
    p = re.sub(r'thumbnail_', '', re.search(r'(?<=nails)(.+)',pre).group())
    return (my_link+p, (my_link+p).replace('jpg','jpeg'),
            (my_link+p).replace('jpg','gif'),(my_link+p).replace('jpg','png'))
def randname(x):
    return ''. join(sample(str(randint(11111111111, 99999999999)*3) + ''.join([chr(i)* randint(1,3) for i in range(97,123)]), x))
def download(tag, x):
    prw = prev(tag, x)
    print('loading...')
    for i in prw:
        q = link(i)
        for elem in q:
            try:
                my_pic = urllib.request.urlopen(elem).read()
                f = open(randname(16) + re.search(r'\.[a-z]{3,4}(?=\?)', elem).group(), 'wb')
                f.write(my_pic)
                f.close()
                break
            except urllib.error.HTTPError:
                continue
    print('done')
print('Введите тэг(и) gelbooru здесь, разделяя их знаком "+" \n Например: "pino", "ononoki_yotsugi+blush", "nagato_yuki+bondage+mirror" (без кавычек): ')
tag = input('\ ')
print('Укажите кол-во изображений.\n Если кол-во не указано, будут загружаться все доступные картинки по заданным тэгам: ')
x = input('\ ')
print(folder(tag))
download(tag, x)