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
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
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
../result/iafd_meta.json
+1
View File
@@ -0,0 +1 @@
/root/scripts/javhd/result/models_detail.json
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
/root/scripts/thelordofporn/result/actress_detail.json
+236
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}")
+216
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()
+26
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
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()
+140
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.")
+152
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()
+153
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.")
+99
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()
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+9
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
+169
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"
}
]
+169
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
+842
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"
}
]
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+90
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}")