{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "89240f38", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import glob\n", "import numpy as np\n", "from IPython.display import display, HTML\n", "import re\n", "import os\n", "import gc\n", "import requests\n", "import time" ] }, { "cell_type": "code", "execution_count": 2, "id": "12f46afb", "metadata": {}, "outputs": [], "source": [ "pd.set_option('display.max_columns', None)\n", "pd.set_option('display.expand_frame_repr', False)\n", "pd.set_option('display.max_colwidth', None)\n", "pd.set_option('display.max_rows', 500)" ] }, { "cell_type": "code", "execution_count": 3, "id": "7c2f2eab", "metadata": {}, "outputs": [], "source": [ "column_dtype = {'outpainting': str, 'seed': str, 'version': str, 'quality': str}\n", "df = pd.read_csv('starting_dataset.csv', dtype=column_dtype)" ] }, { "cell_type": "code", "execution_count": 4, "id": "69fbea7e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "16349562" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df)" ] }, { "cell_type": "code", "execution_count": 5, "id": "6b246b80", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_894/2212843517.py:5: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " filtered_df['Date'] = pd.to_datetime(filtered_df['Date'])\n" ] } ], "source": [ "# Filter the data based on the 'Noobs' column\n", "filtered_df = df[df['Noobs'] == False]\n", "\n", "# Convert 'Date' column to datetime if it is not already in datetime format\n", "filtered_df['Date'] = pd.to_datetime(filtered_df['Date'])" ] }, { "cell_type": "code", "execution_count": 6, "id": "2232b478", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15450588" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(filtered_df)" ] }, { "cell_type": "code", "execution_count": 7, "id": "ef71e0e3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['Date', 'Attachments', 'Reactions', 'channel', 'Contains_Link', 'Noobs',\n", " 'Contains_Open_Quality', 'in_progress', 'variations', 'generation_mode',\n", " 'outpainting', 'upscaled', 'version', 'aspect', 'quality', 'repeat',\n", " 'seed', 'style', 'stylize', 'weird', 'niji', 'username',\n", " 'clean_prompts', 'prompt length'],\n", " dtype='object')" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filtered_df.columns" ] }, { "cell_type": "code", "execution_count": 11, "id": "07d5a842", "metadata": {}, "outputs": [], "source": [ "total_rows_per_user = filtered_df.groupby('username').size().reset_index(name='total_rows')\n", "non_false_upscaled_per_user = filtered_df[filtered_df['upscaled'] != False].groupby('username').size().reset_index(name='non_false_upscaled_count')\n", "merged_df = pd.merge(total_rows_per_user, non_false_upscaled_per_user, on='username', how='left')\n", "merged_df['non_false_upscaled_count'].fillna(0, inplace=True)\n", "top_1000_sorted_df = merged_df.sort_values(by='total_rows', ascending=False).head(1000)" ] }, { "cell_type": "code", "execution_count": 8, "id": "3fe2446e", "metadata": {}, "outputs": [], "source": [ "#removing img2img generations\n", "clean_df = filtered_df[filtered_df['Contains_Link'] == False]" ] }, { "cell_type": "code", "execution_count": 9, "id": "46509fa6", "metadata": {}, "outputs": [], "source": [ "#removing noob generations\n", "clean_df = clean_df[clean_df['Noobs'] == False]" ] }, { "cell_type": "code", "execution_count": 10, "id": "67642c8c", "metadata": {}, "outputs": [], "source": [ "# removing not finished images\n", "clean_df = clean_df[clean_df['in_progress'] == False]" ] }, { "cell_type": "code", "execution_count": 11, "id": "8af5c80a", "metadata": {}, "outputs": [], "source": [ "# removing variations\n", "clean_df = clean_df[clean_df['variations'] == 'False']" ] }, { "cell_type": "code", "execution_count": 12, "id": "69d0c5c2", "metadata": {}, "outputs": [], "source": [ "# removing outpainting versions\n", "clean_df = clean_df[clean_df['outpainting'] == 'False']" ] }, { "cell_type": "code", "execution_count": 13, "id": "2973d2c3", "metadata": {}, "outputs": [], "source": [ "#keeping only raw\n", "clean_df = clean_df[clean_df['style'] == 'raw']" ] }, { "cell_type": "code", "execution_count": 14, "id": "b0487cc0", "metadata": {}, "outputs": [], "source": [ "#getting rid of different weird values\n", "clean_df = clean_df[clean_df['weird'] == 'none']" ] }, { "cell_type": "code", "execution_count": 15, "id": "0f5f2f38", "metadata": {}, "outputs": [], "source": [ "#getting rid of niji generations\n", "clean_df = clean_df[clean_df['niji'] == False]" ] }, { "cell_type": "code", "execution_count": 18, "id": "ba756c1d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "243287" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(clean_df_upscaled)" ] }, { "cell_type": "code", "execution_count": 17, "id": "4c3c3590", "metadata": {}, "outputs": [], "source": [ "clean_df_upscaled = clean_df[clean_df['upscaled'] != False]" ] }, { "cell_type": "code", "execution_count": 19, "id": "380e90d3", "metadata": {}, "outputs": [], "source": [ "total_rows_per_user = clean_df_upscaled.groupby('username').size().reset_index(name='total_rows')\n", "non_false_upscaled_per_user = clean_df_upscaled[clean_df_upscaled['upscaled'] != False].groupby('username').size().reset_index(name='non_false_upscaled_count')\n", "merged_df = pd.merge(total_rows_per_user, non_false_upscaled_per_user, on='username', how='left')\n", "merged_df['non_false_upscaled_count'].fillna(0, inplace=True)\n", "top_1000_sorted_df = merged_df.sort_values(by='total_rows', ascending=False).head(1000)" ] }, { "cell_type": "code", "execution_count": 56, "id": "c5ceb33b", "metadata": {}, "outputs": [], "source": [ "top_100 = top_1000_sorted_df[top_1000_sorted_df['non_false_upscaled_count'] >= 50]\n", "unique_usernames = top_100['username'].unique()\n", "filtered_rows_df = clean_df_upscaled[clean_df_upscaled['username'].isin(unique_usernames)]" ] }, { "cell_type": "code", "execution_count": 57, "id": "abb627a8", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_894/1231344319.py:1: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " filtered_rows_df['Date'] = pd.to_datetime(filtered_rows_df['Date'])\n" ] } ], "source": [ "filtered_rows_df['Date'] = pd.to_datetime(filtered_rows_df['Date'])\n", "filtered_rows_df = filtered_rows_df.sort_values(by='Date')\n", "filtered_rows_df = filtered_rows_df.drop_duplicates(subset='clean_prompts', keep='last')" ] }, { "cell_type": "code", "execution_count": 47, "id": "525fe232", "metadata": {}, "outputs": [], "source": [ "username_counts = filtered_rows_df['username'].value_counts()" ] }, { "cell_type": "code", "execution_count": 51, "id": "7f99513e", "metadata": {}, "outputs": [], "source": [ "users_at_least_100 = sum(username_counts >= 100)\n", "users_at_least_250 = sum(username_counts >= 250)\n", "users_at_least_500 = sum(username_counts >= 500)" ] }, { "cell_type": "code", "execution_count": 59, "id": "420d4608", "metadata": {}, "outputs": [], "source": [ "# Step 1: Create dedicated_folder column\n", "username_counts = filtered_rows_df['username'].value_counts()\n", "filtered_rows_df['dedicated_folder'] = filtered_rows_df['username'].map(lambda x: True if username_counts.get(x, 0) > 100 else False)" ] }, { "cell_type": "code", "execution_count": 60, "id": "c3733086", "metadata": {}, "outputs": [], "source": [ "filtered_rows_df = filtered_rows_df[filtered_rows_df['dedicated_folder'] == True]" ] }, { "cell_type": "code", "execution_count": 62, "id": "ee685a85", "metadata": {}, "outputs": [], "source": [ "# Step 2: Create user_rank column\n", "ranked_usernames = username_counts.index.rename(\"username\")\n", "ranked_usernames_df = pd.DataFrame({\"username\": ranked_usernames, \"rank\": range(1, len(ranked_usernames) + 1)})\n", "ranked_usernames_df['user_rank'] = \"rank_\" + ranked_usernames_df['rank'].astype(str)\n", "filtered_rows_df = filtered_rows_df.merge(ranked_usernames_df[['username', 'user_rank']], on='username', how='left')\n", "filtered_rows_df['user_rank'] = filtered_rows_df.apply(lambda x: 'no_rank' if not x['dedicated_folder'] else x['user_rank'], axis=1)" ] }, { "cell_type": "code", "execution_count": 63, "id": "765c4127", "metadata": {}, "outputs": [], "source": [ "# Step 3: Clean filename function\n", "def clean_filename(filename, max_length=100):\n", " if not isinstance(filename, str):\n", " return None\n", " cleaned_name = re.sub(r'[\\\\/*?:\"<>|]', \"\", filename)\n", " return cleaned_name[:max_length]" ] }, { "cell_type": "code", "execution_count": 70, "id": "c8cdf8ae", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "13613" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(sampled_df)" ] }, { "cell_type": "code", "execution_count": 92, "id": "97ec2901", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['Date', 'Attachments', 'Reactions', 'channel', 'Contains_Link', 'Noobs',\n", " 'Contains_Open_Quality', 'in_progress', 'variations', 'generation_mode',\n", " 'outpainting', 'upscaled', 'version', 'aspect', 'quality', 'repeat',\n", " 'seed', 'style', 'stylize', 'weird', 'niji', 'username',\n", " 'clean_prompts', 'prompt length', 'dedicated_folder', 'user_rank'],\n", " dtype='object')" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sampled_df.columns" ] }, { "cell_type": "code", "execution_count": 69, "id": "f3275d1d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "79" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sampled_df['username'].nunique()" ] }, { "cell_type": "code", "execution_count": 68, "id": "5aab6944", "metadata": {}, "outputs": [], "source": [ "sampled_df = (\n", " filtered_rows_df.groupby('username', group_keys=False)\n", " .apply(lambda x: x.sample(min(len(x), 250)))\n", " .reset_index(drop=True)\n", ")" ] }, { "cell_type": "code", "execution_count": 71, "id": "8f8a4ddb", "metadata": {}, "outputs": [], "source": [ "# Import necessary modules\n", "import os\n", "import requests\n", "import time\n", "\n", "# Ensure the main dataset folder exists\n", "os.makedirs('clean_raw_dataset', exist_ok=True)\n", "\n", "for index, row in sampled_df.iterrows():\n", " # Your existing logic for saving images and texts\n", " image_url = row['Attachments']\n", " prompt = row['clean_prompts']\n", " file_name = clean_filename(prompt)\n", " \n", " if file_name is None:\n", " print(f\"Skipping row {index}: invalid or missing prompt\")\n", " continue\n", "\n", " # Get the file extension from the image URL\n", " file_extension = os.path.splitext(image_url)[1]\n", "\n", " # Determine the folder name based on the dedicated_folder value\n", " folder_name = row['user_rank'] if row['dedicated_folder'] else 'other'\n", "\n", " # Create the folder within 'clean_mj_dataset' if it does not exist\n", " full_folder_path = os.path.join('clean_raw_dataset', folder_name)\n", " os.makedirs(full_folder_path, exist_ok=True)\n", "\n", " # Combine the folder name, file name, and extension to form the image and text file paths\n", " image_file_path = os.path.join(full_folder_path, file_name + file_extension)\n", " text_file_path = os.path.join(full_folder_path, file_name + '.txt')\n", "\n", " # Download and save the image\n", " max_retries = 3\n", " for attempt in range(max_retries):\n", " try:\n", " response = requests.get(image_url)\n", " with open(image_file_path, 'wb') as f:\n", " f.write(response.content)\n", " break\n", " except requests.exceptions.RequestException as e:\n", " if attempt < max_retries - 1:\n", " print(f\"Error downloading image at row {index} (attempt {attempt + 1}): {str(e)}\")\n", " time.sleep(5) # Wait for 5 seconds before retrying\n", " else:\n", " print(f\"Failed to download image at row {index} after {max_retries} attempts: {str(e)}\")\n", " continue\n", "\n", " # Create and save the text file using the full original prompt as the content\n", " with open(text_file_path, 'w', encoding='utf-8') as f:\n", " f.write(prompt)" ] }, { "cell_type": "code", "execution_count": 100, "id": "2161b9ef", "metadata": {}, "outputs": [], "source": [ "total_txt_files = sum([len([file for file in files if file.endswith('.txt')]) for subdir, dirs, files in os.walk('clean_mj_dataset')])\n" ] }, { "cell_type": "code", "execution_count": 101, "id": "3ce4d4ed", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "20715" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "total_txt_files" ] }, { "cell_type": "code", "execution_count": 56, "id": "ec8feee6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "niji\n", "False 10181359\n", "True 307165\n", "Name: count, dtype: int64" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clean_df['niji'].value_counts()" ] }, { "cell_type": "code", "execution_count": 15, "id": "e2c726bc", "metadata": {}, "outputs": [], "source": [ "sorted_df = merged_df.sort_values(by='total_rows', ascending=False).head(1000)\n", "sorted_df.to_csv('top_1000_users.csv', index=False)" ] }, { "cell_type": "code", "execution_count": 16, "id": "be79e875", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "631034" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "niji_filtered_df = filtered_df[filtered_df['niji'] == True]\n", "len(niji_filtered_df)" ] }, { "cell_type": "code", "execution_count": 22, "id": "9d2a486c", "metadata": {}, "outputs": [], "source": [ "niji_total_rows_per_user = niji_filtered_df.groupby('username').size().reset_index(name='total_rows')\n", "niji_non_false_upscaled_per_user = niji_filtered_df[niji_filtered_df['upscaled'] != False].groupby('username').size().reset_index(name='niji_non_false_upscaled_per_user')\n", "niji_merged_df = pd.merge(niji_total_rows_per_user, niji_non_false_upscaled_per_user, on='username', how='left')\n", "niji_merged_df['niji_non_false_upscaled_per_user'].fillna(0, inplace=True)\n", "niji_top_1000_sorted_df = niji_merged_df.sort_values(by='total_rows', ascending=False).head(1000)" ] }, { "cell_type": "code", "execution_count": 37, "id": "1ce3e073", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['username', 'total_rows', 'niji_non_false_upscaled_per_user'], dtype='object')" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "niji_top_1000_sorted_df.columns" ] }, { "cell_type": "code", "execution_count": 39, "id": "9edf17bf", "metadata": {}, "outputs": [], "source": [ "niji_top_100 = niji_top_1000_sorted_df[niji_top_1000_sorted_df['niji_non_false_upscaled_per_user'] >= 100]" ] }, { "cell_type": "code", "execution_count": 35, "id": "2023a42c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "252476" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "niji_upscaled_filtered_df = niji_filtered_df[niji_filtered_df['upscaled'] != False]\n", "len(niji_upscaled_filtered_df)" ] }, { "cell_type": "code", "execution_count": 40, "id": "b956c8b7", "metadata": {}, "outputs": [], "source": [ "unique_usernames = niji_top_100['username'].unique()\n", "filtered_rows_df = niji_upscaled_filtered_df[niji_upscaled_filtered_df['username'].isin(unique_usernames)]" ] }, { "cell_type": "code", "execution_count": 45, "id": "3edd21d6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "34997" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(filtered_rows_df)" ] }, { "cell_type": "code", "execution_count": 47, "id": "c235bd0d", "metadata": {}, "outputs": [], "source": [ "# Step 1: Create dedicated_folder column\n", "username_counts = filtered_rows_df['username'].value_counts()\n", "filtered_rows_df['dedicated_folder'] = filtered_rows_df['username'].map(lambda x: True if username_counts.get(x, 0) > 100 else False)" ] }, { "cell_type": "code", "execution_count": 49, "id": "7330b9cf", "metadata": {}, "outputs": [], "source": [ "# Step 2: Create user_rank column\n", "ranked_usernames = username_counts.index.rename(\"username\")\n", "ranked_usernames_df = pd.DataFrame({\"username\": ranked_usernames, \"rank\": range(1, len(ranked_usernames) + 1)})\n", "ranked_usernames_df['user_rank'] = \"rank_\" + ranked_usernames_df['rank'].astype(str)\n", "filtered_rows_df = filtered_rows_df.merge(ranked_usernames_df[['username', 'user_rank']], on='username', how='left')\n", "filtered_rows_df['user_rank'] = filtered_rows_df.apply(lambda x: 'no_rank' if not x['dedicated_folder'] else x['user_rank'], axis=1)" ] }, { "cell_type": "code", "execution_count": 51, "id": "86ddf422", "metadata": {}, "outputs": [], "source": [ "# Step 3: Clean filename function\n", "def clean_filename(filename, max_length=100):\n", " if not isinstance(filename, str):\n", " return None\n", " cleaned_name = re.sub(r'[\\\\/*?:\"<>|]', \"\", filename)\n", " return cleaned_name[:max_length]" ] }, { "cell_type": "code", "execution_count": 54, "id": "5c913a36", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Skipping row 33560: invalid or missing prompt\n" ] } ], "source": [ "# Step 4: Loop through DataFrame rows\n", "os.makedirs('niji_dataset', exist_ok=True)\n", "\n", "for index, row in filtered_rows_df.iterrows():\n", " # Your existing logic for saving images and texts\n", " image_url = row['Attachments']\n", " prompt = row['clean_prompts']\n", " file_name = clean_filename(prompt)\n", " \n", " if file_name is None:\n", " print(f\"Skipping row {index}: invalid or missing prompt\")\n", " continue\n", "\n", " # Get the file extension from the image URL\n", " file_extension = os.path.splitext(image_url)[1]\n", "\n", " # Determine the folder name based on the dedicated_folder value\n", " folder_name = row['user_rank'] if row['dedicated_folder'] else 'other'\n", "\n", " # Create the folder within 'images_v_5.1' if it does not exist\n", " full_folder_path = os.path.join('images_v_5.1', folder_name)\n", " os.makedirs(full_folder_path, exist_ok=True)\n", "\n", " # Combine the folder name, file name, and extension to form the image and text file paths\n", " image_file_path = os.path.join(full_folder_path, file_name + file_extension)\n", " text_file_path = os.path.join(full_folder_path, file_name + '.txt')\n", "\n", " # Download and save the image\n", " max_retries = 3\n", " for attempt in range(max_retries):\n", " try:\n", " response = requests.get(image_url)\n", " with open(image_file_path, 'wb') as f:\n", " f.write(response.content)\n", " break\n", " except requests.exceptions.RequestException as e:\n", " if attempt < max_retries - 1:\n", " print(f\"Error downloading image at row {index} (attempt {attempt + 1}): {str(e)}\")\n", " time.sleep(5) # Wait for 5 seconds before retrying\n", " else:\n", " print(f\"Failed to download image at row {index} after {max_retries} attempts: {str(e)}\")\n", " continue\n", "\n", " # Create and save the text file using the full original prompt as the content\n", " with open(text_file_path, 'w', encoding='utf-8') as f:\n", " f.write(prompt)" ] }, { "cell_type": "code", "execution_count": 50, "id": "fdc77e6e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | Date | \n", "Attachments | \n", "Reactions | \n", "channel | \n", "Contains_Link | \n", "Noobs | \n", "Contains_Open_Quality | \n", "in_progress | \n", "variations | \n", "generation_mode | \n", "outpainting | \n", "upscaled | \n", "version | \n", "aspect | \n", "quality | \n", "repeat | \n", "seed | \n", "style | \n", "stylize | \n", "weird | \n", "niji | \n", "username | \n", "clean_prompts | \n", "prompt length | \n", "dedicated_folder | \n", "user_rank | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "2023-04-20 00:04:00 | \n", "https://cdn.discordapp.com/attachments/995431305066065950/1098278001222897726/Tim_Collins_Pennywise_as_a_kids_cartoon_main_character_Simpsons_4db7baee-3382-4d72-bb6b-200ca6c2d720.png | \n", "NaN | \n", "general-19 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "True | \n", "NaN | \n", "1:1 | \n", "1 | \n", "0 | \n", "False | \n", "none | \n", "250 | \n", "none | \n", "True | \n", "Tim | \n", "Pennywise as a kids cartoon main character, Simpsons | \n", "53 | \n", "False | \n", "no_rank | \n", "
1 | \n", "2023-04-20 00:07:00 | \n", "https://cdn.discordapp.com/attachments/989274728155992124/1098278805417754664/Nikki_Crescent_young_beautiful_woman_slavic_Caucasian_on_a_date_29ebe2ef-c39c-464b-9ee6-e8444a896c39.png | \n", "NaN | \n", "general-8 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "True | \n", "NaN | \n", "4:5 | \n", "1 | \n", "0 | \n", "False | \n", "none | \n", "1 | \n", "none | \n", "True | \n", "Nikki | \n", "young beautiful woman, slavic Caucasian, on a date, hugebust chest, insanely realistic full body photo of a stunning woman, Maxim, flirty, hyperreal, painting by Ross Tran, | \n", "173 | \n", "True | \n", "rank_65 | \n", "
2 | \n", "2023-04-20 00:12:00 | \n", "https://cdn.discordapp.com/attachments/989274728155992124/1098280076640014437/Nikki_Crescent_amazing_beautiful_geisha_insanely_realistic_full_895baaf6-0e18-49e2-a7c3-028e0493321e.png | \n", "NaN | \n", "general-8 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "True | \n", "5 | \n", "9:16 | \n", "1 | \n", "0 | \n", "False | \n", "none | \n", "1 | \n", "none | \n", "True | \n", "Nikki | \n", "amazing beautiful geisha, insanely realistic full body photo of a standing geisha by Maxim, very tempting flirty womens luxury underclothes, hyperreal, bedroom background, huge juicy largebust chest, realistically proportioned, impressionist painting by Ross Tran and Helmuth Newton | \n", "284 | \n", "True | \n", "rank_65 | \n", "
3 | \n", "2023-04-20 00:15:00 | \n", "https://cdn.discordapp.com/attachments/989274728155992124/1098280674047311993/Nikki_Crescent_young_beautiful_woman_slavic_Caucasian_performin_d5d22ebc-e506-41c3-86d3-8080c686c43e.png | \n", "NaN | \n", "general-8 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "True | \n", "NaN | \n", "4:5 | \n", "1 | \n", "0 | \n", "False | \n", "none | \n", "1 | \n", "none | \n", "True | \n", "Nikki | \n", "young beautiful woman, slavic Caucasian, performing on a webcam, largebust chest, juicy, insanely realistic full body photo of a stunning woman, Maxim, flirty, hyperreal, painting by Ross Tran, | \n", "194 | \n", "True | \n", "rank_65 | \n", "
4 | \n", "2023-04-20 00:22:00 | \n", "https://cdn.discordapp.com/attachments/989274728155992124/1098282391610597396/Nikki_Crescent_young_beautiful_woman_flirting_lip_bite_slavic_C_37849a3d-6039-4426-af15-a11357cd8fac.png | \n", "NaN | \n", "general-8 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "True | \n", "NaN | \n", "4:5 | \n", "1 | \n", "0 | \n", "False | \n", "none | \n", "1 | \n", "none | \n", "True | \n", "Nikki | \n", "young beautiful woman, flirting, lip bite, slavic Caucasian insanely realistic full body photo of a stunning woman, Maxim, flirty, hyperreal, painting by Ross Tran, | \n", "165 | \n", "True | \n", "rank_65 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
34992 | \n", "2023-07-09 23:59:00 | \n", "https://cdn.discordapp.com/attachments/995431151084773486/1127630133679886336/icyfire4801_None_5a071b57-520b-4b42-8b39-41496fb9ee19.png | \n", "NaN | \n", "general-12 | \n", "True | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "True | \n", "NaN | \n", "4:7 | \n", "1 | \n", "0 | \n", "False | \n", "none | \n", "400 | \n", "none | \n", "True | \n", "icyfire4801 | \n", "\n", " | 3 | \n", "False | \n", "no_rank | \n", "
34993 | \n", "2023-07-09 23:59:00 | \n", "https://cdn.discordapp.com/attachments/995431151084773486/1127630050330673226/wolfman1976_star_trek_alien_pin_up_in_starfleet_uniform_with_ti_409a98d0-cfd6-4b48-91be-7241941eb8db.png | \n", "NaN | \n", "general-12 | \n", "True | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "True | \n", "NaN | \n", "2:3 | \n", "1 | \n", "0 | \n", "False | \n", "expressive | \n", "250 | \n", "none | \n", "True | \n", "wolfman1976 | \n", "star trek alien pin up in starfleet uniform with tiger companion, colored pencil drawing by Anna Cattish | \n", "109 | \n", "True | \n", "rank_42 | \n", "
34994 | \n", "2023-07-09 23:59:00 | \n", "https://cdn.discordapp.com/attachments/995431151084773486/1127630042051137626/icyfire4801_None_8032cba2-da10-47a2-ba45-8de7379c8b6d.png | \n", "NaN | \n", "general-12 | \n", "True | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "True | \n", "NaN | \n", "4:7 | \n", "1 | \n", "0 | \n", "False | \n", "none | \n", "300 | \n", "none | \n", "True | \n", "icyfire4801 | \n", "\n", " | 2 | \n", "False | \n", "no_rank | \n", "
34995 | \n", "2023-07-09 23:59:00 | \n", "https://cdn.discordapp.com/attachments/989274712590917653/1127630129020014673/0xmoody_fantasy_bandit_holding_sword_scary_face_brute__lotr_lcg_46499402-e932-4cbf-9d9e-90adebdccceb.png | \n", "NaN | \n", "general-7 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "True | \n", "NaN | \n", "1:1 | \n", "1 | \n", "0 | \n", "False | \n", "none | \n", "none | \n", "none | \n", "True | \n", "0xmoody | \n", "fantasy bandit, holding sword, scary face, brute, , lotr lcg art style, in the style of tanbi kei, martin ansin, pierremony chan, pilesstacks, magewave, bronzepunk, closeup intensity | \n", "183 | \n", "True | \n", "rank_43 | \n", "
34996 | \n", "2023-07-09 23:59:00 | \n", "https://cdn.discordapp.com/attachments/989274756341706822/1127630086171004969/bambiispots_young_Aaron_Taylor_Johnson_with_glasses_happy_Ghibl_5002b8a6-4c90-4614-b2ad-eefcc1f98213.png | \n", "NaN | \n", "general-10 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "False | \n", "True | \n", "NaN | \n", "1:1 | \n", "1 | \n", "0 | \n", "False | \n", "none | \n", "none | \n", "none | \n", "True | \n", "bambiispots | \n", "young Aaron Taylor Johnson with glasses, happy, Ghibli | \n", "55 | \n", "False | \n", "no_rank | \n", "
34997 rows × 26 columns
\n", "