add some scripts.

This commit is contained in:
2025-02-24 14:51:51 +08:00
parent cad5aa11d6
commit 9622338750
27 changed files with 1859467 additions and 0 deletions

31
scripts/iafd/config.py Normal file
View File

@ -0,0 +1,31 @@
import logging
import os
import inspect
from datetime import datetime
# MySQL 配置
db_config = {
'host': '172.18.0.3',
'user': 'root',
'password': 'mysqlpw',
'database': 'stockdb'
}
# 设置日志配置
def setup_logging(log_filename=None):
# 如果未传入 log_filename则使用当前脚本名称作为日志文件名
if log_filename is None:
# 获取调用 setup_logging 的脚本文件名
caller_frame = inspect.stack()[1]
caller_filename = os.path.splitext(os.path.basename(caller_frame.filename))[0]
# 获取当前日期,格式为 yyyymmdd
current_date = datetime.now().strftime('%Y%m%d')
# 拼接 log 文件名,将日期加在扩展名前
log_filename = f'./log/{caller_filename}_{current_date}.log'
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s [%(filename)s:%(lineno)d] (%(funcName)s) - %(message)s',
handlers=[
logging.FileHandler(log_filename),
logging.StreamHandler()
])

File diff suppressed because it is too large Load Diff

1028792
scripts/iafd/data/iafd_merge.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
../result/iafd_meta.json

View File

@ -0,0 +1 @@
/root/scripts/javhd/result/models_detail.json

10110
scripts/iafd/data/stashdb.csv Normal file

File diff suppressed because it is too large Load Diff

121310
scripts/iafd/data/stashdb.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
/root/scripts/thelordofporn/result/actress_detail.json

236
scripts/iafd/data_merge.py Normal file
View File

@ -0,0 +1,236 @@
"""
Script Name:
Description: 从 https://www.iafd.com 上获取信息。利用cloudscraper绕过cloudflare
detail_fetch.py 从本地已经保存的列表数据,逐个拉取详情,并输出到文件。
list_fetch_astro.py 按照星座拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_birth.py 按照生日拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_ethnic.py 按照人种拉取数据,获得演员的信息列表。数据量大,但详细字段很多无效的
list_merge.py 上面三个列表的数据,取交集,得到整体数据。
iafd_scrape.py 借助 https://github.com/stashapp/CommunityScrapers 实现的脚本,可以输入演员的 iafd链接,获取兼容 stashapp 格式的数据。(作用不大,因为国籍、照片等字段不匹配)
html_format.py 负责读取已经保存的html目录, 提取信息,格式化输出。
data_merge.py 负责合并数据,它把从 iafd, javhd, thelordofporn 以及搭建 stashapp, 从上面更新到的演员数据(需导出)进行合并;
stashdb_merge.py 负责把从stashapp中导出的单个演员的json文件, 批量合并并输出; 通常我们需要把stashapp中导出的批量文件压缩并传输到data/tmp目录,解压后合并
从而获取到一份完整的数据列表。
Author: [Your Name]
Created Date: YYYY-MM-DD
Last Modified: YYYY-MM-DD
Version: 1.0
Modification History:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
"""
import os
import json
import csv
import logging
# 配置日志
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
logger = logging.getLogger(__name__)
# 输入目录和输出文件
input_dir = 'data'
output_json_file = f'{input_dir}/iafd_merge.json'
output_csv_file = f'{input_dir}/iafd_merge.csv'
output_person_txt = f'{input_dir}/all_person.txt'
# 读取iafd_meta.json
try:
with open(os.path.join(input_dir, 'iafd_meta.json'), 'r', encoding='utf-8') as file:
iafd_data = json.load(file)
logger.info("Loaded iafd_meta.json")
except Exception as e:
logger.error(f"Error loading iafd_meta.json: {e}")
iafd_data = []
# 读取stashdb.json
try:
with open(os.path.join(input_dir, 'stashdb.json'), 'r', encoding='utf-8') as file:
stashdb_data = json.load(file)
logger.info("Loaded stashdb.json")
except Exception as e:
logger.error(f"Error loading stashdb.json: {e}")
stashdb_data = []
# 读取javhd_meta.json
try:
with open(os.path.join(input_dir, 'javhd_meta.json'), 'r', encoding='utf-8') as file:
javhd_data = json.load(file)
logger.info("Loaded javhd_meta.json")
except Exception as e:
logger.error(f"Error loading javhd_meta.json: {e}")
javhd_data = []
# 读取thelordofporn_meta.json
try:
with open(os.path.join(input_dir, 'thelordofporn_meta.json'), 'r', encoding='utf-8') as file:
lordporn_data = json.load(file)
logger.info("Loaded thelordofporn_meta.json")
except Exception as e:
logger.error(f"Error loading thelordofporn_meta.json: {e}")
lordporn_data = []
# 构建all_meta_data去重
all_meta_data = set()
# 从各数据源提取unique的姓名数据
for person_entry in iafd_data:
all_meta_data.add(person_entry['person'])
for stashdb_entry in stashdb_data:
all_meta_data.add(stashdb_entry['name'])
for javhd_entry in javhd_data:
all_meta_data.add(javhd_entry['ja_name'])
for lordporn_entry in lordporn_data:
all_meta_data.add(lordporn_entry['pornstar'])
# 合并数据的列表
merged_data = []
# 遍历all_meta_data按规则合并
for person in all_meta_data:
# 初始化合并的数据结构体
merged_entry = {
'person': person
}
# 初始化stashdb_entry所有字段为空
stashdb_entry = {
'stashdb_gender': '',
'stashdb_birthdate': '',
'stashdb_ethnicity': '',
'stashdb_country': '',
'stashdb_height': '',
'stashdb_measurements': '',
'stashdb_fake_tits': '',
'stashdb_career_length': '',
'stashdb_aliases': ''
}
# 初始化javhd_entry所有字段为空
javhd_entry = {
'javhd_rank': '',
'javhd_height': '',
'javhd_weight': '',
'javhd_breast_size': '',
'javhd_breast_factor': '',
'javhd_birth_date': '',
'javhd_ethnicity': ''
}
# 初始化lordporn_entry所有字段为空
lordporn_entry = {
'lordporn_rating': '',
'lordporn_rank': '',
'lordporn_career_start': '',
'lordporn_measurements': '',
'lordporn_born': '',
'lordporn_height': '',
'lordporn_weight': ''
}
# 初始化in_iafd字段默认为N
in_iafd = 'N'
iafd_match = next((item for item in iafd_data if item.get('person') == person), None)
if iafd_match:
in_iafd = 'Y'
# 1. 检查是否存在于 stashdb 数据
in_stashdb = 'N'
stashdb_match = next((item for item in stashdb_data if item.get('name') == person), None)
if stashdb_match:
in_stashdb = 'Y'
# 更新stashdb_entry字段
stashdb_entry.update({
'stashdb_gender': stashdb_match.get('gender', ''),
'stashdb_birthdate': stashdb_match.get('birthdate', ''),
'stashdb_ethnicity': stashdb_match.get('ethnicity', ''),
'stashdb_country': stashdb_match.get('country', ''),
'stashdb_height': stashdb_match.get('height', ''),
'stashdb_measurements': stashdb_match.get('measurements', ''),
'stashdb_fake_tits': stashdb_match.get('fake_tits', ''),
'stashdb_career_length': stashdb_match.get('career_length', ''),
'stashdb_aliases': stashdb_match.get('aliases', '')
})
# 2. 检查是否存在于 javhd 数据
in_javhd = 'N'
javhd_match = next((item for item in javhd_data if item.get('ja_name') == person), None)
if javhd_match:
in_javhd = 'Y'
# 更新javhd_entry字段
javhd_entry.update({
'javhd_rank': javhd_match.get('rank', ''),
'javhd_height': javhd_match.get('height', ''),
'javhd_weight': javhd_match.get('weight', ''),
'javhd_breast_size': javhd_match.get('breast size', ''),
'javhd_breast_factor': javhd_match.get('breast factor', ''),
'javhd_birth_date': javhd_match.get('birth date', ''),
'javhd_ethnicity': javhd_match.get('ethnicity', '')
})
# 3. 检查是否存在于 thelordofporn 数据
in_lordporn = 'N'
lordporn_match = next((item for item in lordporn_data if item.get('pornstar') == person), None)
if lordporn_match:
in_lordporn = 'Y'
# 更新lordporn_entry字段
lordporn_entry.update({
'lordporn_rating': lordporn_match.get('rating', ''),
'lordporn_rank': lordporn_match.get('rank', ''),
'lordporn_career_start': lordporn_match.get('career_start', ''),
'lordporn_measurements': lordporn_match.get('measurements', ''),
'lordporn_born': lordporn_match.get('born', ''),
'lordporn_height': lordporn_match.get('height', ''),
'lordporn_weight': lordporn_match.get('weight', '')
})
# 添加 in_stashdb, in_javhd, in_lordporn 字段,确保都输出
merged_entry.update({
'in_iafd': in_iafd,
'in_stashdb': in_stashdb,
'in_javhd': in_javhd,
'in_lordporn': in_lordporn
})
# 将stashdb_entry, javhd_entry, lordporn_entry合并到结果中
merged_entry.update(stashdb_entry)
merged_entry.update(javhd_entry)
merged_entry.update(lordporn_entry)
# 将合并后的条目加入到结果列表
merged_data.append(merged_entry)
# 写入iafd_merge.json
try:
with open(output_json_file, 'w', encoding='utf-8') as json_file:
json.dump(merged_data, json_file, ensure_ascii=False, indent=4)
logger.info(f"Data successfully written to {output_json_file}")
except Exception as e:
logger.error(f"Error writing {output_json_file}: {e}")
# 写入iafd_merge.csv
try:
with open(output_csv_file, 'w', newline='', encoding='utf-8') as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=merged_data[0].keys(), delimiter='\t')
writer.writeheader()
writer.writerows(merged_data)
logger.info(f"Data successfully written to {output_csv_file}")
except Exception as e:
logger.error(f"Error writing {output_csv_file}: {e}")
# 输出 all_meta_data 到 all_person.txt并按字母顺序排序
try:
# 排序 all_meta_data
all_meta_data_list = sorted(list(all_meta_data)) # 将集合转换为列表并排序
all_meta_data_str = ','.join(all_meta_data_list) # 使用逗号连接元素
with open(output_person_txt, 'w', encoding='utf-8') as txt_file:
txt_file.write(all_meta_data_str)
logger.info(f"all_meta_data successfully written to all_person.txt")
except Exception as e:
logger.error(f"Error writing all_person.txt: {e}")

View File

@ -0,0 +1,216 @@
"""
Script Name:
Description: 从 https://www.iafd.com 上获取信息。利用cloudscraper绕过cloudflare
detail_fetch.py 从本地已经保存的列表数据,逐个拉取详情,并输出到文件。
list_fetch_astro.py 按照星座拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_birth.py 按照生日拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_ethnic.py 按照人种拉取数据,获得演员的信息列表。数据量大,但详细字段很多无效的
list_merge.py 上面三个列表的数据,取交集,得到整体数据。
iafd_scrape.py 借助 https://github.com/stashapp/CommunityScrapers 实现的脚本,可以输入演员的 iafd链接,获取兼容 stashapp 格式的数据。(作用不大,因为国籍、照片等字段不匹配)
html_format.py 负责读取已经保存的html目录, 提取信息,格式化输出。
data_merge.py 负责合并数据,它把从 iafd, javhd, thelordofporn 以及搭建 stashapp, 从上面更新到的演员数据(需导出)进行合并;
stashdb_merge.py 负责把从stashapp中导出的单个演员的json文件, 批量合并并输出; 通常我们需要把stashapp中导出的批量文件压缩并传输到data/tmp目录,解压后合并
从而获取到一份完整的数据列表。
Author: [Your Name]
Created Date: YYYY-MM-DD
Last Modified: YYYY-MM-DD
Version: 1.0
Modification History:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
"""
import cloudscraper
import time
import json
import csv
import logging
import signal
import sys
from bs4 import BeautifulSoup
from requests.exceptions import RequestException
import config
# 配置日志
config.setup_logging()
# 结果路径
res_dir = './result'
res_json_file = f'{res_dir}/detail.json'
res_csv_file = f'{res_dir}/detail.csv'
input_json_file = f'{res_dir}/merged.json'
# 存储结果
final_data = []
# 读取 detail.json 中的 href
def load_existing_hrefs():
existing_hrefs = set()
try:
with open(res_json_file, 'r') as file:
data = json.load(file)
for entry in data:
existing_hrefs.add(entry['href'])
except FileNotFoundError:
logging.info("detail.json not found, starting fresh.")
return existing_hrefs
# 请求网页并提取所需数据
def fetch_and_parse_page(url, scraper):
try:
response = scraper.get(url)
if response.status_code != 200:
logging.warning(f"Failed to fetch {url}, Status code: {response.status_code}")
return None
# 解析 HTML 内容
soup = BeautifulSoup(response.text, 'html.parser')
# 提取数据
data = {}
# 定义我们需要的字段名称和HTML中对应的标签
fields = {
'performer_aka': 'Performer AKA',
'birthday': 'Birthday',
'astrology': 'Astrology',
'birthplace': 'Birthplace',
'gender': 'Gender',
'years_active': 'Years Active',
'ethnicity': 'Ethnicity',
'nationality': 'Nationality',
'hair_colors': 'Hair Colors',
'eye_color': 'Eye Color',
'height': 'Height',
'weight': 'Weight',
'measurements': 'Measurements',
'tattoos': 'Tattoos',
'piercings': 'Piercings'
}
reversed_map = {v: k for k, v in fields.items()}
# 遍历每个 bioheading
bioheadings = soup.find_all('p', class_='bioheading')
for bio in bioheadings:
heading = bio.text.strip()
biodata = None
# 如果包含 "Performer",需要特殊处理
if 'Performer' in heading:
heading = 'Performer AKA'
biodata_div = bio.find_next('div', class_='biodata')
if biodata_div:
div_text = biodata_div.get_text(separator='|').strip()
biodata = [b.strip() for b in div_text.split('|') if b.strip()]
else:
biodata = bio.find_next('p', class_='biodata').text.strip() if bio.find_next('p', class_='biodata') else ''
# 保存数据
if heading in reversed_map:
kkey = reversed_map[heading]
data[kkey] = biodata
return data
except RequestException as e:
logging.error(f"Error fetching {url}: {e}")
return None
# 写入 detail.json
def write_to_detail_json(data):
with open(res_json_file, 'w', encoding='utf-8') as json_file:
json.dump(data, json_file, indent=4, ensure_ascii=False)
# 写入 CSV 文件
def write_to_csv(data):
try:
with open(res_csv_file, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile, delimiter=',')
header = ['person', 'href', 'performer_aka', 'birthday', 'astrology', 'birthplace', 'gender', 'years_active', 'ethnicity', 'nationality', 'hair_colors', 'eye_color', 'height', 'weight', 'measurements', 'tattoos', 'piercings']
writer.writerow(header)
for entry in data:
writer.writerow([
entry.get('person', ''),
entry.get('href', ''),
'|'.join(entry.get('performer_aka', [])),
entry.get('birthday', ''),
entry.get('astrology', ''),
entry.get('birthplace', ''),
entry.get('gender', ''),
entry.get('years_active', ''),
entry.get('ethnicity', ''),
entry.get('nationality', ''),
entry.get('hair_colors', ''),
entry.get('eye_color', ''),
entry.get('height', ''),
entry.get('weight', ''),
entry.get('measurements', ''),
entry.get('tattoos', ''),
entry.get('piercings', '')
])
except Exception as e:
logging.error(f"Error writing to CSV: {e}")
def handle_exit_signal(signal, frame):
logging.info("Gracefully exiting... Saving remaining data to Json and CSV.")
write_to_csv(final_data) # Ensure final data is written when exiting
write_to_detail_json(final_data)
sys.exit(0)
def main():
# 初始化 cloudscraper
scraper = cloudscraper.create_scraper()
# 加载已存在的 href 列表
existing_hrefs = load_existing_hrefs()
# 读取 merged.json
with open(input_json_file, 'r') as file:
merged_data = json.load(file)
# 注册退出信号
signal.signal(signal.SIGINT, handle_exit_signal) # Handle Ctrl+C
signal.signal(signal.SIGTERM, handle_exit_signal) # Handle kill signal
# 遍历 merged.json 中的数据
loop = 0
for entry in merged_data:
href = entry.get('href')
person = entry.get('person')
if href in existing_hrefs:
logging.info(f"Skipping {href} - already processed")
continue
logging.info(f"Processing {href} - {person}")
# 获取并解析数据
data = fetch_and_parse_page(href, scraper)
if data:
# 如果数据正确,加入到 final_data
final_data.append({
'href': href,
'person': person,
**data
})
loop = loop+1
if loop % 100 == 0:
# 更新 detail.json 文件
print(f'flush data to json file. now data count: {loop}')
write_to_detail_json(final_data)
# 更新已存在的 href
existing_hrefs.add(href)
# 延时,防止请求过快被封锁
time.sleep(1)
# 完成后一次性写入 CSV
write_to_csv(final_data)
logging.info("Data processing completed.")
if __name__ == "__main__":
main()

View File

@ -1,3 +1,29 @@
"""
Script Name:
Description: 从 https://www.iafd.com 上获取信息。利用cloudscraper绕过cloudflare
detail_fetch.py 从本地已经保存的列表数据,逐个拉取详情,并输出到文件。
list_fetch_astro.py 按照星座拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_birth.py 按照生日拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_ethnic.py 按照人种拉取数据,获得演员的信息列表。数据量大,但详细字段很多无效的
list_merge.py 上面三个列表的数据,取交集,得到整体数据。
iafd_scrape.py 借助 https://github.com/stashapp/CommunityScrapers 实现的脚本,可以输入演员的 iafd链接,获取兼容 stashapp 格式的数据。(作用不大,因为国籍、照片等字段不匹配)
html_format.py 负责读取已经保存的html目录, 提取信息,格式化输出。
data_merge.py 负责合并数据,它把从 iafd, javhd, thelordofporn 以及搭建 stashapp, 从上面更新到的演员数据(需导出)进行合并;
stashdb_merge.py 负责把从stashapp中导出的单个演员的json文件, 批量合并并输出; 通常我们需要把stashapp中导出的批量文件压缩并传输到data/tmp目录,解压后合并
从而获取到一份完整的数据列表。
Author: [Your Name]
Created Date: YYYY-MM-DD
Last Modified: YYYY-MM-DD
Version: 1.0
Modification History:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
"""
import os import os
import json import json
import csv import csv

163
scripts/iafd/iafd_scrape.py Normal file
View File

@ -0,0 +1,163 @@
"""
Script Name:
Description: 从 https://www.iafd.com 上获取信息。利用cloudscraper绕过cloudflare
detail_fetch.py 从本地已经保存的列表数据,逐个拉取详情,并输出到文件。
list_fetch_astro.py 按照星座拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_birth.py 按照生日拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_ethnic.py 按照人种拉取数据,获得演员的信息列表。数据量大,但详细字段很多无效的
list_merge.py 上面三个列表的数据,取交集,得到整体数据。
iafd_scrape.py 借助 https://github.com/stashapp/CommunityScrapers 实现的脚本,可以输入演员的 iafd链接,获取兼容 stashapp 格式的数据。(作用不大,因为国籍、照片等字段不匹配)
html_format.py 负责读取已经保存的html目录, 提取信息,格式化输出。
data_merge.py 负责合并数据,它把从 iafd, javhd, thelordofporn 以及搭建 stashapp, 从上面更新到的演员数据(需导出)进行合并;
stashdb_merge.py 负责把从stashapp中导出的单个演员的json文件, 批量合并并输出; 通常我们需要把stashapp中导出的批量文件压缩并传输到data/tmp目录,解压后合并
从而获取到一份完整的数据列表。
Author: [Your Name]
Created Date: YYYY-MM-DD
Last Modified: YYYY-MM-DD
Version: 1.0
Modification History:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
"""
import json
import os
import subprocess
import time
import logging
from typing import List
# 设置日志配置
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
logger = logging.getLogger(__name__)
# 预定义的 scrapers 目录
scrapers_dir = "/root/gitlabs/stashapp_CommunityScrapers/scrapers"
meta_file = "./data/iafd_meta.json"
cursor_file = "./data/iafd_cursor.txt"
output_dir = f"{scrapers_dir}/iafd_meta"
# 重试次数和间隔
MAX_RETRIES = 10
RETRY_DELAY = 5 # 5秒重试间隔
# 创建输出目录
os.makedirs(output_dir, exist_ok=True)
def read_processed_hrefs() -> set:
"""
读取已经处理过的 href
"""
processed_hrefs = set()
if os.path.exists(cursor_file):
with open(cursor_file, "r", encoding="utf-8") as f:
processed_hrefs = {line.strip().split(",")[1] for line in f if "," in line}
return processed_hrefs
def execute_scraper_command(href: str, idv: str) -> bool:
"""
执行命令抓取数据成功则返回True否则返回False。
包含重试机制。
"""
command = f"cd {scrapers_dir}; python3 -m IAFD.IAFD performer {href} > {output_dir}/{idv}.json"
attempt = 0
while attempt < MAX_RETRIES:
try:
logger.info(f"执行命令: {command}")
subprocess.run(command, shell=True, check=True)
return True
except subprocess.CalledProcessError as e:
logger.error(f"执行命令失败: {e}. 重试 {attempt + 1}/{MAX_RETRIES}...")
time.sleep(RETRY_DELAY)
attempt += 1
logger.error(f"命令执行失败,已尝试 {MAX_RETRIES} 次: {command}")
return False
def validate_json_file(idv: str) -> bool:
"""
校验 JSON 文件是否有效
"""
output_file = f"{output_dir}/{idv}.json"
try:
with open(output_file, "r", encoding="utf-8") as f:
content = f.read().strip()
json_data = json.loads(content) # 尝试解析 JSON
if "name" not in json_data:
raise ValueError("缺少 'name' 字段")
return True
except (json.JSONDecodeError, ValueError) as e:
logger.error(f"解析失败,删除无效文件: {output_file}. 错误: {e}")
os.remove(output_file)
return False
def process_iafd_meta(data: List[dict], processed_hrefs: set) -> None:
"""
处理 iafd_meta.json 中的数据
"""
for entry in data:
person = entry.get("person")
href = entry.get("href")
if not person or not href:
logger.warning(f"跳过无效数据: {entry}")
continue
# 解析 href 提取 id
try:
idv = href.split("id=")[-1]
except IndexError:
logger.error(f"无法解析 ID: {href}")
continue
output_file = f"{output_dir}/{idv}.json"
# 跳过已处理的 href
if href in processed_hrefs:
logger.info(f"已处理,跳过: {person}, {href}")
continue
# 执行数据抓取
if not execute_scraper_command(href, idv):
continue
# 校验 JSON 文件
if not validate_json_file(idv):
continue
# 记录已处理数据
with open(cursor_file, "a", encoding="utf-8") as f:
f.write(f"{person},{href}\n")
logger.info(f"成功处理: {person} - {href}")
def main():
"""
主程序执行函数
"""
# 读取已处理的 href
processed_hrefs = read_processed_hrefs()
# 读取 iafd_meta.json 数据
try:
with open(meta_file, "r", encoding="utf-8") as f:
data = json.load(f)
except json.JSONDecodeError as e:
logger.error(f"读取 iafd_meta.json 错误: {e}")
return
# 处理数据
process_iafd_meta(data, processed_hrefs)
if __name__ == "__main__":
main()

View File

@ -0,0 +1,140 @@
"""
Script Name:
Description: 从 https://www.iafd.com 上获取信息。利用cloudscraper绕过cloudflare
detail_fetch.py 从本地已经保存的列表数据,逐个拉取详情,并输出到文件。
list_fetch_astro.py 按照星座拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_birth.py 按照生日拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_ethnic.py 按照人种拉取数据,获得演员的信息列表。数据量大,但详细字段很多无效的
list_merge.py 上面三个列表的数据,取交集,得到整体数据。
iafd_scrape.py 借助 https://github.com/stashapp/CommunityScrapers 实现的脚本,可以输入演员的 iafd链接,获取兼容 stashapp 格式的数据。(作用不大,因为国籍、照片等字段不匹配)
html_format.py 负责读取已经保存的html目录, 提取信息,格式化输出。
data_merge.py 负责合并数据,它把从 iafd, javhd, thelordofporn 以及搭建 stashapp, 从上面更新到的演员数据(需导出)进行合并;
stashdb_merge.py 负责把从stashapp中导出的单个演员的json文件, 批量合并并输出; 通常我们需要把stashapp中导出的批量文件压缩并传输到data/tmp目录,解压后合并
从而获取到一份完整的数据列表。
Author: [Your Name]
Created Date: YYYY-MM-DD
Last Modified: YYYY-MM-DD
Version: 1.0
Modification History:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
"""
import cloudscraper
import json
import time
import csv
from bs4 import BeautifulSoup
import logging
import config
config.setup_logging()
# 定义基础 URL 和可变参数
host_url = "https://www.iafd.com"
base_url = f"{host_url}/astrology.rme/sign="
astro_list = ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virgo', 'Libra', 'Scorpio', 'Sagittarius', 'Capricorn', 'Aquarius', 'Pisces']
# 设置 headers 和 scraper
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
scraper = cloudscraper.create_scraper()
# 结果路径
res_dir = './result'
# 记录 ethinc_map
astro_map = []
# 网络请求并解析 HTML
def fetch_page(url):
try:
response = scraper.get(url, headers=headers)
response.raise_for_status()
return response.text
except Exception as e:
logging.error(f"Failed to fetch {url}: {e}")
return None
# 解析 HTML 内容,提取需要的数据
def parse_page(html, astro):
soup = BeautifulSoup(html, "html.parser")
astro_div = soup.find("div", id="astro")
if not astro_div:
logging.warning(f"Warning: No 'astro' div found in {astro}")
return None
flag = False
list_cnt = 0
birth_date = None
for elem in astro_div.find_all(recursive=False):
if elem.name == "h3" and "astroday" in elem.get("class", []):
birth_date = elem.get_text(strip=True)
elif elem.name == "div" and "perficon" in elem.get("class", []):
a_tag = elem.find("a")
if a_tag:
href = host_url + a_tag["href"]
name = a_tag.find("span", class_="perfname")
if name:
astro_map.append({
"astrology": astro,
"birth_date": birth_date,
"person": name.get_text(strip=True),
"href": href
})
flag = True
list_cnt = list_cnt +1
if flag:
logging.info(f"get {list_cnt} persons from this page. total persons: {len(astro_map)}")
return soup
else:
return None
# 处理翻页,星座的无需翻页
def handle_pagination(soup, astro):
return None
# 主逻辑函数:循环处理每个种族
def process_astro_data():
for astro in astro_list:
url = base_url + astro
next_url = url
logging.info(f"Fetching data for {astro}, url {url} ...")
while next_url:
html = fetch_page(next_url)
if html:
soup = parse_page(html, astro)
if soup:
next_url = handle_pagination(soup, astro)
else:
logging.info(f"wrong html content. retring {next_url} ...")
# 定期保存结果
save_data()
time.sleep(2) # 控制访问频率
else:
logging.info(f"Retrying {next_url} ...")
time.sleep(5) # 等待后再重试
# 保存到文件
def save_data():
with open(f'{res_dir}/astro.json', 'w', encoding='utf-8') as json_file:
json.dump(astro_map, json_file, indent=4, ensure_ascii=False)
with open(f'{res_dir}/astro.csv', 'w', newline='', encoding='utf-8') as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=['astrology', 'birth_date', 'person', 'href'])
writer.writeheader()
writer.writerows(astro_map)
# 执行主逻辑
if __name__ == '__main__':
process_astro_data()
save_data()
logging.info("Data fetching and saving completed.")

View File

@ -0,0 +1,152 @@
"""
Script Name:
Description: 从 https://www.iafd.com 上获取信息。利用cloudscraper绕过cloudflare
detail_fetch.py 从本地已经保存的列表数据,逐个拉取详情,并输出到文件。
list_fetch_astro.py 按照星座拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_birth.py 按照生日拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_ethnic.py 按照人种拉取数据,获得演员的信息列表。数据量大,但详细字段很多无效的
list_merge.py 上面三个列表的数据,取交集,得到整体数据。
iafd_scrape.py 借助 https://github.com/stashapp/CommunityScrapers 实现的脚本,可以输入演员的 iafd链接,获取兼容 stashapp 格式的数据。(作用不大,因为国籍、照片等字段不匹配)
html_format.py 负责读取已经保存的html目录, 提取信息,格式化输出。
data_merge.py 负责合并数据,它把从 iafd, javhd, thelordofporn 以及搭建 stashapp, 从上面更新到的演员数据(需导出)进行合并;
stashdb_merge.py 负责把从stashapp中导出的单个演员的json文件, 批量合并并输出; 通常我们需要把stashapp中导出的批量文件压缩并传输到data/tmp目录,解压后合并
从而获取到一份完整的数据列表。
Author: [Your Name]
Created Date: YYYY-MM-DD
Last Modified: YYYY-MM-DD
Version: 1.0
Modification History:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
"""
import requests
import cloudscraper
import json
import time
import csv
from bs4 import BeautifulSoup
import logging
import config
config.setup_logging()
# 创建 cloudscraper 会话
# 设置 headers 和 scraper
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
scraper = cloudscraper.create_scraper()
# 结果路径
res_dir = './result'
# 存储出生日期的映射
birth_map = []
# 设置基础URL
host_url = "https://www.iafd.com"
base_url = "https://www.iafd.com/calendar.asp?calmonth={month}&calday={day}"
# 定义获取页面内容的函数
def fetch_page(month, day):
url = base_url.format(month=month, day=day)
retries = 3
while retries > 0:
try:
# 发送请求并获取页面
logging.info(f"Fetching URL: {url}")
response = scraper.get(url)
response.raise_for_status()
return response.text
except requests.exceptions.RequestException as e:
logging.error(f"Request failed: {e}")
retries -= 1
time.sleep(2) # 等待2秒后重试
return None
# 解析页面内容并更新birth_map
def parse_page(html, month, day):
soup = BeautifulSoup(html, 'html.parser')
datarows = soup.find_all('div', class_='col-sm-12 col-lg-9')
if not datarows:
return None
flag = False
list_cnt = 0
rows = datarows[0].find_all('div', class_='col-sm-4')
for row in rows:
link_tag = row.find('a')
person = link_tag.text.strip() if link_tag else ''
href = link_tag['href'] if link_tag else ''
href = host_url + href
# 如果 href 已经在 birth_map 中,跳过
flag = True
if any(entry['href'] == href for entry in birth_map):
continue
# 将数据添加到 birth_map
birth_map.append({
'month': month,
'day': day,
'person': person,
'href': href
})
list_cnt = list_cnt +1
if flag:
logging.info(f"get {list_cnt} persons from this page. total persons: {len(birth_map)}")
return soup
else:
return None
# 循环遍历每个日期
def fetch_birthdays():
for month in range(1, 13): # 遍历1到12月
for day in range(1, 32): # 遍历1到31天
logging.info(f"Processing: Month {month}, Day {day}")
while True:
html = fetch_page(month, day)
if html:
soup = parse_page(html, month, day)
if soup:
# 定期保存结果
save_data()
# 跳出while循环获取下一个生日的url数据
time.sleep(2) # 控制访问频率
break
else:
logging.warning(f"No data. Retrying: Month {month}, Day {day}")
time.sleep(3) # 等待后再重试
else:
logging.warning(f"Network error. Retrying: Month {month}, Day {day}")
time.sleep(3) # 等待后再重试
# 将birth_map保存到json文件
def save_data():
with open(f'{res_dir}/birth.json', 'w', encoding='utf-8') as f:
json.dump(birth_map, f, ensure_ascii=False, indent=4)
with open(f'{res_dir}/birth.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=['month', 'day', 'person', 'href'])
writer.writeheader()
for entry in birth_map:
writer.writerow(entry)
# 主函数
def main():
# 获取数据
fetch_birthdays()
# 保存结果
save_data()
if __name__ == '__main__':
main()

View File

@ -0,0 +1,153 @@
"""
Script Name:
Description: 从 https://www.iafd.com 上获取信息。利用cloudscraper绕过cloudflare
detail_fetch.py 从本地已经保存的列表数据,逐个拉取详情,并输出到文件。
list_fetch_astro.py 按照星座拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_birth.py 按照生日拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_ethnic.py 按照人种拉取数据,获得演员的信息列表。数据量大,但详细字段很多无效的
list_merge.py 上面三个列表的数据,取交集,得到整体数据。
iafd_scrape.py 借助 https://github.com/stashapp/CommunityScrapers 实现的脚本,可以输入演员的 iafd链接,获取兼容 stashapp 格式的数据。(作用不大,因为国籍、照片等字段不匹配)
html_format.py 负责读取已经保存的html目录, 提取信息,格式化输出。
data_merge.py 负责合并数据,它把从 iafd, javhd, thelordofporn 以及搭建 stashapp, 从上面更新到的演员数据(需导出)进行合并;
stashdb_merge.py 负责把从stashapp中导出的单个演员的json文件, 批量合并并输出; 通常我们需要把stashapp中导出的批量文件压缩并传输到data/tmp目录,解压后合并
从而获取到一份完整的数据列表。
Author: [Your Name]
Created Date: YYYY-MM-DD
Last Modified: YYYY-MM-DD
Version: 1.0
Modification History:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
"""
import cloudscraper
import json
import time
import csv
from bs4 import BeautifulSoup
import logging
import config
config.setup_logging()
# 定义基础 URL 和可变参数
host_url = "https://www.iafd.com"
base_url = f"{host_url}/lookupethnic.rme/ethnic="
ethnic_list = ['caucasian', 'black', 'asian', 'latin', 'native american', 'middle eastern', 'mediteranean', 'indian', 'polynesian', 'multi-ethnic', 'ethnic', 'romani', 'eurasian', 'north african', 'south asian']
# 设置 headers 和 scraper
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
scraper = cloudscraper.create_scraper()
# 结果路径
res_dir = './result'
# 记录 ethinc_map
ethnic_map = []
# 网络请求并解析 HTML
def fetch_page(url):
try:
response = scraper.get(url, headers=headers)
response.raise_for_status()
return response.text
except Exception as e:
logging.error(f"Failed to fetch {url}: {e}")
return None
# 解析 HTML 内容,提取需要的数据
def parse_page(html, ethnic):
# 手动修复 HTML 标签
html = html.replace('<br>', '').replace('<a ', '<a target="_blank" ') # 修复一些不规范标签
soup = BeautifulSoup(html, 'lxml') # 使用lxml解析器
#soup = BeautifulSoup(html, 'html.parser')
rows = soup.find_all('div', class_='row headshotrow')
flag = False
list_cnt = 0
for row in rows:
for col in row.find_all('div', class_='col-lg-2 col-md-3 col-sm-4 col-xs-6'):
link_tag = col.find('a')
img_tag = col.find('div', class_='pictag')
flag = True
if link_tag and img_tag:
href = host_url + link_tag['href']
person = img_tag.text.strip()
# 将数据存储到 ethnic_map
ethnic_map.append({
'ethnic': ethnic,
'person': person,
'href': href
})
list_cnt = list_cnt +1
if flag:
logging.info(f"get {list_cnt} persons from this page. total persons: {len(ethnic_map)}")
return soup
else:
return None
# 处理翻页
def handle_pagination(soup, ethnic):
next_page = soup.find('a', rel='next')
if next_page:
next_url = host_url + next_page['href']
logging.info(f"Found next page: {next_url}")
return next_url
else:
logging.info(f"All pages fetched for {ethnic}.")
return None
# 处理带空格的种族名
def format_ethnic(ethnic):
return ethnic.replace(' ', '+')
# 主逻辑函数:循环处理每个种族
def process_ethnic_data():
for ethnic in ethnic_list:
url = base_url + format_ethnic(ethnic)
next_url = url
cursor = int(len(ethnic_map) / 100)
logging.info(f"Fetching data for {ethnic}, url {url} ...")
while next_url:
html = fetch_page(next_url)
if html:
soup = parse_page(html, ethnic)
if soup:
next_url = handle_pagination(soup, ethnic)
else:
logging.info(f"wrong html content. retring {next_url} ...")
# 定期保存结果
if len(ethnic_map) / 100 > cursor:
cursor = int(len(ethnic_map) / 100)
save_data()
time.sleep(2) # 控制访问频率
else:
logging.info(f"Retrying {next_url} ...")
time.sleep(5) # 等待后再重试
# 保存到文件
def save_data():
with open(f'{res_dir}/ethnic.json', 'w', encoding='utf-8') as json_file:
json.dump(ethnic_map, json_file, indent=4, ensure_ascii=False)
with open(f'{res_dir}/ethnic.csv', 'w', newline='', encoding='utf-8') as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=['ethnic', 'person', 'href'])
writer.writeheader()
writer.writerows(ethnic_map)
# 执行主逻辑
if __name__ == '__main__':
process_ethnic_data()
save_data()
logging.info("Data fetching and saving completed.")

View File

@ -0,0 +1,99 @@
"""
Script Name:
Description: 从 https://www.iafd.com 上获取信息。利用cloudscraper绕过cloudflare
detail_fetch.py 从本地已经保存的列表数据,逐个拉取详情,并输出到文件。
list_fetch_astro.py 按照星座拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_birth.py 按照生日拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_ethnic.py 按照人种拉取数据,获得演员的信息列表。数据量大,但详细字段很多无效的
list_merge.py 上面三个列表的数据,取交集,得到整体数据。
iafd_scrape.py 借助 https://github.com/stashapp/CommunityScrapers 实现的脚本,可以输入演员的 iafd链接,获取兼容 stashapp 格式的数据。(作用不大,因为国籍、照片等字段不匹配)
html_format.py 负责读取已经保存的html目录, 提取信息,格式化输出。
data_merge.py 负责合并数据,它把从 iafd, javhd, thelordofporn 以及搭建 stashapp, 从上面更新到的演员数据(需导出)进行合并;
stashdb_merge.py 负责把从stashapp中导出的单个演员的json文件, 批量合并并输出; 通常我们需要把stashapp中导出的批量文件压缩并传输到data/tmp目录,解压后合并
从而获取到一份完整的数据列表。
Author: [Your Name]
Created Date: YYYY-MM-DD
Last Modified: YYYY-MM-DD
Version: 1.0
Modification History:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
"""
import json
import csv
import os
from collections import defaultdict
# 读取文件并返回内容
def read_json(file_path):
try:
with open(file_path, 'r', encoding='utf-8') as f:
return json.load(f)
except FileNotFoundError:
print(f"文件 {file_path} 未找到.")
return []
except json.JSONDecodeError:
print(f"文件 {file_path} 解析错误.")
return []
# 处理数据,去重并合并 person 字段
def process_data(files):
href_map = defaultdict(list)
# 读取并处理每个文件
for file in files:
data = read_json(file['path'])
for entry in data:
href = entry.get('href')
person = entry.get('person')
if href:
href_map[href].append(person)
# 合并相同 href 的 person连接用 "|"
result = []
for href, persons in href_map.items():
person = '|'.join(set(persons)) # 去重后合并
result.append({'href': href, 'person': person})
return result
# 保存结果到JSON文件
def save_to_json(data, output_file):
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
# 保存结果到CSV文件
def save_to_csv(data, output_file):
with open(output_file, 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=['href', 'person'])
writer.writeheader()
writer.writerows(data)
# 主函数,执行数据处理并保存
def main():
# 定义需要处理的文件
files = [
{'path': 'result/birth.json', 'name': 'birth'},
{'path': 'result/astro.json', 'name': 'astro'},
{'path': 'result/ethnic.json', 'name': 'ethnic'}
]
# 处理数据
processed_data = process_data(files)
# 确保 result 目录存在
os.makedirs('result', exist_ok=True)
# 输出结果到 JSON 和 CSV 文件
save_to_json(processed_data, 'result/merged.json')
save_to_csv(processed_data, 'result/merged.csv')
print("数据处理完成,结果已保存到 result/merged.json 和 result/merged.csv")
if __name__ == "__main__":
main()

34867
scripts/iafd/result/astro.csv Normal file

File diff suppressed because it is too large Load Diff

209198
scripts/iafd/result/astro.json Normal file

File diff suppressed because it is too large Load Diff

34867
scripts/iafd/result/birth.csv Normal file

File diff suppressed because it is too large Load Diff

209198
scripts/iafd/result/birth.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,9 @@
person,href,performer_aka,birthday,astrology,birthplace,gender,years_active,ethnicity,nationality,hair_colors,eye_color,height,weight,measurements,tattoos,piercings
Aaliyah,https://www.iafd.com/person.rme/id=50caabcd-c270-4d4a-b80f-2429201f6ff5,No known aliases,01/01/????,Capricorn,US,Trans woman,2006-2007,Black,American,Black/Dark Brown,Unknown,"5 feet, 5 inches (165 cm)",123 lbs (56 kg),No data,No data,No data
Amanda Addams,https://www.iafd.com/person.rme/id=67bdb3b8-adf6-4ce5-9278-73a5777b459e,Amanda Adams|Amanda Stone|Camile|Camille|Emily Moore,01/01/????,Capricorn,"New Port Richey, FL",Woman,1990-1997,Caucasian,American,Brown/Red,Unknown,No data,No data,42DD-??-??,Flower with stem and leaves right breast,None
Ashley,https://www.iafd.com/person.rme/id=44d0ecd8-c519-40b4-83aa-cdfe9670d238,No known aliases,01/01/????,Capricorn,No data,Trans woman,,Latin,Mexican,,Unknown,No data,No data,No data,No data,No data
Daniela Canalis,https://www.iafd.com/person.rme/id=3b2728e0-6eac-4620-8e3f-5086d3cbaa24,Daniele|Danyelle Comini|Isabella Bittencour,01/01/????,Capricorn,"Belo Horizonte, Brazil",Trans woman,2003-2006,Caucasian,Brazilian,,Blue,"5 feet, 5 inches (165 cm)",No data,No data,No data,No data
Dream Doll,https://www.iafd.com/person.rme/id=481fd985-9740-4c1b-b794-4620d6528cc1,No known aliases,01/01/????,Capricorn,USA,Trans woman,,Black,American,,Unknown,No data,No data,No data,"""Theresa"" right front shoulder; Stars right lower arm; ""Locked Loyalty"" inner left lower arm; Flower right hip",Right cheekbone
Gianna,https://www.iafd.com/person.rme/id=8e22a8e0-e28e-4767-ad74-cae7a1ef6f15,No known aliases,01/01/????,Capricorn,No data,Trans woman,2006-2009,Caucasian,No data,,Unknown,No data,No data,No data,No data,No data
Kirsten,https://www.iafd.com/person.rme/id=ca699282-1b57-4ce7-9bcc-d7799a292e34,Kirsten Claudia|Trish,01/01/????,Capricorn,No data,Trans woman,,Latin,No data,Black/Brown/Light Brown,Unknown,No data,No data,36DD-24-35,No data,No data
Maya,https://www.iafd.com/person.rme/id=fae84552-50cf-494b-b34f-a22e1a669fd9,No known aliases,01/01/????,Capricorn,No data,Trans woman,,Latin/Multi-ethnic,No data,Black/Dark Brown,Unknown,"5 feet, 5 inches (165 cm)",125 lbs (57 kg),No data,No data,No data
1 person href performer_aka birthday astrology birthplace gender years_active ethnicity nationality hair_colors eye_color height weight measurements tattoos piercings
2 Aaliyah https://www.iafd.com/person.rme/id=50caabcd-c270-4d4a-b80f-2429201f6ff5 No known aliases 01/01/???? Capricorn US Trans woman 2006-2007 Black American Black/Dark Brown Unknown 5 feet, 5 inches (165 cm) 123 lbs (56 kg) No data No data No data
3 Amanda Addams https://www.iafd.com/person.rme/id=67bdb3b8-adf6-4ce5-9278-73a5777b459e Amanda Adams|Amanda Stone|Camile|Camille|Emily Moore 01/01/???? Capricorn New Port Richey, FL Woman 1990-1997 Caucasian American Brown/Red Unknown No data No data 42DD-??-?? Flower with stem and leaves right breast None
4 Ashley https://www.iafd.com/person.rme/id=44d0ecd8-c519-40b4-83aa-cdfe9670d238 No known aliases 01/01/???? Capricorn No data Trans woman Latin Mexican Unknown No data No data No data No data No data
5 Daniela Canalis https://www.iafd.com/person.rme/id=3b2728e0-6eac-4620-8e3f-5086d3cbaa24 Daniele|Danyelle Comini|Isabella Bittencour 01/01/???? Capricorn Belo Horizonte, Brazil Trans woman 2003-2006 Caucasian Brazilian Blue 5 feet, 5 inches (165 cm) No data No data No data No data
6 Dream Doll https://www.iafd.com/person.rme/id=481fd985-9740-4c1b-b794-4620d6528cc1 No known aliases 01/01/???? Capricorn USA Trans woman Black American Unknown No data No data No data "Theresa" right front shoulder; Stars right lower arm; "Locked Loyalty" inner left lower arm; Flower right hip Right cheekbone
7 Gianna https://www.iafd.com/person.rme/id=8e22a8e0-e28e-4767-ad74-cae7a1ef6f15 No known aliases 01/01/???? Capricorn No data Trans woman 2006-2009 Caucasian No data Unknown No data No data No data No data No data
8 Kirsten https://www.iafd.com/person.rme/id=ca699282-1b57-4ce7-9bcc-d7799a292e34 Kirsten Claudia|Trish 01/01/???? Capricorn No data Trans woman Latin No data Black/Brown/Light Brown Unknown No data No data 36DD-24-35 No data No data
9 Maya https://www.iafd.com/person.rme/id=fae84552-50cf-494b-b34f-a22e1a669fd9 No known aliases 01/01/???? Capricorn No data Trans woman Latin/Multi-ethnic No data Black/Dark Brown Unknown 5 feet, 5 inches (165 cm) 125 lbs (57 kg) No data No data No data

View File

@ -0,0 +1,169 @@
[
{
"href": "https://www.iafd.com/person.rme/id=50caabcd-c270-4d4a-b80f-2429201f6ff5",
"person": "Aaliyah",
"performer_aka": [
"No known aliases"
],
"birthday": "01/01/????",
"astrology": "Capricorn",
"birthplace": "US",
"gender": "Trans woman",
"years_active": "2006-2007",
"ethnicity": "Black",
"nationality": "American",
"hair_colors": "Black/Dark Brown",
"eye_color": "Unknown",
"height": "5 feet, 5 inches (165 cm)",
"weight": "123 lbs (56 kg)",
"measurements": "No data",
"tattoos": "No data",
"piercings": "No data"
},
{
"href": "https://www.iafd.com/person.rme/id=67bdb3b8-adf6-4ce5-9278-73a5777b459e",
"person": "Amanda Addams",
"performer_aka": [
"Amanda Adams",
"Amanda Stone",
"Camile",
"Camille",
"Emily Moore"
],
"birthday": "01/01/????",
"astrology": "Capricorn",
"birthplace": "New Port Richey, FL",
"gender": "Woman",
"years_active": "1990-1997",
"ethnicity": "Caucasian",
"nationality": "American",
"hair_colors": "Brown/Red",
"eye_color": "Unknown",
"height": "No data",
"weight": "No data",
"measurements": "42DD-??-??",
"tattoos": "Flower with stem and leaves right breast",
"piercings": "None"
},
{
"href": "https://www.iafd.com/person.rme/id=44d0ecd8-c519-40b4-83aa-cdfe9670d238",
"person": "Ashley",
"performer_aka": [
"No known aliases"
],
"birthday": "01/01/????",
"astrology": "Capricorn",
"birthplace": "No data",
"gender": "Trans woman",
"ethnicity": "Latin",
"nationality": "Mexican",
"eye_color": "Unknown",
"height": "No data",
"weight": "No data",
"measurements": "No data",
"tattoos": "No data",
"piercings": "No data"
},
{
"href": "https://www.iafd.com/person.rme/id=3b2728e0-6eac-4620-8e3f-5086d3cbaa24",
"person": "Daniela Canalis",
"performer_aka": [
"Daniele",
"Danyelle Comini",
"Isabella Bittencour"
],
"birthday": "01/01/????",
"astrology": "Capricorn",
"birthplace": "Belo Horizonte, Brazil",
"gender": "Trans woman",
"years_active": "2003-2006",
"ethnicity": "Caucasian",
"nationality": "Brazilian",
"eye_color": "Blue",
"height": "5 feet, 5 inches (165 cm)",
"weight": "No data",
"measurements": "No data",
"tattoos": "No data",
"piercings": "No data"
},
{
"href": "https://www.iafd.com/person.rme/id=481fd985-9740-4c1b-b794-4620d6528cc1",
"person": "Dream Doll",
"performer_aka": [
"No known aliases"
],
"birthday": "01/01/????",
"astrology": "Capricorn",
"birthplace": "USA",
"gender": "Trans woman",
"ethnicity": "Black",
"nationality": "American",
"eye_color": "Unknown",
"height": "No data",
"weight": "No data",
"measurements": "No data",
"tattoos": "\"Theresa\" right front shoulder; Stars right lower arm; \"Locked Loyalty\" inner left lower arm; Flower right hip",
"piercings": "Right cheekbone"
},
{
"href": "https://www.iafd.com/person.rme/id=8e22a8e0-e28e-4767-ad74-cae7a1ef6f15",
"person": "Gianna",
"performer_aka": [
"No known aliases"
],
"birthday": "01/01/????",
"astrology": "Capricorn",
"birthplace": "No data",
"gender": "Trans woman",
"years_active": "2006-2009",
"ethnicity": "Caucasian",
"nationality": "No data",
"eye_color": "Unknown",
"height": "No data",
"weight": "No data",
"measurements": "No data",
"tattoos": "No data",
"piercings": "No data"
},
{
"href": "https://www.iafd.com/person.rme/id=ca699282-1b57-4ce7-9bcc-d7799a292e34",
"person": "Kirsten",
"performer_aka": [
"Kirsten Claudia",
"Trish"
],
"birthday": "01/01/????",
"astrology": "Capricorn",
"birthplace": "No data",
"gender": "Trans woman",
"ethnicity": "Latin",
"nationality": "No data",
"hair_colors": "Black/Brown/Light Brown",
"eye_color": "Unknown",
"height": "No data",
"weight": "No data",
"measurements": "36DD-24-35",
"tattoos": "No data",
"piercings": "No data"
},
{
"href": "https://www.iafd.com/person.rme/id=fae84552-50cf-494b-b34f-a22e1a669fd9",
"person": "Maya",
"performer_aka": [
"No known aliases"
],
"birthday": "01/01/????",
"astrology": "Capricorn",
"birthplace": "No data",
"gender": "Trans woman",
"ethnicity": "Latin/Multi-ethnic",
"nationality": "No data",
"hair_colors": "Black/Dark Brown",
"eye_color": "Unknown",
"height": "5 feet, 5 inches (165 cm)",
"weight": "125 lbs (57 kg)",
"measurements": "No data",
"tattoos": "No data",
"piercings": "No data"
}
]

View File

@ -0,0 +1,169 @@
ethnic,person,href
caucasian,_Xxxcsr,https://www.iafd.com/person.rme/id=e989e91a-280b-4628-b79f-1e79653e5686
caucasian,00_CUM,https://www.iafd.com/person.rme/id=b0d3d280-c4a1-4723-825e-b87054cc6db4
caucasian,10inchdaddy22,https://www.iafd.com/person.rme/id=e532100a-94c8-487b-9b63-28a243ee5f1c
caucasian,19yr Old Hole,https://www.iafd.com/person.rme/id=f7873838-8dca-4c6c-87d8-324b440bdf90
caucasian,1FFuntop,https://www.iafd.com/person.rme/id=0a4d9829-8642-4de0-b69a-efc8ef75b65a
caucasian,2ItalianPigs-1,https://www.iafd.com/person.rme/id=fe6e2401-ff29-432f-a056-3045e92c210e
caucasian,2ItalianPigs-2,https://www.iafd.com/person.rme/id=ef1c102d-ec28-4711-a4ca-2dbc7ccde95c
caucasian,2Ply,https://www.iafd.com/person.rme/id=9cba7067-aaba-4354-be81-3801e0b49e3c
caucasian,314,https://www.iafd.com/person.rme/id=7e8e91f7-6a20-47e5-a104-9bf214bfcd93
caucasian,412,https://www.iafd.com/person.rme/id=6d5b3ee3-2c5c-4c5b-97cc-a4403c3099e5
caucasian,4satisffaction,https://www.iafd.com/person.rme/id=38519408-e982-4946-8552-6c65a7173c41
caucasian,500,https://www.iafd.com/person.rme/id=ec91e07f-2b3c-4395-b8fd-714ef5df0dc2
caucasian,6ft Phenom,https://www.iafd.com/person.rme/id=ebb969f3-ded3-4a51-8f4b-c75e2ff888ff
caucasian,A. Cherry,https://www.iafd.com/person.rme/id=d2afd63e-8671-4cb0-986a-80857be3bd22
caucasian,A. J.,https://www.iafd.com/person.rme/id=680441cb-473e-447d-b7c1-3a535d1907e3
caucasian,A. J.,https://www.iafd.com/person.rme/id=fc9ca6eb-dd4c-4981-974c-795c882562d0
caucasian,A. Jay Popoff,https://www.iafd.com/person.rme/id=d0d78f5c-f02e-493c-a8e7-8267b51c3e74
caucasian,A. Monkey,https://www.iafd.com/person.rme/id=ede17c7e-5fda-47e6-87a8-743dc96c3616
caucasian,A. Sebastian Grant,https://www.iafd.com/person.rme/id=f605a2ed-eb28-435e-9778-229afedb415d
caucasian,A.C.,https://www.iafd.com/person.rme/id=49e8da8e-6ff1-451f-9e17-2245e584ced5
caucasian,A.J.,https://www.iafd.com/person.rme/id=bddc3d19-d238-4c23-916d-b9a924342e25
caucasian,A.J.,https://www.iafd.com/person.rme/id=5a9dc024-d304-467d-8c77-2feeba6bbe6b
caucasian,A.J.,https://www.iafd.com/person.rme/id=186076fa-d889-4763-bf95-8a8e513a902d
caucasian,A.J.,https://www.iafd.com/person.rme/id=046c0d17-88b1-4353-aa66-e4836d826a39
caucasian,A.J.,https://www.iafd.com/person.rme/id=f0bf186a-8e21-4280-93c7-f14b67e0b99f
caucasian,A.J.,https://www.iafd.com/person.rme/id=f97d3b40-f263-4f7f-bc18-d7237ff742d5
caucasian,A.J.,https://www.iafd.com/person.rme/id=9360079c-b1eb-4e04-acee-157e3194e864
caucasian,A.J. Addams,https://www.iafd.com/person.rme/id=968f6684-868c-41a5-8c09-56cd3ade1e9e
caucasian,A.J. Alexander,https://www.iafd.com/person.rme/id=1c1ede7e-6b9d-4620-bb1c-2542cda4de5e
caucasian,A.J. Applegate,https://www.iafd.com/person.rme/id=beae8520-e7c1-419c-be66-8d9675ed0786
caucasian,A.J. Bailey,https://www.iafd.com/person.rme/id=19c0ba4f-bad3-4213-8f78-6a68a7602f70
caucasian,A.J. Chambers,https://www.iafd.com/person.rme/id=959de668-c69d-4ac3-9004-556e82751ec7
caucasian,A.J. Harwood,https://www.iafd.com/person.rme/id=dd1d185d-c7d9-4b60-8176-08b9d1976fd5
caucasian,A.J. Long,https://www.iafd.com/person.rme/id=b6ac2c53-5858-4f1f-9a7f-15c81b21149b
caucasian,A.J. Long,https://www.iafd.com/person.rme/id=8ab1f8da-093e-4996-8363-f21032dd9240
caucasian,A.J. Lynn,https://www.iafd.com/person.rme/id=17322f3f-19e1-44a4-8dfb-fcb8cab90635
caucasian,A.J. Martin Jr.,https://www.iafd.com/person.rme/id=b457b4a5-f25f-47af-aaf6-7217ad493fc7
caucasian,A.J. Pup,https://www.iafd.com/person.rme/id=219829d8-25e9-41c6-9fe4-b426efdf07cb
caucasian,A.J. Rider,https://www.iafd.com/person.rme/id=ce6fbb62-932c-478f-b006-810d6acf1970
caucasian,A.J. Steele,https://www.iafd.com/person.rme/id=4bc0502f-e362-4894-a02d-042d380f1255
caucasian,A.J. Sylvester,https://www.iafd.com/person.rme/id=a336dafd-dc39-4a2c-b38e-4090045136db
caucasian,A.K. Honey,https://www.iafd.com/person.rme/id=9dd95bb1-4fe7-447b-9578-eeac9854fefe
caucasian,A.M. Hall,https://www.iafd.com/person.rme/id=2922c3f7-f4f5-4134-87f1-4cbc3e943263
caucasian,A.S. Spumpin,https://www.iafd.com/person.rme/id=7949ad9c-ca3a-4b86-8ac0-d6f1c6916ee5
caucasian,Aaden Stark,https://www.iafd.com/person.rme/id=da17f06e-2582-424b-9d85-bb1b6ce4ea46
caucasian,Aali Kali,https://www.iafd.com/person.rme/id=49aaca01-af5b-40b8-a170-51f71656de6e
caucasian,Aaliyah Ca Pelle,https://www.iafd.com/person.rme/id=8c93d76f-2d7a-4e00-a776-9cf77db9e5fa
caucasian,Aaliyah Jolie,https://www.iafd.com/person.rme/id=022d49de-b755-41e9-a326-31470f608aee
caucasian,Aaliyah Love,https://www.iafd.com/person.rme/id=56a39956-f447-4e7d-afdc-eb57d345a0e6
caucasian,Aaliyah Marie,https://www.iafd.com/person.rme/id=7209eacf-6809-43a3-b12e-a34e11978ce0
caucasian,Aaliyah May,https://www.iafd.com/person.rme/id=66dcfc26-1168-4d49-8ed0-9265999dc9b9
caucasian,Aaliyah Taylor,https://www.iafd.com/person.rme/id=09e02ce8-265b-4032-85ff-9274882a03c9
caucasian,Aami,https://www.iafd.com/person.rme/id=bd23fe38-a789-42c2-a52d-bfcc749f6988
caucasian,Aana,https://www.iafd.com/person.rme/id=83bf092e-04df-47d3-bffb-4bf944f5e8d5
caucasian,Aaralyn,https://www.iafd.com/person.rme/id=0ca0335e-5e5a-44ff-9341-2945417c7159
caucasian,Aaralyn Barra,https://www.iafd.com/person.rme/id=12961b1a-4eeb-4de6-b7b6-7af309e98e0d
caucasian,Aariah James,https://www.iafd.com/person.rme/id=7c493883-acb1-4926-a7ac-f2539b247951
caucasian,Aarielle Alexis,https://www.iafd.com/person.rme/id=81b89f83-32bb-47cf-8a52-6dea4c6f8546
caucasian,Aarin Asker,https://www.iafd.com/person.rme/id=a9804ca2-0442-4509-8b7d-52d7fb63b86c
caucasian,Aarlyn Jewel,https://www.iafd.com/person.rme/id=2eadade6-5925-470c-a4f9-62cf137f3dc6
caucasian,Aarol Renti,https://www.iafd.com/person.rme/id=d132694b-cfa6-44b7-a6ec-5c5728a9152b
caucasian,Aaron,https://www.iafd.com/person.rme/id=0bcf2f14-59e7-42b5-ab98-3b72ca8e78d1
caucasian,Aaron,https://www.iafd.com/person.rme/id=14c3d85d-fb19-46e6-b783-12d69aef8cfd
caucasian,Aaron,https://www.iafd.com/person.rme/id=a795d407-bbd1-4865-972a-4154e3ac87ea
caucasian,Aaron,https://www.iafd.com/person.rme/id=ab69ae52-40c1-4934-baa0-f8736e4dec96
caucasian,Aaron,https://www.iafd.com/person.rme/id=b87828e6-dfd3-4a2e-990f-2d32b45a22b2
caucasian,Aaron,https://www.iafd.com/person.rme/id=bde4a973-aedb-41d2-b0db-7125abff8388
caucasian,Aaron,https://www.iafd.com/person.rme/id=13dd1882-177a-45a9-a9a0-2d943270889a
caucasian,Aaron,https://www.iafd.com/person.rme/id=ef72fc4f-e4f1-4528-ac76-8b0a791d403d
caucasian,Aaron,https://www.iafd.com/person.rme/id=2fef44bd-09f8-4c19-8b6e-da40977eed38
caucasian,Aaron,https://www.iafd.com/person.rme/id=34c1a5b2-db2a-4ad6-b86b-b8a3955f2531
caucasian,Aaron,https://www.iafd.com/person.rme/id=c291debc-b09f-45d2-b025-15c63ac8dc1c
caucasian,Aaron,https://www.iafd.com/person.rme/id=249eb49d-8c9c-4315-8013-5c1e5b90f066
caucasian,Aaron,https://www.iafd.com/person.rme/id=48f35b7e-5959-4f61-a3a6-af9d864ebb56
caucasian,Aaron,https://www.iafd.com/person.rme/id=31d7393c-e4c0-4819-99e2-827e68c5b3fd
caucasian,Aaron,https://www.iafd.com/person.rme/id=adae952d-1a54-43f5-9a07-1c929e460b9c
caucasian,Aaron,https://www.iafd.com/person.rme/id=0ba79587-bb74-47f5-a697-28cf0325271d
caucasian,Aaron,https://www.iafd.com/person.rme/id=1765cd87-2f1d-4029-a980-75b0b57a0de6
caucasian,Aaron,https://www.iafd.com/person.rme/id=a6b539e5-e1be-4aab-8321-1e498ce1886a
caucasian,Aaron,https://www.iafd.com/person.rme/id=8f51cb33-715c-42fb-b557-c79447e9d8de
caucasian,Aaron,https://www.iafd.com/person.rme/id=2be9c6ce-7c7e-42be-8f1b-ff23ea4b8f0c
caucasian,Aaron,https://www.iafd.com/person.rme/id=7ae847fa-f3fa-4aac-8b9a-590b28ec7ece
caucasian,Aaron,https://www.iafd.com/person.rme/id=32723ada-239d-448c-afc2-b53d6efe7119
caucasian,Aaron,https://www.iafd.com/person.rme/id=e82090a3-cad4-42ae-bbd3-8cbc81f302ed
caucasian,Aaron,https://www.iafd.com/person.rme/id=02a276a7-7cfb-495a-b259-c4ced018dfb8
caucasian,Aaron,https://www.iafd.com/person.rme/id=aca9732b-93ec-4df8-9b05-f7d082a3a2e7
caucasian,Aaron,https://www.iafd.com/person.rme/id=cc0c006c-5418-4c73-8e3d-ad7fd20f8a4a
caucasian,Aaron,https://www.iafd.com/person.rme/id=222209d8-35ae-4897-b943-5b9fa37fa349
caucasian,Aaron,https://www.iafd.com/person.rme/id=0bd712f9-1c83-4725-81f7-889264c73130
caucasian,Aaron,https://www.iafd.com/person.rme/id=baa2df10-3ff8-40b6-8564-496ad4a0896c
caucasian,Aaron,https://www.iafd.com/person.rme/id=1ad5029e-0943-4220-9eae-64db6d330037
caucasian,Aaron,https://www.iafd.com/person.rme/id=ae6a0389-e608-4341-aa8a-0aa58f041429
caucasian,Aaron,https://www.iafd.com/person.rme/id=2c740488-9456-4c3f-8aa1-9f4088d57b60
caucasian,Aaron Action,https://www.iafd.com/person.rme/id=0cf3cb49-9a04-4415-9631-1f3e3a321a0c
caucasian,Aaron Adams,https://www.iafd.com/person.rme/id=a7eaefab-fbf8-4df9-b231-a926028cb6de
caucasian,Aaron Allen,https://www.iafd.com/person.rme/id=a05d5004-7e12-4841-806b-b755dbb44822
caucasian,Aaron Anderson,https://www.iafd.com/person.rme/id=bfc896f4-bb66-4c52-b7a1-9ded6179927e
caucasian,Aaron Anderson,https://www.iafd.com/person.rme/id=e54cef38-e5c5-4941-905c-bb7166113197
caucasian,Aaron Anderson,https://www.iafd.com/person.rme/id=f3227b3b-a412-4d85-8f33-b45250dd816f
caucasian,Aaron Andrews,https://www.iafd.com/person.rme/id=f3a67900-7e41-42c0-9d51-10fb93029456
caucasian,Aaron Anthony,https://www.iafd.com/person.rme/id=763f8ab6-3d73-443f-bfdf-e427a376fc9d
caucasian,Aaron Arres,https://www.iafd.com/person.rme/id=52617535-4a26-4509-bfb9-61c850607cd8
caucasian,Aaron Ashford,https://www.iafd.com/person.rme/id=0f879da6-7571-4f40-b477-bffe86c98b63
caucasian,Aaron Aubrey,https://www.iafd.com/person.rme/id=41dcda94-e5e9-40f6-8bc9-e016496b28e2
caucasian,Aaron Aurora,https://www.iafd.com/person.rme/id=5a8010f7-303f-49d7-83e0-2fa51ae328e8
caucasian,Aaron Austin,https://www.iafd.com/person.rme/id=7b47ce4c-7772-48d6-8e00-0c9fcc79e6f5
caucasian,Aaron Baker,https://www.iafd.com/person.rme/id=5329d1a6-60f1-4a15-a3e6-7d33ace73a9b
caucasian,Aaron Blake,https://www.iafd.com/person.rme/id=677c3d1e-c527-41c4-9be9-b4f0aaef2cdf
caucasian,Aaron Brady,https://www.iafd.com/person.rme/id=12d3f5b4-6126-4c7f-9f05-158a35396b01
caucasian,Aaron Brags,https://www.iafd.com/person.rme/id=0ac6898f-e6e3-4c01-8b4e-608010266bcf
caucasian,Aaron Brandt,https://www.iafd.com/person.rme/id=a9d33459-f5df-44da-a9f4-f0dbbbb96388
caucasian,Aaron Bruiser,https://www.iafd.com/person.rme/id=4e8e3dbf-bf78-499f-8181-24e7975248c3
caucasian,Aaron Buns,https://www.iafd.com/person.rme/id=08d448a5-ccc0-4b09-a595-7687f3ce69c0
caucasian,Aaron Burke,https://www.iafd.com/person.rme/id=da4f84c3-5a72-45c3-9b82-8204ed8a05ee
caucasian,Aaron Burns,https://www.iafd.com/person.rme/id=f65e6ef9-5b38-49b1-bab9-89cfd1c6fe4a
caucasian,Aaron Cage,https://www.iafd.com/person.rme/id=993af443-e658-4301-a87a-c661cb59bbc4
caucasian,Aaron Carpenter,https://www.iafd.com/person.rme/id=b1ef40c7-d950-47b3-b0a5-969c849292b4
caucasian,Aaron Chambers,https://www.iafd.com/person.rme/id=8f5d2120-2962-4691-a0a6-5c970ab98172
caucasian,Aaron Clayton,https://www.iafd.com/person.rme/id=60335579-134f-4abe-b1b1-9bc3144fe212
caucasian,Aaron Colt,https://www.iafd.com/person.rme/id=d85d624e-17d3-4378-8e2b-b188da56ef3d
caucasian,Aaron Cox,https://www.iafd.com/person.rme/id=72f132a7-e0ff-45b2-8f86-3e7ce6b12d70
caucasian,Aaron Coxx,https://www.iafd.com/person.rme/id=7157bff9-cfc0-447c-84a2-f1e7872ab9ab
caucasian,Aaron Daniels,https://www.iafd.com/person.rme/id=f567c8ff-4300-46b0-92f2-b45326a6dcd0
caucasian,Aaron Daniels,https://www.iafd.com/person.rme/id=ce866d5d-dd1c-479a-b9fc-b5d7a3ca241f
caucasian,Aaron Daniels,https://www.iafd.com/person.rme/id=c4952b70-085e-4895-9ccd-399fa0dcdffe
caucasian,Aaron Dickson,https://www.iafd.com/person.rme/id=cad33743-6af6-451e-8c0f-b78c6cc0ef79
caucasian,Aaron Diesel,https://www.iafd.com/person.rme/id=acad35f2-a5c7-4d50-b4ce-cb777b0d66ca
caucasian,Aaron Donlough,https://www.iafd.com/person.rme/id=0b56fefc-692e-48fa-a188-18ea295ded65
caucasian,Aaron Elias,https://www.iafd.com/person.rme/id=a6582f00-ab75-4c9e-9f95-1c04ef524e89
caucasian,Aaron Ereon,https://www.iafd.com/person.rme/id=71fd05d1-13f0-45d2-95d4-bb6159cce86a
caucasian,Aaron Evans,https://www.iafd.com/person.rme/id=64d26615-a159-437a-81f9-f61ad689be8a
caucasian,Aaron French,https://www.iafd.com/person.rme/id=d4a6a561-e998-4894-9d3c-f4e427940efc
caucasian,Aaron Gage,https://www.iafd.com/person.rme/id=51ea6379-4edc-431e-baaa-39104fc995cd
caucasian,Aaron Galloway,https://www.iafd.com/person.rme/id=d659207f-f1d8-437d-aee8-66d1413f8938
caucasian,Aaron Garrett,https://www.iafd.com/person.rme/id=579699d8-562b-4b4b-b236-e7ab4416e52f
caucasian,Aaron Giant,https://www.iafd.com/person.rme/id=7b12e8c8-f210-4de1-a3ec-50aa39d11130
caucasian,Aaron Goldsmith,https://www.iafd.com/person.rme/id=bcd06596-521e-4e70-a976-5467f77acf15
caucasian,Aaron Griffin,https://www.iafd.com/person.rme/id=b93473fe-35f3-44a3-8e6d-3dd2e6d6069b
caucasian,Aaron Griffith,https://www.iafd.com/person.rme/id=adef4c93-70ef-42b1-b164-87e3443dbbb8
caucasian,Aaron Gunner,https://www.iafd.com/person.rme/id=22e50169-ba71-4ab9-b885-39bd2b1826fe
caucasian,Aaron Hartley,https://www.iafd.com/person.rme/id=964ad0d2-fe8e-4c17-8448-e90d4c4ede22
caucasian,Aaron Hawke,https://www.iafd.com/person.rme/id=baaf5c00-1dad-4216-9a1b-a3528262ae7e
caucasian,Aaron Heights,https://www.iafd.com/person.rme/id=8725e56d-1d69-41b4-91a1-3dcf723066d9
caucasian,Aaron Hunter,https://www.iafd.com/person.rme/id=e740bb9d-a8d4-423c-8b79-deb9fd2b8fb4
caucasian,Aaron Jackobs,https://www.iafd.com/person.rme/id=6a9399b2-accd-47de-87ed-638a605718fe
caucasian,Aaron Jackson,https://www.iafd.com/person.rme/id=eab8a8d4-7f47-4bcd-a674-ac05cec184bf
caucasian,Aaron Jacobs,https://www.iafd.com/person.rme/id=212e25cb-6433-4844-97d2-74e468527f88
caucasian,Aaron James,https://www.iafd.com/person.rme/id=a92f35f3-6e11-4e1a-a359-1688eacef54b
caucasian,Aaron Jay,https://www.iafd.com/person.rme/id=4821c613-c9c1-4d03-8eb3-da1e142d38b9
caucasian,Aaron Kellar,https://www.iafd.com/person.rme/id=4a11c374-bd8b-43d5-9617-d494fa544c8b
caucasian,Aaron Kelly,https://www.iafd.com/person.rme/id=2349a3f9-3d6b-4bf0-8346-fa42a420f4dc
caucasian,Aaron Kicks,https://www.iafd.com/person.rme/id=dd6b5da8-8752-4a95-b5f9-8a103fa6c32a
caucasian,Aaron King,https://www.iafd.com/person.rme/id=091c022f-8a61-40d8-ac20-a4ffdf19abec
caucasian,Aaron Kline,https://www.iafd.com/person.rme/id=00427092-cb65-4f9d-8fa1-82952cdde94f
caucasian,Aaron Lamb,https://www.iafd.com/person.rme/id=bbe41e10-ccec-4263-b097-dd12ca037c77
caucasian,Aaron Landcaster,https://www.iafd.com/person.rme/id=bc136a34-c749-482c-8a62-ea175a3a1c09
caucasian,Aaron Lautner,https://www.iafd.com/person.rme/id=b9009df9-a668-45ae-b54f-225c3ec137b7
caucasian,Aaron Lennox,https://www.iafd.com/person.rme/id=6487b44e-3b01-4cdc-9361-46a003892503
caucasian,Aaron Light,https://www.iafd.com/person.rme/id=cf68690a-a911-4679-8cc4-a3b8ad090acc
caucasian,Aaron London,https://www.iafd.com/person.rme/id=795300a8-ac6a-468d-ba81-fce65b3bf963
caucasian,Aaron Luk,https://www.iafd.com/person.rme/id=1946f47d-1724-4796-a7a3-1bc45c7444dc
caucasian,Aaron Machi,https://www.iafd.com/person.rme/id=a10cce9b-d8d6-46ef-9eec-cd5a1040a5f0
caucasian,Aaron Maldini,https://www.iafd.com/person.rme/id=955716e4-6c9c-4bb2-b90b-e0294364fc03
caucasian,Aaron Manson,https://www.iafd.com/person.rme/id=55ecc9c3-d061-4850-b43c-cab8c0c8e246
caucasian,Aaron Mark,https://www.iafd.com/person.rme/id=3c847bf4-8d4a-4d66-89ef-d06a26cc2427
caucasian,Aaron Martin,https://www.iafd.com/person.rme/id=d85ee393-f35b-4f93-a429-ea8a2bd077ae
caucasian,Aaron Master,https://www.iafd.com/person.rme/id=0ae3fc18-85e2-49f9-91b5-7429751ae2f9
caucasian,Aaron Michaels,https://www.iafd.com/person.rme/id=e429e641-9a06-4e25-af3b-b60b78989ac6
1 ethnic person href
2 caucasian _Xxxcsr https://www.iafd.com/person.rme/id=e989e91a-280b-4628-b79f-1e79653e5686
3 caucasian 00_CUM https://www.iafd.com/person.rme/id=b0d3d280-c4a1-4723-825e-b87054cc6db4
4 caucasian 10inchdaddy22 https://www.iafd.com/person.rme/id=e532100a-94c8-487b-9b63-28a243ee5f1c
5 caucasian 19yr Old Hole https://www.iafd.com/person.rme/id=f7873838-8dca-4c6c-87d8-324b440bdf90
6 caucasian 1FFuntop https://www.iafd.com/person.rme/id=0a4d9829-8642-4de0-b69a-efc8ef75b65a
7 caucasian 2ItalianPigs-1 https://www.iafd.com/person.rme/id=fe6e2401-ff29-432f-a056-3045e92c210e
8 caucasian 2ItalianPigs-2 https://www.iafd.com/person.rme/id=ef1c102d-ec28-4711-a4ca-2dbc7ccde95c
9 caucasian 2Ply https://www.iafd.com/person.rme/id=9cba7067-aaba-4354-be81-3801e0b49e3c
10 caucasian 314 https://www.iafd.com/person.rme/id=7e8e91f7-6a20-47e5-a104-9bf214bfcd93
11 caucasian 412 https://www.iafd.com/person.rme/id=6d5b3ee3-2c5c-4c5b-97cc-a4403c3099e5
12 caucasian 4satisffaction https://www.iafd.com/person.rme/id=38519408-e982-4946-8552-6c65a7173c41
13 caucasian 500 https://www.iafd.com/person.rme/id=ec91e07f-2b3c-4395-b8fd-714ef5df0dc2
14 caucasian 6ft Phenom https://www.iafd.com/person.rme/id=ebb969f3-ded3-4a51-8f4b-c75e2ff888ff
15 caucasian A. Cherry https://www.iafd.com/person.rme/id=d2afd63e-8671-4cb0-986a-80857be3bd22
16 caucasian A. J. https://www.iafd.com/person.rme/id=680441cb-473e-447d-b7c1-3a535d1907e3
17 caucasian A. J. https://www.iafd.com/person.rme/id=fc9ca6eb-dd4c-4981-974c-795c882562d0
18 caucasian A. Jay Popoff https://www.iafd.com/person.rme/id=d0d78f5c-f02e-493c-a8e7-8267b51c3e74
19 caucasian A. Monkey https://www.iafd.com/person.rme/id=ede17c7e-5fda-47e6-87a8-743dc96c3616
20 caucasian A. Sebastian Grant https://www.iafd.com/person.rme/id=f605a2ed-eb28-435e-9778-229afedb415d
21 caucasian A.C. https://www.iafd.com/person.rme/id=49e8da8e-6ff1-451f-9e17-2245e584ced5
22 caucasian A.J. https://www.iafd.com/person.rme/id=bddc3d19-d238-4c23-916d-b9a924342e25
23 caucasian A.J. https://www.iafd.com/person.rme/id=5a9dc024-d304-467d-8c77-2feeba6bbe6b
24 caucasian A.J. https://www.iafd.com/person.rme/id=186076fa-d889-4763-bf95-8a8e513a902d
25 caucasian A.J. https://www.iafd.com/person.rme/id=046c0d17-88b1-4353-aa66-e4836d826a39
26 caucasian A.J. https://www.iafd.com/person.rme/id=f0bf186a-8e21-4280-93c7-f14b67e0b99f
27 caucasian A.J. https://www.iafd.com/person.rme/id=f97d3b40-f263-4f7f-bc18-d7237ff742d5
28 caucasian A.J. https://www.iafd.com/person.rme/id=9360079c-b1eb-4e04-acee-157e3194e864
29 caucasian A.J. Addams https://www.iafd.com/person.rme/id=968f6684-868c-41a5-8c09-56cd3ade1e9e
30 caucasian A.J. Alexander https://www.iafd.com/person.rme/id=1c1ede7e-6b9d-4620-bb1c-2542cda4de5e
31 caucasian A.J. Applegate https://www.iafd.com/person.rme/id=beae8520-e7c1-419c-be66-8d9675ed0786
32 caucasian A.J. Bailey https://www.iafd.com/person.rme/id=19c0ba4f-bad3-4213-8f78-6a68a7602f70
33 caucasian A.J. Chambers https://www.iafd.com/person.rme/id=959de668-c69d-4ac3-9004-556e82751ec7
34 caucasian A.J. Harwood https://www.iafd.com/person.rme/id=dd1d185d-c7d9-4b60-8176-08b9d1976fd5
35 caucasian A.J. Long https://www.iafd.com/person.rme/id=b6ac2c53-5858-4f1f-9a7f-15c81b21149b
36 caucasian A.J. Long https://www.iafd.com/person.rme/id=8ab1f8da-093e-4996-8363-f21032dd9240
37 caucasian A.J. Lynn https://www.iafd.com/person.rme/id=17322f3f-19e1-44a4-8dfb-fcb8cab90635
38 caucasian A.J. Martin Jr. https://www.iafd.com/person.rme/id=b457b4a5-f25f-47af-aaf6-7217ad493fc7
39 caucasian A.J. Pup https://www.iafd.com/person.rme/id=219829d8-25e9-41c6-9fe4-b426efdf07cb
40 caucasian A.J. Rider https://www.iafd.com/person.rme/id=ce6fbb62-932c-478f-b006-810d6acf1970
41 caucasian A.J. Steele https://www.iafd.com/person.rme/id=4bc0502f-e362-4894-a02d-042d380f1255
42 caucasian A.J. Sylvester https://www.iafd.com/person.rme/id=a336dafd-dc39-4a2c-b38e-4090045136db
43 caucasian A.K. Honey https://www.iafd.com/person.rme/id=9dd95bb1-4fe7-447b-9578-eeac9854fefe
44 caucasian A.M. Hall https://www.iafd.com/person.rme/id=2922c3f7-f4f5-4134-87f1-4cbc3e943263
45 caucasian A.S. Spumpin https://www.iafd.com/person.rme/id=7949ad9c-ca3a-4b86-8ac0-d6f1c6916ee5
46 caucasian Aaden Stark https://www.iafd.com/person.rme/id=da17f06e-2582-424b-9d85-bb1b6ce4ea46
47 caucasian Aali Kali https://www.iafd.com/person.rme/id=49aaca01-af5b-40b8-a170-51f71656de6e
48 caucasian Aaliyah Ca Pelle https://www.iafd.com/person.rme/id=8c93d76f-2d7a-4e00-a776-9cf77db9e5fa
49 caucasian Aaliyah Jolie https://www.iafd.com/person.rme/id=022d49de-b755-41e9-a326-31470f608aee
50 caucasian Aaliyah Love https://www.iafd.com/person.rme/id=56a39956-f447-4e7d-afdc-eb57d345a0e6
51 caucasian Aaliyah Marie https://www.iafd.com/person.rme/id=7209eacf-6809-43a3-b12e-a34e11978ce0
52 caucasian Aaliyah May https://www.iafd.com/person.rme/id=66dcfc26-1168-4d49-8ed0-9265999dc9b9
53 caucasian Aaliyah Taylor https://www.iafd.com/person.rme/id=09e02ce8-265b-4032-85ff-9274882a03c9
54 caucasian Aami https://www.iafd.com/person.rme/id=bd23fe38-a789-42c2-a52d-bfcc749f6988
55 caucasian Aana https://www.iafd.com/person.rme/id=83bf092e-04df-47d3-bffb-4bf944f5e8d5
56 caucasian Aaralyn https://www.iafd.com/person.rme/id=0ca0335e-5e5a-44ff-9341-2945417c7159
57 caucasian Aaralyn Barra https://www.iafd.com/person.rme/id=12961b1a-4eeb-4de6-b7b6-7af309e98e0d
58 caucasian Aariah James https://www.iafd.com/person.rme/id=7c493883-acb1-4926-a7ac-f2539b247951
59 caucasian Aarielle Alexis https://www.iafd.com/person.rme/id=81b89f83-32bb-47cf-8a52-6dea4c6f8546
60 caucasian Aarin Asker https://www.iafd.com/person.rme/id=a9804ca2-0442-4509-8b7d-52d7fb63b86c
61 caucasian Aarlyn Jewel https://www.iafd.com/person.rme/id=2eadade6-5925-470c-a4f9-62cf137f3dc6
62 caucasian Aarol Renti https://www.iafd.com/person.rme/id=d132694b-cfa6-44b7-a6ec-5c5728a9152b
63 caucasian Aaron https://www.iafd.com/person.rme/id=0bcf2f14-59e7-42b5-ab98-3b72ca8e78d1
64 caucasian Aaron https://www.iafd.com/person.rme/id=14c3d85d-fb19-46e6-b783-12d69aef8cfd
65 caucasian Aaron https://www.iafd.com/person.rme/id=a795d407-bbd1-4865-972a-4154e3ac87ea
66 caucasian Aaron https://www.iafd.com/person.rme/id=ab69ae52-40c1-4934-baa0-f8736e4dec96
67 caucasian Aaron https://www.iafd.com/person.rme/id=b87828e6-dfd3-4a2e-990f-2d32b45a22b2
68 caucasian Aaron https://www.iafd.com/person.rme/id=bde4a973-aedb-41d2-b0db-7125abff8388
69 caucasian Aaron https://www.iafd.com/person.rme/id=13dd1882-177a-45a9-a9a0-2d943270889a
70 caucasian Aaron https://www.iafd.com/person.rme/id=ef72fc4f-e4f1-4528-ac76-8b0a791d403d
71 caucasian Aaron https://www.iafd.com/person.rme/id=2fef44bd-09f8-4c19-8b6e-da40977eed38
72 caucasian Aaron https://www.iafd.com/person.rme/id=34c1a5b2-db2a-4ad6-b86b-b8a3955f2531
73 caucasian Aaron https://www.iafd.com/person.rme/id=c291debc-b09f-45d2-b025-15c63ac8dc1c
74 caucasian Aaron https://www.iafd.com/person.rme/id=249eb49d-8c9c-4315-8013-5c1e5b90f066
75 caucasian Aaron https://www.iafd.com/person.rme/id=48f35b7e-5959-4f61-a3a6-af9d864ebb56
76 caucasian Aaron https://www.iafd.com/person.rme/id=31d7393c-e4c0-4819-99e2-827e68c5b3fd
77 caucasian Aaron https://www.iafd.com/person.rme/id=adae952d-1a54-43f5-9a07-1c929e460b9c
78 caucasian Aaron https://www.iafd.com/person.rme/id=0ba79587-bb74-47f5-a697-28cf0325271d
79 caucasian Aaron https://www.iafd.com/person.rme/id=1765cd87-2f1d-4029-a980-75b0b57a0de6
80 caucasian Aaron https://www.iafd.com/person.rme/id=a6b539e5-e1be-4aab-8321-1e498ce1886a
81 caucasian Aaron https://www.iafd.com/person.rme/id=8f51cb33-715c-42fb-b557-c79447e9d8de
82 caucasian Aaron https://www.iafd.com/person.rme/id=2be9c6ce-7c7e-42be-8f1b-ff23ea4b8f0c
83 caucasian Aaron https://www.iafd.com/person.rme/id=7ae847fa-f3fa-4aac-8b9a-590b28ec7ece
84 caucasian Aaron https://www.iafd.com/person.rme/id=32723ada-239d-448c-afc2-b53d6efe7119
85 caucasian Aaron https://www.iafd.com/person.rme/id=e82090a3-cad4-42ae-bbd3-8cbc81f302ed
86 caucasian Aaron https://www.iafd.com/person.rme/id=02a276a7-7cfb-495a-b259-c4ced018dfb8
87 caucasian Aaron https://www.iafd.com/person.rme/id=aca9732b-93ec-4df8-9b05-f7d082a3a2e7
88 caucasian Aaron https://www.iafd.com/person.rme/id=cc0c006c-5418-4c73-8e3d-ad7fd20f8a4a
89 caucasian Aaron https://www.iafd.com/person.rme/id=222209d8-35ae-4897-b943-5b9fa37fa349
90 caucasian Aaron https://www.iafd.com/person.rme/id=0bd712f9-1c83-4725-81f7-889264c73130
91 caucasian Aaron https://www.iafd.com/person.rme/id=baa2df10-3ff8-40b6-8564-496ad4a0896c
92 caucasian Aaron https://www.iafd.com/person.rme/id=1ad5029e-0943-4220-9eae-64db6d330037
93 caucasian Aaron https://www.iafd.com/person.rme/id=ae6a0389-e608-4341-aa8a-0aa58f041429
94 caucasian Aaron https://www.iafd.com/person.rme/id=2c740488-9456-4c3f-8aa1-9f4088d57b60
95 caucasian Aaron Action https://www.iafd.com/person.rme/id=0cf3cb49-9a04-4415-9631-1f3e3a321a0c
96 caucasian Aaron Adams https://www.iafd.com/person.rme/id=a7eaefab-fbf8-4df9-b231-a926028cb6de
97 caucasian Aaron Allen https://www.iafd.com/person.rme/id=a05d5004-7e12-4841-806b-b755dbb44822
98 caucasian Aaron Anderson https://www.iafd.com/person.rme/id=bfc896f4-bb66-4c52-b7a1-9ded6179927e
99 caucasian Aaron Anderson https://www.iafd.com/person.rme/id=e54cef38-e5c5-4941-905c-bb7166113197
100 caucasian Aaron Anderson https://www.iafd.com/person.rme/id=f3227b3b-a412-4d85-8f33-b45250dd816f
101 caucasian Aaron Andrews https://www.iafd.com/person.rme/id=f3a67900-7e41-42c0-9d51-10fb93029456
102 caucasian Aaron Anthony https://www.iafd.com/person.rme/id=763f8ab6-3d73-443f-bfdf-e427a376fc9d
103 caucasian Aaron Arres https://www.iafd.com/person.rme/id=52617535-4a26-4509-bfb9-61c850607cd8
104 caucasian Aaron Ashford https://www.iafd.com/person.rme/id=0f879da6-7571-4f40-b477-bffe86c98b63
105 caucasian Aaron Aubrey https://www.iafd.com/person.rme/id=41dcda94-e5e9-40f6-8bc9-e016496b28e2
106 caucasian Aaron Aurora https://www.iafd.com/person.rme/id=5a8010f7-303f-49d7-83e0-2fa51ae328e8
107 caucasian Aaron Austin https://www.iafd.com/person.rme/id=7b47ce4c-7772-48d6-8e00-0c9fcc79e6f5
108 caucasian Aaron Baker https://www.iafd.com/person.rme/id=5329d1a6-60f1-4a15-a3e6-7d33ace73a9b
109 caucasian Aaron Blake https://www.iafd.com/person.rme/id=677c3d1e-c527-41c4-9be9-b4f0aaef2cdf
110 caucasian Aaron Brady https://www.iafd.com/person.rme/id=12d3f5b4-6126-4c7f-9f05-158a35396b01
111 caucasian Aaron Brags https://www.iafd.com/person.rme/id=0ac6898f-e6e3-4c01-8b4e-608010266bcf
112 caucasian Aaron Brandt https://www.iafd.com/person.rme/id=a9d33459-f5df-44da-a9f4-f0dbbbb96388
113 caucasian Aaron Bruiser https://www.iafd.com/person.rme/id=4e8e3dbf-bf78-499f-8181-24e7975248c3
114 caucasian Aaron Buns https://www.iafd.com/person.rme/id=08d448a5-ccc0-4b09-a595-7687f3ce69c0
115 caucasian Aaron Burke https://www.iafd.com/person.rme/id=da4f84c3-5a72-45c3-9b82-8204ed8a05ee
116 caucasian Aaron Burns https://www.iafd.com/person.rme/id=f65e6ef9-5b38-49b1-bab9-89cfd1c6fe4a
117 caucasian Aaron Cage https://www.iafd.com/person.rme/id=993af443-e658-4301-a87a-c661cb59bbc4
118 caucasian Aaron Carpenter https://www.iafd.com/person.rme/id=b1ef40c7-d950-47b3-b0a5-969c849292b4
119 caucasian Aaron Chambers https://www.iafd.com/person.rme/id=8f5d2120-2962-4691-a0a6-5c970ab98172
120 caucasian Aaron Clayton https://www.iafd.com/person.rme/id=60335579-134f-4abe-b1b1-9bc3144fe212
121 caucasian Aaron Colt https://www.iafd.com/person.rme/id=d85d624e-17d3-4378-8e2b-b188da56ef3d
122 caucasian Aaron Cox https://www.iafd.com/person.rme/id=72f132a7-e0ff-45b2-8f86-3e7ce6b12d70
123 caucasian Aaron Coxx https://www.iafd.com/person.rme/id=7157bff9-cfc0-447c-84a2-f1e7872ab9ab
124 caucasian Aaron Daniels https://www.iafd.com/person.rme/id=f567c8ff-4300-46b0-92f2-b45326a6dcd0
125 caucasian Aaron Daniels https://www.iafd.com/person.rme/id=ce866d5d-dd1c-479a-b9fc-b5d7a3ca241f
126 caucasian Aaron Daniels https://www.iafd.com/person.rme/id=c4952b70-085e-4895-9ccd-399fa0dcdffe
127 caucasian Aaron Dickson https://www.iafd.com/person.rme/id=cad33743-6af6-451e-8c0f-b78c6cc0ef79
128 caucasian Aaron Diesel https://www.iafd.com/person.rme/id=acad35f2-a5c7-4d50-b4ce-cb777b0d66ca
129 caucasian Aaron Donlough https://www.iafd.com/person.rme/id=0b56fefc-692e-48fa-a188-18ea295ded65
130 caucasian Aaron Elias https://www.iafd.com/person.rme/id=a6582f00-ab75-4c9e-9f95-1c04ef524e89
131 caucasian Aaron Ereon https://www.iafd.com/person.rme/id=71fd05d1-13f0-45d2-95d4-bb6159cce86a
132 caucasian Aaron Evans https://www.iafd.com/person.rme/id=64d26615-a159-437a-81f9-f61ad689be8a
133 caucasian Aaron French https://www.iafd.com/person.rme/id=d4a6a561-e998-4894-9d3c-f4e427940efc
134 caucasian Aaron Gage https://www.iafd.com/person.rme/id=51ea6379-4edc-431e-baaa-39104fc995cd
135 caucasian Aaron Galloway https://www.iafd.com/person.rme/id=d659207f-f1d8-437d-aee8-66d1413f8938
136 caucasian Aaron Garrett https://www.iafd.com/person.rme/id=579699d8-562b-4b4b-b236-e7ab4416e52f
137 caucasian Aaron Giant https://www.iafd.com/person.rme/id=7b12e8c8-f210-4de1-a3ec-50aa39d11130
138 caucasian Aaron Goldsmith https://www.iafd.com/person.rme/id=bcd06596-521e-4e70-a976-5467f77acf15
139 caucasian Aaron Griffin https://www.iafd.com/person.rme/id=b93473fe-35f3-44a3-8e6d-3dd2e6d6069b
140 caucasian Aaron Griffith https://www.iafd.com/person.rme/id=adef4c93-70ef-42b1-b164-87e3443dbbb8
141 caucasian Aaron Gunner https://www.iafd.com/person.rme/id=22e50169-ba71-4ab9-b885-39bd2b1826fe
142 caucasian Aaron Hartley https://www.iafd.com/person.rme/id=964ad0d2-fe8e-4c17-8448-e90d4c4ede22
143 caucasian Aaron Hawke https://www.iafd.com/person.rme/id=baaf5c00-1dad-4216-9a1b-a3528262ae7e
144 caucasian Aaron Heights https://www.iafd.com/person.rme/id=8725e56d-1d69-41b4-91a1-3dcf723066d9
145 caucasian Aaron Hunter https://www.iafd.com/person.rme/id=e740bb9d-a8d4-423c-8b79-deb9fd2b8fb4
146 caucasian Aaron Jackobs https://www.iafd.com/person.rme/id=6a9399b2-accd-47de-87ed-638a605718fe
147 caucasian Aaron Jackson https://www.iafd.com/person.rme/id=eab8a8d4-7f47-4bcd-a674-ac05cec184bf
148 caucasian Aaron Jacobs https://www.iafd.com/person.rme/id=212e25cb-6433-4844-97d2-74e468527f88
149 caucasian Aaron James https://www.iafd.com/person.rme/id=a92f35f3-6e11-4e1a-a359-1688eacef54b
150 caucasian Aaron Jay https://www.iafd.com/person.rme/id=4821c613-c9c1-4d03-8eb3-da1e142d38b9
151 caucasian Aaron Kellar https://www.iafd.com/person.rme/id=4a11c374-bd8b-43d5-9617-d494fa544c8b
152 caucasian Aaron Kelly https://www.iafd.com/person.rme/id=2349a3f9-3d6b-4bf0-8346-fa42a420f4dc
153 caucasian Aaron Kicks https://www.iafd.com/person.rme/id=dd6b5da8-8752-4a95-b5f9-8a103fa6c32a
154 caucasian Aaron King https://www.iafd.com/person.rme/id=091c022f-8a61-40d8-ac20-a4ffdf19abec
155 caucasian Aaron Kline https://www.iafd.com/person.rme/id=00427092-cb65-4f9d-8fa1-82952cdde94f
156 caucasian Aaron Lamb https://www.iafd.com/person.rme/id=bbe41e10-ccec-4263-b097-dd12ca037c77
157 caucasian Aaron Landcaster https://www.iafd.com/person.rme/id=bc136a34-c749-482c-8a62-ea175a3a1c09
158 caucasian Aaron Lautner https://www.iafd.com/person.rme/id=b9009df9-a668-45ae-b54f-225c3ec137b7
159 caucasian Aaron Lennox https://www.iafd.com/person.rme/id=6487b44e-3b01-4cdc-9361-46a003892503
160 caucasian Aaron Light https://www.iafd.com/person.rme/id=cf68690a-a911-4679-8cc4-a3b8ad090acc
161 caucasian Aaron London https://www.iafd.com/person.rme/id=795300a8-ac6a-468d-ba81-fce65b3bf963
162 caucasian Aaron Luk https://www.iafd.com/person.rme/id=1946f47d-1724-4796-a7a3-1bc45c7444dc
163 caucasian Aaron Machi https://www.iafd.com/person.rme/id=a10cce9b-d8d6-46ef-9eec-cd5a1040a5f0
164 caucasian Aaron Maldini https://www.iafd.com/person.rme/id=955716e4-6c9c-4bb2-b90b-e0294364fc03
165 caucasian Aaron Manson https://www.iafd.com/person.rme/id=55ecc9c3-d061-4850-b43c-cab8c0c8e246
166 caucasian Aaron Mark https://www.iafd.com/person.rme/id=3c847bf4-8d4a-4d66-89ef-d06a26cc2427
167 caucasian Aaron Martin https://www.iafd.com/person.rme/id=d85ee393-f35b-4f93-a429-ea8a2bd077ae
168 caucasian Aaron Master https://www.iafd.com/person.rme/id=0ae3fc18-85e2-49f9-91b5-7429751ae2f9
169 caucasian Aaron Michaels https://www.iafd.com/person.rme/id=e429e641-9a06-4e25-af3b-b60b78989ac6

View File

@ -0,0 +1,842 @@
[
{
"ethnic": "caucasian",
"person": "_Xxxcsr",
"href": "https://www.iafd.com/person.rme/id=e989e91a-280b-4628-b79f-1e79653e5686"
},
{
"ethnic": "caucasian",
"person": "00_CUM",
"href": "https://www.iafd.com/person.rme/id=b0d3d280-c4a1-4723-825e-b87054cc6db4"
},
{
"ethnic": "caucasian",
"person": "10inchdaddy22",
"href": "https://www.iafd.com/person.rme/id=e532100a-94c8-487b-9b63-28a243ee5f1c"
},
{
"ethnic": "caucasian",
"person": "19yr Old Hole",
"href": "https://www.iafd.com/person.rme/id=f7873838-8dca-4c6c-87d8-324b440bdf90"
},
{
"ethnic": "caucasian",
"person": "1FFuntop",
"href": "https://www.iafd.com/person.rme/id=0a4d9829-8642-4de0-b69a-efc8ef75b65a"
},
{
"ethnic": "caucasian",
"person": "2ItalianPigs-1",
"href": "https://www.iafd.com/person.rme/id=fe6e2401-ff29-432f-a056-3045e92c210e"
},
{
"ethnic": "caucasian",
"person": "2ItalianPigs-2",
"href": "https://www.iafd.com/person.rme/id=ef1c102d-ec28-4711-a4ca-2dbc7ccde95c"
},
{
"ethnic": "caucasian",
"person": "2Ply",
"href": "https://www.iafd.com/person.rme/id=9cba7067-aaba-4354-be81-3801e0b49e3c"
},
{
"ethnic": "caucasian",
"person": "314",
"href": "https://www.iafd.com/person.rme/id=7e8e91f7-6a20-47e5-a104-9bf214bfcd93"
},
{
"ethnic": "caucasian",
"person": "412",
"href": "https://www.iafd.com/person.rme/id=6d5b3ee3-2c5c-4c5b-97cc-a4403c3099e5"
},
{
"ethnic": "caucasian",
"person": "4satisffaction",
"href": "https://www.iafd.com/person.rme/id=38519408-e982-4946-8552-6c65a7173c41"
},
{
"ethnic": "caucasian",
"person": "500",
"href": "https://www.iafd.com/person.rme/id=ec91e07f-2b3c-4395-b8fd-714ef5df0dc2"
},
{
"ethnic": "caucasian",
"person": "6ft Phenom",
"href": "https://www.iafd.com/person.rme/id=ebb969f3-ded3-4a51-8f4b-c75e2ff888ff"
},
{
"ethnic": "caucasian",
"person": "A. Cherry",
"href": "https://www.iafd.com/person.rme/id=d2afd63e-8671-4cb0-986a-80857be3bd22"
},
{
"ethnic": "caucasian",
"person": "A. J.",
"href": "https://www.iafd.com/person.rme/id=680441cb-473e-447d-b7c1-3a535d1907e3"
},
{
"ethnic": "caucasian",
"person": "A. J.",
"href": "https://www.iafd.com/person.rme/id=fc9ca6eb-dd4c-4981-974c-795c882562d0"
},
{
"ethnic": "caucasian",
"person": "A. Jay Popoff",
"href": "https://www.iafd.com/person.rme/id=d0d78f5c-f02e-493c-a8e7-8267b51c3e74"
},
{
"ethnic": "caucasian",
"person": "A. Monkey",
"href": "https://www.iafd.com/person.rme/id=ede17c7e-5fda-47e6-87a8-743dc96c3616"
},
{
"ethnic": "caucasian",
"person": "A. Sebastian Grant",
"href": "https://www.iafd.com/person.rme/id=f605a2ed-eb28-435e-9778-229afedb415d"
},
{
"ethnic": "caucasian",
"person": "A.C.",
"href": "https://www.iafd.com/person.rme/id=49e8da8e-6ff1-451f-9e17-2245e584ced5"
},
{
"ethnic": "caucasian",
"person": "A.J.",
"href": "https://www.iafd.com/person.rme/id=bddc3d19-d238-4c23-916d-b9a924342e25"
},
{
"ethnic": "caucasian",
"person": "A.J.",
"href": "https://www.iafd.com/person.rme/id=5a9dc024-d304-467d-8c77-2feeba6bbe6b"
},
{
"ethnic": "caucasian",
"person": "A.J.",
"href": "https://www.iafd.com/person.rme/id=186076fa-d889-4763-bf95-8a8e513a902d"
},
{
"ethnic": "caucasian",
"person": "A.J.",
"href": "https://www.iafd.com/person.rme/id=046c0d17-88b1-4353-aa66-e4836d826a39"
},
{
"ethnic": "caucasian",
"person": "A.J.",
"href": "https://www.iafd.com/person.rme/id=f0bf186a-8e21-4280-93c7-f14b67e0b99f"
},
{
"ethnic": "caucasian",
"person": "A.J.",
"href": "https://www.iafd.com/person.rme/id=f97d3b40-f263-4f7f-bc18-d7237ff742d5"
},
{
"ethnic": "caucasian",
"person": "A.J.",
"href": "https://www.iafd.com/person.rme/id=9360079c-b1eb-4e04-acee-157e3194e864"
},
{
"ethnic": "caucasian",
"person": "A.J. Addams",
"href": "https://www.iafd.com/person.rme/id=968f6684-868c-41a5-8c09-56cd3ade1e9e"
},
{
"ethnic": "caucasian",
"person": "A.J. Alexander",
"href": "https://www.iafd.com/person.rme/id=1c1ede7e-6b9d-4620-bb1c-2542cda4de5e"
},
{
"ethnic": "caucasian",
"person": "A.J. Applegate",
"href": "https://www.iafd.com/person.rme/id=beae8520-e7c1-419c-be66-8d9675ed0786"
},
{
"ethnic": "caucasian",
"person": "A.J. Bailey",
"href": "https://www.iafd.com/person.rme/id=19c0ba4f-bad3-4213-8f78-6a68a7602f70"
},
{
"ethnic": "caucasian",
"person": "A.J. Chambers",
"href": "https://www.iafd.com/person.rme/id=959de668-c69d-4ac3-9004-556e82751ec7"
},
{
"ethnic": "caucasian",
"person": "A.J. Harwood",
"href": "https://www.iafd.com/person.rme/id=dd1d185d-c7d9-4b60-8176-08b9d1976fd5"
},
{
"ethnic": "caucasian",
"person": "A.J. Long",
"href": "https://www.iafd.com/person.rme/id=b6ac2c53-5858-4f1f-9a7f-15c81b21149b"
},
{
"ethnic": "caucasian",
"person": "A.J. Long",
"href": "https://www.iafd.com/person.rme/id=8ab1f8da-093e-4996-8363-f21032dd9240"
},
{
"ethnic": "caucasian",
"person": "A.J. Lynn",
"href": "https://www.iafd.com/person.rme/id=17322f3f-19e1-44a4-8dfb-fcb8cab90635"
},
{
"ethnic": "caucasian",
"person": "A.J. Martin Jr.",
"href": "https://www.iafd.com/person.rme/id=b457b4a5-f25f-47af-aaf6-7217ad493fc7"
},
{
"ethnic": "caucasian",
"person": "A.J. Pup",
"href": "https://www.iafd.com/person.rme/id=219829d8-25e9-41c6-9fe4-b426efdf07cb"
},
{
"ethnic": "caucasian",
"person": "A.J. Rider",
"href": "https://www.iafd.com/person.rme/id=ce6fbb62-932c-478f-b006-810d6acf1970"
},
{
"ethnic": "caucasian",
"person": "A.J. Steele",
"href": "https://www.iafd.com/person.rme/id=4bc0502f-e362-4894-a02d-042d380f1255"
},
{
"ethnic": "caucasian",
"person": "A.J. Sylvester",
"href": "https://www.iafd.com/person.rme/id=a336dafd-dc39-4a2c-b38e-4090045136db"
},
{
"ethnic": "caucasian",
"person": "A.K. Honey",
"href": "https://www.iafd.com/person.rme/id=9dd95bb1-4fe7-447b-9578-eeac9854fefe"
},
{
"ethnic": "caucasian",
"person": "A.M. Hall",
"href": "https://www.iafd.com/person.rme/id=2922c3f7-f4f5-4134-87f1-4cbc3e943263"
},
{
"ethnic": "caucasian",
"person": "A.S. Spumpin",
"href": "https://www.iafd.com/person.rme/id=7949ad9c-ca3a-4b86-8ac0-d6f1c6916ee5"
},
{
"ethnic": "caucasian",
"person": "Aaden Stark",
"href": "https://www.iafd.com/person.rme/id=da17f06e-2582-424b-9d85-bb1b6ce4ea46"
},
{
"ethnic": "caucasian",
"person": "Aali Kali",
"href": "https://www.iafd.com/person.rme/id=49aaca01-af5b-40b8-a170-51f71656de6e"
},
{
"ethnic": "caucasian",
"person": "Aaliyah Ca Pelle",
"href": "https://www.iafd.com/person.rme/id=8c93d76f-2d7a-4e00-a776-9cf77db9e5fa"
},
{
"ethnic": "caucasian",
"person": "Aaliyah Jolie",
"href": "https://www.iafd.com/person.rme/id=022d49de-b755-41e9-a326-31470f608aee"
},
{
"ethnic": "caucasian",
"person": "Aaliyah Love",
"href": "https://www.iafd.com/person.rme/id=56a39956-f447-4e7d-afdc-eb57d345a0e6"
},
{
"ethnic": "caucasian",
"person": "Aaliyah Marie",
"href": "https://www.iafd.com/person.rme/id=7209eacf-6809-43a3-b12e-a34e11978ce0"
},
{
"ethnic": "caucasian",
"person": "Aaliyah May",
"href": "https://www.iafd.com/person.rme/id=66dcfc26-1168-4d49-8ed0-9265999dc9b9"
},
{
"ethnic": "caucasian",
"person": "Aaliyah Taylor",
"href": "https://www.iafd.com/person.rme/id=09e02ce8-265b-4032-85ff-9274882a03c9"
},
{
"ethnic": "caucasian",
"person": "Aami",
"href": "https://www.iafd.com/person.rme/id=bd23fe38-a789-42c2-a52d-bfcc749f6988"
},
{
"ethnic": "caucasian",
"person": "Aana",
"href": "https://www.iafd.com/person.rme/id=83bf092e-04df-47d3-bffb-4bf944f5e8d5"
},
{
"ethnic": "caucasian",
"person": "Aaralyn",
"href": "https://www.iafd.com/person.rme/id=0ca0335e-5e5a-44ff-9341-2945417c7159"
},
{
"ethnic": "caucasian",
"person": "Aaralyn Barra",
"href": "https://www.iafd.com/person.rme/id=12961b1a-4eeb-4de6-b7b6-7af309e98e0d"
},
{
"ethnic": "caucasian",
"person": "Aariah James",
"href": "https://www.iafd.com/person.rme/id=7c493883-acb1-4926-a7ac-f2539b247951"
},
{
"ethnic": "caucasian",
"person": "Aarielle Alexis",
"href": "https://www.iafd.com/person.rme/id=81b89f83-32bb-47cf-8a52-6dea4c6f8546"
},
{
"ethnic": "caucasian",
"person": "Aarin Asker",
"href": "https://www.iafd.com/person.rme/id=a9804ca2-0442-4509-8b7d-52d7fb63b86c"
},
{
"ethnic": "caucasian",
"person": "Aarlyn Jewel",
"href": "https://www.iafd.com/person.rme/id=2eadade6-5925-470c-a4f9-62cf137f3dc6"
},
{
"ethnic": "caucasian",
"person": "Aarol Renti",
"href": "https://www.iafd.com/person.rme/id=d132694b-cfa6-44b7-a6ec-5c5728a9152b"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=0bcf2f14-59e7-42b5-ab98-3b72ca8e78d1"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=14c3d85d-fb19-46e6-b783-12d69aef8cfd"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=a795d407-bbd1-4865-972a-4154e3ac87ea"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=ab69ae52-40c1-4934-baa0-f8736e4dec96"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=b87828e6-dfd3-4a2e-990f-2d32b45a22b2"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=bde4a973-aedb-41d2-b0db-7125abff8388"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=13dd1882-177a-45a9-a9a0-2d943270889a"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=ef72fc4f-e4f1-4528-ac76-8b0a791d403d"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=2fef44bd-09f8-4c19-8b6e-da40977eed38"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=34c1a5b2-db2a-4ad6-b86b-b8a3955f2531"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=c291debc-b09f-45d2-b025-15c63ac8dc1c"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=249eb49d-8c9c-4315-8013-5c1e5b90f066"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=48f35b7e-5959-4f61-a3a6-af9d864ebb56"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=31d7393c-e4c0-4819-99e2-827e68c5b3fd"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=adae952d-1a54-43f5-9a07-1c929e460b9c"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=0ba79587-bb74-47f5-a697-28cf0325271d"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=1765cd87-2f1d-4029-a980-75b0b57a0de6"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=a6b539e5-e1be-4aab-8321-1e498ce1886a"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=8f51cb33-715c-42fb-b557-c79447e9d8de"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=2be9c6ce-7c7e-42be-8f1b-ff23ea4b8f0c"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=7ae847fa-f3fa-4aac-8b9a-590b28ec7ece"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=32723ada-239d-448c-afc2-b53d6efe7119"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=e82090a3-cad4-42ae-bbd3-8cbc81f302ed"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=02a276a7-7cfb-495a-b259-c4ced018dfb8"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=aca9732b-93ec-4df8-9b05-f7d082a3a2e7"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=cc0c006c-5418-4c73-8e3d-ad7fd20f8a4a"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=222209d8-35ae-4897-b943-5b9fa37fa349"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=0bd712f9-1c83-4725-81f7-889264c73130"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=baa2df10-3ff8-40b6-8564-496ad4a0896c"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=1ad5029e-0943-4220-9eae-64db6d330037"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=ae6a0389-e608-4341-aa8a-0aa58f041429"
},
{
"ethnic": "caucasian",
"person": "Aaron",
"href": "https://www.iafd.com/person.rme/id=2c740488-9456-4c3f-8aa1-9f4088d57b60"
},
{
"ethnic": "caucasian",
"person": "Aaron Action",
"href": "https://www.iafd.com/person.rme/id=0cf3cb49-9a04-4415-9631-1f3e3a321a0c"
},
{
"ethnic": "caucasian",
"person": "Aaron Adams",
"href": "https://www.iafd.com/person.rme/id=a7eaefab-fbf8-4df9-b231-a926028cb6de"
},
{
"ethnic": "caucasian",
"person": "Aaron Allen",
"href": "https://www.iafd.com/person.rme/id=a05d5004-7e12-4841-806b-b755dbb44822"
},
{
"ethnic": "caucasian",
"person": "Aaron Anderson",
"href": "https://www.iafd.com/person.rme/id=bfc896f4-bb66-4c52-b7a1-9ded6179927e"
},
{
"ethnic": "caucasian",
"person": "Aaron Anderson",
"href": "https://www.iafd.com/person.rme/id=e54cef38-e5c5-4941-905c-bb7166113197"
},
{
"ethnic": "caucasian",
"person": "Aaron Anderson",
"href": "https://www.iafd.com/person.rme/id=f3227b3b-a412-4d85-8f33-b45250dd816f"
},
{
"ethnic": "caucasian",
"person": "Aaron Andrews",
"href": "https://www.iafd.com/person.rme/id=f3a67900-7e41-42c0-9d51-10fb93029456"
},
{
"ethnic": "caucasian",
"person": "Aaron Anthony",
"href": "https://www.iafd.com/person.rme/id=763f8ab6-3d73-443f-bfdf-e427a376fc9d"
},
{
"ethnic": "caucasian",
"person": "Aaron Arres",
"href": "https://www.iafd.com/person.rme/id=52617535-4a26-4509-bfb9-61c850607cd8"
},
{
"ethnic": "caucasian",
"person": "Aaron Ashford",
"href": "https://www.iafd.com/person.rme/id=0f879da6-7571-4f40-b477-bffe86c98b63"
},
{
"ethnic": "caucasian",
"person": "Aaron Aubrey",
"href": "https://www.iafd.com/person.rme/id=41dcda94-e5e9-40f6-8bc9-e016496b28e2"
},
{
"ethnic": "caucasian",
"person": "Aaron Aurora",
"href": "https://www.iafd.com/person.rme/id=5a8010f7-303f-49d7-83e0-2fa51ae328e8"
},
{
"ethnic": "caucasian",
"person": "Aaron Austin",
"href": "https://www.iafd.com/person.rme/id=7b47ce4c-7772-48d6-8e00-0c9fcc79e6f5"
},
{
"ethnic": "caucasian",
"person": "Aaron Baker",
"href": "https://www.iafd.com/person.rme/id=5329d1a6-60f1-4a15-a3e6-7d33ace73a9b"
},
{
"ethnic": "caucasian",
"person": "Aaron Blake",
"href": "https://www.iafd.com/person.rme/id=677c3d1e-c527-41c4-9be9-b4f0aaef2cdf"
},
{
"ethnic": "caucasian",
"person": "Aaron Brady",
"href": "https://www.iafd.com/person.rme/id=12d3f5b4-6126-4c7f-9f05-158a35396b01"
},
{
"ethnic": "caucasian",
"person": "Aaron Brags",
"href": "https://www.iafd.com/person.rme/id=0ac6898f-e6e3-4c01-8b4e-608010266bcf"
},
{
"ethnic": "caucasian",
"person": "Aaron Brandt",
"href": "https://www.iafd.com/person.rme/id=a9d33459-f5df-44da-a9f4-f0dbbbb96388"
},
{
"ethnic": "caucasian",
"person": "Aaron Bruiser",
"href": "https://www.iafd.com/person.rme/id=4e8e3dbf-bf78-499f-8181-24e7975248c3"
},
{
"ethnic": "caucasian",
"person": "Aaron Buns",
"href": "https://www.iafd.com/person.rme/id=08d448a5-ccc0-4b09-a595-7687f3ce69c0"
},
{
"ethnic": "caucasian",
"person": "Aaron Burke",
"href": "https://www.iafd.com/person.rme/id=da4f84c3-5a72-45c3-9b82-8204ed8a05ee"
},
{
"ethnic": "caucasian",
"person": "Aaron Burns",
"href": "https://www.iafd.com/person.rme/id=f65e6ef9-5b38-49b1-bab9-89cfd1c6fe4a"
},
{
"ethnic": "caucasian",
"person": "Aaron Cage",
"href": "https://www.iafd.com/person.rme/id=993af443-e658-4301-a87a-c661cb59bbc4"
},
{
"ethnic": "caucasian",
"person": "Aaron Carpenter",
"href": "https://www.iafd.com/person.rme/id=b1ef40c7-d950-47b3-b0a5-969c849292b4"
},
{
"ethnic": "caucasian",
"person": "Aaron Chambers",
"href": "https://www.iafd.com/person.rme/id=8f5d2120-2962-4691-a0a6-5c970ab98172"
},
{
"ethnic": "caucasian",
"person": "Aaron Clayton",
"href": "https://www.iafd.com/person.rme/id=60335579-134f-4abe-b1b1-9bc3144fe212"
},
{
"ethnic": "caucasian",
"person": "Aaron Colt",
"href": "https://www.iafd.com/person.rme/id=d85d624e-17d3-4378-8e2b-b188da56ef3d"
},
{
"ethnic": "caucasian",
"person": "Aaron Cox",
"href": "https://www.iafd.com/person.rme/id=72f132a7-e0ff-45b2-8f86-3e7ce6b12d70"
},
{
"ethnic": "caucasian",
"person": "Aaron Coxx",
"href": "https://www.iafd.com/person.rme/id=7157bff9-cfc0-447c-84a2-f1e7872ab9ab"
},
{
"ethnic": "caucasian",
"person": "Aaron Daniels",
"href": "https://www.iafd.com/person.rme/id=f567c8ff-4300-46b0-92f2-b45326a6dcd0"
},
{
"ethnic": "caucasian",
"person": "Aaron Daniels",
"href": "https://www.iafd.com/person.rme/id=ce866d5d-dd1c-479a-b9fc-b5d7a3ca241f"
},
{
"ethnic": "caucasian",
"person": "Aaron Daniels",
"href": "https://www.iafd.com/person.rme/id=c4952b70-085e-4895-9ccd-399fa0dcdffe"
},
{
"ethnic": "caucasian",
"person": "Aaron Dickson",
"href": "https://www.iafd.com/person.rme/id=cad33743-6af6-451e-8c0f-b78c6cc0ef79"
},
{
"ethnic": "caucasian",
"person": "Aaron Diesel",
"href": "https://www.iafd.com/person.rme/id=acad35f2-a5c7-4d50-b4ce-cb777b0d66ca"
},
{
"ethnic": "caucasian",
"person": "Aaron Donlough",
"href": "https://www.iafd.com/person.rme/id=0b56fefc-692e-48fa-a188-18ea295ded65"
},
{
"ethnic": "caucasian",
"person": "Aaron Elias",
"href": "https://www.iafd.com/person.rme/id=a6582f00-ab75-4c9e-9f95-1c04ef524e89"
},
{
"ethnic": "caucasian",
"person": "Aaron Ereon",
"href": "https://www.iafd.com/person.rme/id=71fd05d1-13f0-45d2-95d4-bb6159cce86a"
},
{
"ethnic": "caucasian",
"person": "Aaron Evans",
"href": "https://www.iafd.com/person.rme/id=64d26615-a159-437a-81f9-f61ad689be8a"
},
{
"ethnic": "caucasian",
"person": "Aaron French",
"href": "https://www.iafd.com/person.rme/id=d4a6a561-e998-4894-9d3c-f4e427940efc"
},
{
"ethnic": "caucasian",
"person": "Aaron Gage",
"href": "https://www.iafd.com/person.rme/id=51ea6379-4edc-431e-baaa-39104fc995cd"
},
{
"ethnic": "caucasian",
"person": "Aaron Galloway",
"href": "https://www.iafd.com/person.rme/id=d659207f-f1d8-437d-aee8-66d1413f8938"
},
{
"ethnic": "caucasian",
"person": "Aaron Garrett",
"href": "https://www.iafd.com/person.rme/id=579699d8-562b-4b4b-b236-e7ab4416e52f"
},
{
"ethnic": "caucasian",
"person": "Aaron Giant",
"href": "https://www.iafd.com/person.rme/id=7b12e8c8-f210-4de1-a3ec-50aa39d11130"
},
{
"ethnic": "caucasian",
"person": "Aaron Goldsmith",
"href": "https://www.iafd.com/person.rme/id=bcd06596-521e-4e70-a976-5467f77acf15"
},
{
"ethnic": "caucasian",
"person": "Aaron Griffin",
"href": "https://www.iafd.com/person.rme/id=b93473fe-35f3-44a3-8e6d-3dd2e6d6069b"
},
{
"ethnic": "caucasian",
"person": "Aaron Griffith",
"href": "https://www.iafd.com/person.rme/id=adef4c93-70ef-42b1-b164-87e3443dbbb8"
},
{
"ethnic": "caucasian",
"person": "Aaron Gunner",
"href": "https://www.iafd.com/person.rme/id=22e50169-ba71-4ab9-b885-39bd2b1826fe"
},
{
"ethnic": "caucasian",
"person": "Aaron Hartley",
"href": "https://www.iafd.com/person.rme/id=964ad0d2-fe8e-4c17-8448-e90d4c4ede22"
},
{
"ethnic": "caucasian",
"person": "Aaron Hawke",
"href": "https://www.iafd.com/person.rme/id=baaf5c00-1dad-4216-9a1b-a3528262ae7e"
},
{
"ethnic": "caucasian",
"person": "Aaron Heights",
"href": "https://www.iafd.com/person.rme/id=8725e56d-1d69-41b4-91a1-3dcf723066d9"
},
{
"ethnic": "caucasian",
"person": "Aaron Hunter",
"href": "https://www.iafd.com/person.rme/id=e740bb9d-a8d4-423c-8b79-deb9fd2b8fb4"
},
{
"ethnic": "caucasian",
"person": "Aaron Jackobs",
"href": "https://www.iafd.com/person.rme/id=6a9399b2-accd-47de-87ed-638a605718fe"
},
{
"ethnic": "caucasian",
"person": "Aaron Jackson",
"href": "https://www.iafd.com/person.rme/id=eab8a8d4-7f47-4bcd-a674-ac05cec184bf"
},
{
"ethnic": "caucasian",
"person": "Aaron Jacobs",
"href": "https://www.iafd.com/person.rme/id=212e25cb-6433-4844-97d2-74e468527f88"
},
{
"ethnic": "caucasian",
"person": "Aaron James",
"href": "https://www.iafd.com/person.rme/id=a92f35f3-6e11-4e1a-a359-1688eacef54b"
},
{
"ethnic": "caucasian",
"person": "Aaron Jay",
"href": "https://www.iafd.com/person.rme/id=4821c613-c9c1-4d03-8eb3-da1e142d38b9"
},
{
"ethnic": "caucasian",
"person": "Aaron Kellar",
"href": "https://www.iafd.com/person.rme/id=4a11c374-bd8b-43d5-9617-d494fa544c8b"
},
{
"ethnic": "caucasian",
"person": "Aaron Kelly",
"href": "https://www.iafd.com/person.rme/id=2349a3f9-3d6b-4bf0-8346-fa42a420f4dc"
},
{
"ethnic": "caucasian",
"person": "Aaron Kicks",
"href": "https://www.iafd.com/person.rme/id=dd6b5da8-8752-4a95-b5f9-8a103fa6c32a"
},
{
"ethnic": "caucasian",
"person": "Aaron King",
"href": "https://www.iafd.com/person.rme/id=091c022f-8a61-40d8-ac20-a4ffdf19abec"
},
{
"ethnic": "caucasian",
"person": "Aaron Kline",
"href": "https://www.iafd.com/person.rme/id=00427092-cb65-4f9d-8fa1-82952cdde94f"
},
{
"ethnic": "caucasian",
"person": "Aaron Lamb",
"href": "https://www.iafd.com/person.rme/id=bbe41e10-ccec-4263-b097-dd12ca037c77"
},
{
"ethnic": "caucasian",
"person": "Aaron Landcaster",
"href": "https://www.iafd.com/person.rme/id=bc136a34-c749-482c-8a62-ea175a3a1c09"
},
{
"ethnic": "caucasian",
"person": "Aaron Lautner",
"href": "https://www.iafd.com/person.rme/id=b9009df9-a668-45ae-b54f-225c3ec137b7"
},
{
"ethnic": "caucasian",
"person": "Aaron Lennox",
"href": "https://www.iafd.com/person.rme/id=6487b44e-3b01-4cdc-9361-46a003892503"
},
{
"ethnic": "caucasian",
"person": "Aaron Light",
"href": "https://www.iafd.com/person.rme/id=cf68690a-a911-4679-8cc4-a3b8ad090acc"
},
{
"ethnic": "caucasian",
"person": "Aaron London",
"href": "https://www.iafd.com/person.rme/id=795300a8-ac6a-468d-ba81-fce65b3bf963"
},
{
"ethnic": "caucasian",
"person": "Aaron Luk",
"href": "https://www.iafd.com/person.rme/id=1946f47d-1724-4796-a7a3-1bc45c7444dc"
},
{
"ethnic": "caucasian",
"person": "Aaron Machi",
"href": "https://www.iafd.com/person.rme/id=a10cce9b-d8d6-46ef-9eec-cd5a1040a5f0"
},
{
"ethnic": "caucasian",
"person": "Aaron Maldini",
"href": "https://www.iafd.com/person.rme/id=955716e4-6c9c-4bb2-b90b-e0294364fc03"
},
{
"ethnic": "caucasian",
"person": "Aaron Manson",
"href": "https://www.iafd.com/person.rme/id=55ecc9c3-d061-4850-b43c-cab8c0c8e246"
},
{
"ethnic": "caucasian",
"person": "Aaron Mark",
"href": "https://www.iafd.com/person.rme/id=3c847bf4-8d4a-4d66-89ef-d06a26cc2427"
},
{
"ethnic": "caucasian",
"person": "Aaron Martin",
"href": "https://www.iafd.com/person.rme/id=d85ee393-f35b-4f93-a429-ea8a2bd077ae"
},
{
"ethnic": "caucasian",
"person": "Aaron Master",
"href": "https://www.iafd.com/person.rme/id=0ae3fc18-85e2-49f9-91b5-7429751ae2f9"
},
{
"ethnic": "caucasian",
"person": "Aaron Michaels",
"href": "https://www.iafd.com/person.rme/id=e429e641-9a06-4e25-af3b-b60b78989ac6"
}
]

34867
scripts/iafd/result/merged.csv Normal file

File diff suppressed because it is too large Load Diff

139466
scripts/iafd/result/merged.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,90 @@
"""
Script Name:
Description: 从 https://www.iafd.com 上获取信息。利用cloudscraper绕过cloudflare
detail_fetch.py 从本地已经保存的列表数据,逐个拉取详情,并输出到文件。
list_fetch_astro.py 按照星座拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_birth.py 按照生日拉取数据,获得演员的信息列表。数据量适中,各详细字段较全
list_fetch_ethnic.py 按照人种拉取数据,获得演员的信息列表。数据量大,但详细字段很多无效的
list_merge.py 上面三个列表的数据,取交集,得到整体数据。
iafd_scrape.py 借助 https://github.com/stashapp/CommunityScrapers 实现的脚本,可以输入演员的 iafd链接,获取兼容 stashapp 格式的数据。(作用不大,因为国籍、照片等字段不匹配)
html_format.py 负责读取已经保存的html目录, 提取信息,格式化输出。
data_merge.py 负责合并数据,它把从 iafd, javhd, thelordofporn 以及搭建 stashapp, 从上面更新到的演员数据(需导出)进行合并;
stashdb_merge.py 负责把从stashapp中导出的单个演员的json文件, 批量合并并输出; 通常我们需要把stashapp中导出的批量文件压缩并传输到data/tmp目录,解压后合并
从而获取到一份完整的数据列表。
Author: [Your Name]
Created Date: YYYY-MM-DD
Last Modified: YYYY-MM-DD
Version: 1.0
Modification History:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
- YYYY-MM-DD [Your Name]:
"""
import os
import json
import csv
import logging
# 配置日志
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
logger = logging.getLogger(__name__)
# 输入和输出目录
input_dir = 'data/tmp' # 假设metadata目录在当前目录下
output_json_file = 'stashdb.json'
output_csv_file = 'stashdb.csv'
# 用于保存所有的条目
data_list = []
# 遍历metadata文件夹读取所有json文件
for filename in os.listdir(input_dir):
if filename.endswith('.json'):
file_path = os.path.join(input_dir, filename)
try:
with open(file_path, 'r', encoding='utf-8') as file:
data = json.load(file)
# 提取需要的字段
person = {
'name': data.get('name'),
'gender': data.get('gender'),
'birthdate': data.get('birthdate'),
'ethnicity': data.get('ethnicity'),
'country': data.get('country'),
'height': data.get('height'),
'measurements': data.get('measurements'),
'fake_tits': data.get('fake_tits'),
'career_length': data.get('career_length'),
'aliases': ', '.join(data.get('aliases', [])) # 连接aliases数组元素
}
# 将数据添加到列表中
data_list.append(person)
logger.info(f"Processed file: {filename}")
except Exception as e:
logger.error(f"Error processing file {filename}: {e}")
# 输出到 JSON 文件
try:
with open(output_json_file, 'w', encoding='utf-8') as json_file:
json.dump(data_list, json_file, ensure_ascii=False, indent=4)
logger.info(f"Data successfully written to {output_json_file}")
except Exception as e:
logger.error(f"Error writing JSON file: {e}")
# 输出到 CSV 文件
try:
with open(output_csv_file, 'w', newline='', encoding='utf-8') as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=data_list[0].keys())
writer.writeheader()
writer.writerows(data_list)
logger.info(f"Data successfully written to {output_csv_file}")
except Exception as e:
logger.error(f"Error writing CSV file: {e}")