#kyc #OSINT #_2022
Interpol red and yellow notices are quite helpful for KYC and OSINT efforts, particularly in the military.
Link:
Script:
```py
# migrate_interpol_notices.py
from bs4 import BeautifulSoup
import requests
from bs4.element import Comment
import sqlite3
import pandas as pd
import requests
import os
import json
import time
def create_interpol_db():
# ------------------------------------ #
# Delete the DB if it exists
# ------------------------------------ #
if os.path.exists("db_interpol.db"):
os.remove("db_interpol.db")
# ------------------------------------ #
# Make the db
# ------------------------------------ #
db = sqlite3.connect('db_interpol.db')
cursor = db.cursor()
cursor.close()
db.close()
# ------------------------------------ #
# Make the dataframe
# ------------------------------------ #
# make the list of all character combos for the url
list_0 = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
list_1 = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
char_list = []
for char_0 in list_0:
for char_1 in list_1:
set = char_0+char_1
char_list.append(set)
# make the red notice dataframe from the url
for char_set in char_list:
url = f'https://ws-public.interpol.int/notices/v1/red?forename={char_set}&resultPerPage=160&page=1'
response = requests.get(url)
response_json = response.json()
df = pd.DataFrame(response_json['_embedded']['notices'])
df = df.astype(str)
# ------------------------------------ #
# Insert data to db
# ------------------------------------ #
conn = sqlite3.connect('db_interpol.db', check_same_thread=False)
df.to_sql(name='interpol', con=conn, if_exists='append', index=False)
print(f'red notice: {char_set}')
# make the yellow notice dataframe from the url
for char_set in char_list:
url = f'https://ws-public.interpol.int/notices/v1/yellow?forename={char_set}&resultPerPage=160&page=1'
response = requests.get(url)
response_json = response.json()
df = pd.DataFrame(response_json['_embedded']['notices'])
df = df.astype(str)
# ------------------------------------ #
# Insert data to db
# ------------------------------------ #
conn = sqlite3.connect('db_interpol.db', check_same_thread=False)
df.to_sql(name='interpol', con=conn, if_exists='append', index=False)
print(f'yellow notice: {char_set}')
# ------------------------------------ #
# Make the virtual table
# ------------------------------------ #
conn.execute('''
CREATE VIRTUAL TABLE v_interpol
USING FTS5 (
forename,
name,
date_of_birth
--nationalities
)
;
'''
)
conn.execute('''
INSERT INTO v_interpol (
forename,
name,
date_of_birth
--nationalities
)
SELECT DISTINCT forename,
name,
date_of_birth
--nationalities
FROM interpol
;
'''
)
conn.commit()
conn.execute('''DROP TABLE interpol;''')
conn.execute('''VACUUM;''')
# ------------------------------------ #
# Close the database
# ------------------------------------ #
conn.close()
# ------------------------------------ #
# print statement
# ------------------------------------ #
print('--------------------------------------------')
print('--------------------------------------------')
print(' Interpol Database Build Complete ')
print('--------------------------------------------')
print('--------------------------------------------')
# create_interpol_db()
```