Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
3.7 kB
2
Indexable
Never
import requests
import sys
import time

# Containers/Functions
url = 'https://danbooru.donmai.us/posts.json'
api_key = 'xxx' 
login = 'xxxx' 
limit = 200 
tags = "looping_animation bouncing_breasts gif_artifacts gif animated_gif animated video"
url_params = {
  "limit": limit,
  "tags": tags
}
headers = {
    'User-Agent': "AE-mommy/1.0"
}

data = requests.get(url, auth=(login, api_key), params=url_params, headers=headers).json()
url_container = []
error_container = 0
nsfw_rating_dictionary = {
    "g": "General",
    "s": "Sensitive",
    "q": "Questionable",
    "e": "Explicit"
}
unaccepted_rating_container = 0
spam_docs_folder = '/home/container/'
banned_tags = ['loli', 'shota', 'gay', 'yaoi', 'kid', 'child']

def Check_tags(tags):
    global banned_tags
    for i in banned_tags:
        if i in tags:
            return True
    return False

# Main Menu
choice = "default"

# Webhook selection

# Rating selection

print()
print('Danbooru has 4 "nsfw" ratings.\n')
print('g = general (Fully SFW)')
print('s = sensitive (Somewhat NSFW)')
print('q = questionable (Almost Explicit NSFW)')
print('e = explicit (Full NSFW)\n')
nsfw_rating = "all"

# Checks if all selected or not.

if nsfw_rating == 'all':
    nsfw_rating_container = ['e']
else:
    nsfw_rating_container = [*nsfw_rating]

print()
for i in nsfw_rating_container:
    print(f"{nsfw_rating_dictionary[i]} rating has been selected")

page_number = 1
max_pages = 10000  # Maximum number of pages before exiting the loop

# Actual code for the bot (technically a script, but can be turned into a bot.)

condition = True

while condition and page_number <= max_pages:
    new_url = url + '&page=' + str(page_number)  # Removed the tag from the URL
    
    time.sleep(5)

    r = requests.get(new_url, headers=headers)

    data = r.json()

    for i in data:
        try:
            if 'id' not in i:
                error_container += 1
            elif 'file_url' not in i:
                error_container += 1
            elif '.zip' in i['file_url']:
                error_container += 1
            elif i['rating'] not in nsfw_rating_container:
                unaccepted_rating_container += 1
            elif Check_tags(i['tag_string'].split()):
                error_container += 1
            else:
                url_container.append(i['file_url'])
                print(f"Fetched image URL: {i['file_url']}")  # Add this line to display the URL

                time.sleep(5)
        except:
            error_container += 1

    # Statistics Info.
    print('Current Page number is: ' + str(page_number))
    print('Current amount of links posted/recorded is: ' + str(len(url_container)))
    print('Current Rating-Blocked links: ' + str(unaccepted_rating_container))
    print()

    page_number += 1

    if page_number > 500:
        page_number = 1  # Reset page_number to 1

    if len(data) == 0:
        condition = False

# Post-Process Information

print()
print('There are ' + str(error_container) + ' Deleted/Banned Or Invalid Files.')
print(f'Leaving {str(len(url_container))} out of {str(unaccepted_rating_container+len(url_container)+error_container)} links to be processed.')

if len(url_container) == 0:
    print('No Results have been found, double-check the tags given.')
    input('')
    sys.exit()

file_name = input('Enter the name of Docs:\n>>>')

print()

print(f"'{file_name}' has been chosen as file name")

with open(f'{spam_docs_folder}{file_name}.txt', 'w') as f:
    for i in range(0, len(url_container), 5):
        f.write('\n'.join(url_container[i:i+5]) + '\n' + '\n')

print()
input(f"Links have been copied into the .txt file: '{file_name}'")