import os
import requests
import networkx as nx
import pandas as pd
# we'll need to rate limit our requests when working with Notion
from ratelimiter import RateLimiter
# load the environment variables into global variables
INSIGHTS_ID = os.environ["INSIGHTS_ID"]
NOTION_KEY = os.environ["NOTION_KEY"]
# classes for interacting with notion API
class Client:
def __init__(self, key):
self.request = requests.Session()
self.request.headers.update({
"Authorization": f"Bearer {key}",
"Notion-Version": "2021-08-16",
"Content-Type": "application/json"
})
self.databases = Databases(self)
self.pages = Pages(self)
class Databases:
def __init__(self, client):
self.client = client
def query(self, database_id):
response = self.client.request.post(f"https://api.notion.com/v1/databases/{database_id}/query")
return response.json()
class Pages:
def __init__(self, client):
self.client = client
def query_content(self, block_id, cursor=None):
url = f"https://api.notion.com/v1/blocks/{block_id}/children?page_size=100"
if cursor:
url = f"{url}&start_cursor={cursor}"
response = self.client.request.get(url)
return response.json()
client = Client(NOTION_KEY)
# fetch database pages
response = client.databases.query(INSIGHTS_ID)
pages = response["results"]
# fetch page content
@RateLimiter(max_calls=3, period=1)
def query_content_recursively(block_id, blocks, cursor=None):
response = client.pages.query_content(block_id, cursor)
for block in response["results"]:
if block["has_children"]:
blocks.append([block, query_content_recursively(block["id"], [])])
else:
blocks.append(block)
if response["next_cursor"]:
return query_content_recursively(block_id, blocks, response["next_cursor"])
return blocks
items = []
for page in pages:
items.append({
"page": page,
"blocks": query_content_recursively(page["id"], [])
})
# extract data from page content
def extract_title(page):
return [t["plain_text"] for t in page["properties"]["Title"]["title"]]
def extract_text(blocks, output):
for block in blocks:
if isinstance(block, list):
extract_text(block, output)
elif block["type"] in ["heading_1", "heading_2", "heading_3", "paragraph", "callout", "quote", "bulleted_list_item", "numbered_list_item", "to_do", "toggle"]:
for text in block[block["type"]]["text"]:
output.append(text["plain_text"])
return output
def extract_relations(page):
relations = set()
for prop in page["properties"].values():
if prop["type"] == "relation":
for relation in prop["relation"]:
relations.add(relation["id"])
return relations
def extract_mentions(blocks, mentions):
for block in blocks:
if isinstance(block, list):
extract_mentions(block, mentions)
elif block["type"] in ["heading_1", "heading_2", "heading_3", "paragraph", "callout", "quote", "bulleted_list_item", "numbered_list_item", "to_do", "toggle", "code"]:
for text in block[block["type"]]["text"]:
if text["type"] == "mention" and text["mention"]["type"] == "page":
mentions.add(text["mention"]["page"]["id"])
elif block["type"] == "link_to_page":
if block["link_to_page"]["type"] == "page_id":
mentions.add(block["link_to_page"]["page_id"])
return mentions
def extract_data(item):
title = "".join(extract_title(item["page"]))
text = " ".join(extract_text(item["blocks"], []))
relations = extract_relations(item["page"])
mentions = extract_mentions(item["blocks"], set())
return {
"title": title,
"text": text,
"links": list(relations.union(mentions))
}
for item in items:
data = extract_data(item)
item["title"] = data["title"]
item["text"] = data["text"]
item["links"] = data["links"]
originating_nodes = []
target_nodes = []
# create originating and target nodes
for item in items:
for link in item["links"]:
# create bidirectional links
originating_nodes.append(item["page"]["id"])
target_nodes.append(link)
originating_nodes.append(link)
target_nodes.append(item["page"]["id"])
# create dataframe using originating and target nodes
df = pd.DataFrame({"originating": originating_nodes, "target": target_nodes})
# display preview
df.head()
originatingobject
targetobject
0
ae4cfb9b-0cb1-4022-a279-a4ae7d3794f1
48981eee-cff6-4574-b939-4d4f214acc1b
1
48981eee-cff6-4574-b939-4d4f214acc1b
ae4cfb9b-0cb1-4022-a279-a4ae7d3794f1
2
ae4cfb9b-0cb1-4022-a279-a4ae7d3794f1
bf4a1a68-af3d-4097-9cec-ad04f73007a1
3
bf4a1a68-af3d-4097-9cec-ad04f73007a1
ae4cfb9b-0cb1-4022-a279-a4ae7d3794f1
4
48981eee-cff6-4574-b939-4d4f214acc1b
e05eadbf-245f-4db0-bba6-9c17fb93bb16
# create graph
G = nx.from_pandas_edgelist(df, "originating", "target", create_using=nx.Graph())
# use page rank
ppr1 = nx.pagerank(G)
# print key-value pairs of node ids and their respective rank
print(ppr1)
{'ae4cfb9b-0cb1-4022-a279-a4ae7d3794f1': 0.00224464372340549, '48981eee-cff6-4574-b939-4d4f214acc1b': 0.004372602934057482, 'bf4a1a68-af3d-4097-9cec-ad04f73007a1': 0.005767905686887809, 'e05eadbf-245f-4db0-bba6-9c17fb93bb16': 0.003139532487133309, 'cbf993d1-e194-47a5-a23b-9d77e3bb7c90': 0.0014274260969290025, '98ede1cf-100d-45a6-93e7-fab13e754589': 0.004150993112007803, '47af4c15-fb1f-4cf4-a82a-8884919b41d6': 0.002278738401377424, '8aa67fc3-e385-4279-8961-4d197d0b3ffb': 0.007398913009823264, '9da27bb7-f5cf-42de-a7be-03e2c0144288': 0.002278738401377424, 'e922043d-5fcc-4e01-9df8-51f196df43c8': 0.0013966966213344902, 'f8933198-a93f-4114-b3e1-bca8079a4d7c': 0.0013966966213344902, 'ad7b3253-6a63-4a97-85a7-2bb21d1c7219': 0.008391174853167399, 'd6d0dcb1-049d-461b-9894-cb6db6f2064e': 0.002104447748948607, '74d90d6c-867e-4906-aef9-c9c41bfb6507': 0.002104447748948607, '5bf0f7f2-40de-4b5f-9413-5ad5e7a6d85c': 0.002104447748948607, '5f0af0d3-296c-4548-ba7d-04d9511f5267': 0.002104447748948607, 'f2a20bff-a1d4-4117-bb2d-abbc1369f0df': 0.002104447748948607, '99ea7348-587c-4415-9a17-21544a53fb34': 0.002104447748948607, '7aa34abc-017a-4f47-bd2c-20a5477c58d8': 0.011490329785734889, 'cf0915f2-2065-4f52-9633-1344fab974b3': 0.002104447748948607, '3c721ac8-2765-4761-ba63-718302f11403': 0.0013120875097336038, 'f0e792a4-4110-4279-881e-d1528a955fe8': 0.0013120875097336038, '2f407208-6601-4353-801a-5c380374b0c8': 0.011350229722217336, '1193dfe1-1028-40ad-8516-0dc7e267c77c': 0.0013022252902102722, '3d07a754-4d2b-43ee-96fe-0411315d4cbf': 0.004264870278574548, '41be27ec-5c2a-41d9-ab1d-df9d544ed0d2': 0.0013022252902102722, '9eb30eb2-708f-4eb9-9d95-3ce58e8ecec9': 0.0035384024212920463, '822061dd-8fda-4788-b98a-a3bcc80939c0': 0.006275951842480481, '548ff277-696b-4217-959a-fa322df9618f': 0.0035384024212920463, '45042814-249e-4e50-8398-82ddef509833': 0.0013022252902102722, '52b13001-46b2-4d40-8787-15f8b77ae530': 0.0013022252902102722, '23ec7e07-66c6-4644-9158-3460c415078f': 0.0013022252902102722, '63857593-3376-4a06-9157-5a66d318f059': 0.011238778578652098, 'c2f6c66c-e9db-42d8-8c0c-a2ba3a8bbcf0': 0.004264870278574548, 'b4dc4a6d-5422-413d-9a5b-5fbec99355e7': 0.002036955130717238, '8968504d-10f8-4652-ba54-db84ca30d8f9': 0.002229992668686517, '5b896de2-45fa-4b51-bfd8-6113a5ea4f79': 0.0012602963380571473, 'b41358f0-1b63-4d42-a2fc-619d4f17e799': 0.0019725585338884145, 'd4158531-648d-4329-92eb-bb4f6bc9813f': 0.010441737104318248, '45c30c5b-3cd1-4deb-afa1-4d1a5469d183': 0.0019725585338884145, 'f06411ad-2a36-41ca-84e9-ef8bceb95f87': 0.0012330687109388594, 'fd1d32f9-91df-4646-af0b-bdcee9bdd4ac': 0.0026990263911709157, '7ccc2a4b-f993-4bf9-8670-dbe137bc297f': 0.0012330687109388594, '76a42c8f-69b1-4bb4-a05d-8a517e37fe03': 0.0019725585338884145, '1feee59d-2114-496b-a95e-194c995859fa': 0.002045193136461374, 'b5a95f6f-e021-4134-bf7d-d64fb0733cc6': 0.0012378286933814487, 'baa71217-152e-481d-a153-142cc210eefe': 0.0012378286933814487, '7dc03023-0762-42be-a6da-34916ea94d23': 0.00373402078982925, 'b8dbaf65-938e-4865-a083-833e38505d4a': 0.002858050146162477, 'b16c27c5-de75-4c9e-bf72-a26bfda0bd96': 0.008182163286131123, '46888827-254a-447e-9223-360c46e1cbf4': 0.003608847861952354, '65e9b3f9-0570-47ce-a904-c8546fe59ea1': 0.0020853050824876595, 'c6f7274f-7bd4-406c-9c97-eaacd684e82b': 0.00373402078982925, '7ee980e3-5e16-443f-a375-3543d9d583f9': 0.009127485249213382, '1a9c1067-615c-44b1-9678-3e68faef7fe9': 0.0014680352010612635, '7429c0b4-7595-40d3-95eb-450112769743': 0.0014680352010612635, '658add7a-414a-4754-9d52-a3913a5a6c05': 0.0014680352010612635, '9cc8a238-70b0-4365-a1ef-5c747ae0f83f': 0.0022617742113539467, '592a644c-cdb4-4315-8e8e-1bf83432a180': 0.0022883783226975637, 'e27557b9-1a7d-440f-bf4c-d7f1e04e9cde': 0.0014680352010612635, '90b63972-71cb-4a72-aa8f-553ca78732e5': 0.00888857864328348, 'a95f3157-7c9b-4cc1-942e-04d2da332363': 0.004265756637576757, '98d0d0ef-2065-41ac-a139-783cc6c7e2cb': 0.002312984549127857, 'cfbed15e-721c-4a45-8ebf-7b109d39ba59': 0.0033108221251737274, '485939d6-1dbc-47d2-9d7f-cc981ccbc6d8': 0.0033108221251737274, '3c63f85d-7e7b-487f-a88a-2f0784d52b8f': 0.007479306332348588, '702ebd19-7093-4c3a-b3fc-18bf4a97d879': 0.0014065308718563484, '3f78e05b-dfbb-495f-b5c9-54f6a9444e79': 0.00939181275948121, 'e964e2a4-e737-43bc-b2af-d6382c5eca3e': 0.0024043684479022193, '88f98f89-9cc9-4c6c-9630-572bc08ac61f': 0.0014961764464777642, 'ab4f5e8e-b5ab-4912-bbca-c259059ee6cd': 0.0014961764464777642, 'bee58d15-feea-40fe-ae4f-32f975eba5c8': 0.0014961764464777642, '6ee81a6c-0208-468c-8c0b-1a6e9a23a47c': 0.0014961764464777642, '418c105c-3d65-45ab-a872-e93487a788b8': 0.006679696843830737, '0c557556-e321-4509-a623-c0675c5a3246': 0.005847376708494558, '7a01e0f9-0c06-44f8-aac1-2d91dd0300aa': 0.0016315424991120346, 'f33a4e3e-5d0e-47fe-aadb-ada7f2c88375': 0.002779213163740665, 'c0cd764e-b3b5-4b7c-b843-bf9d9d434260': 0.0016315424991120346, '53c20527-f6a4-4cc5-a193-6c0f3bb4df13': 0.0016315424991120346, 'fba2edb3-efaa-4009-bdfa-4ae5947193e7': 0.006437053997855968, 'fd524c11-4178-4f43-b7ba-b1293ba0cda8': 0.0020847713085471735, '369f68c3-d4f0-49b5-9e34-9228a8b0323a': 0.0020847713085471735, 'fba7cf0b-acef-4fd9-8483-9e70ccb308f2': 0.0020847713085471735, '95e7adcf-356a-46d1-a022-150f3517b03f': 0.013267747502974915, '5b7a4b1f-d8a6-4df9-8888-eb97cd27a7c6': 0.003566502415185787, 'b1572150-9b05-424d-bbc5-ebad0ade1136': 0.0020847713085471735, '9e6afe53-f034-4685-9d88-78ee3b240528': 0.0013035320081938786, '503f8066-5864-4fa0-b9da-00630bce7026': 0.0013035320081938786, 'fe7617b5-576d-4245-b196-3593e23d16ed': 0.0028791383791862916, 'dbb3d862-0228-4687-89b9-e9ec09d29246': 0.0013035320081938786, '2f354ba5-021a-48f0-a708-a92f7f32086a': 0.0018763119311222746, 'e1800678-9225-424a-af7b-3dad200caee5': 0.0013035320081938786, '948ad185-a7cd-4fdc-bfae-2b7777a0a1a5': 0.011114596828469915, 'a326e2ce-68e0-41c6-be7e-ab7ad6ec2724': 0.010599727638626724, '39afd4e2-4df2-4d47-af8a-e12a21778e84': 0.0019800699770705075, 'bfdfe45c-6649-4942-92bb-9cf71acd3926': 0.0036077775417867335, '6e4315a8-251a-41f6-b9de-79ce5a6b12f9': 0.0027308676928603846, '0fcc102f-87fc-4f3a-91d2-e07736b75639': 0.0012248067277143952, '80421684-8bf6-4aaf-96d6-d77edd29a9ad': 0.0019800699770705075, 'e401cc8e-765b-4c96-b69b-66179b22933e': 0.0012248067277143952, '5c707516-1c65-44d4-b4ef-4c213a99ce17': 0.0012536021197880058, '13d80d22-1718-42a2-83ff-a2062275004f': 0.008118997087653805, '8da35348-f26c-4045-a5fa-122f5a684e47': 0.001646009535060524, '33a3a710-acca-4bd7-a4ca-18349b4303c5': 0.001646009535060524, '05639a2a-e8b8-43b3-9b1e-800fa8de08c3': 0.001646009535060524, '5abe44de-025a-4390-b395-dfa44039c334': 0.001646009535060524, 'bbec5c7b-74e3-4996-a646-eeb42607773e': 0.007598587522614617, 'a90158c2-9f0e-4692-a212-c4965f4e4204': 0.002919785445440803, '13e79d94-4c32-4deb-a61a-263635a2191e': 0.0013057033135118194, '43366eca-a591-4402-bc68-bda18db88231': 0.003724291613671826, '836ef371-7661-4d49-a7d7-8814892c5040': 0.0013057033135118194, '4f593f26-252e-4725-a6bf-6b2ebec63f6f': 0.007722342312411671, '51959ed8-acd4-4e77-801a-a3658f5f9091': 0.0013186819920681942, '19c20d54-2292-40af-a097-aa96f6186c79': 0.0013186819920681942, 'e37e85c9-c6e9-4ae5-89d6-a7626801aef5': 0.01041231720796786, '8d47ad2b-37c0-4833-8432-34c76fb2eb7c': 0.0013028450386629168, 'bbb0a88e-15bb-4993-b3c7-39d5828d5c13': 0.0013028450386629168, 'c8c75b4b-f524-485c-b7d0-10ab8f581fb5': 0.0034245069081285055, 'ebd1ee04-a6f7-4503-adf7-d3e9547ba37d': 0.0020965840489555994, '851389a1-5b98-4b8a-bde8-ea7a5737c6e5': 0.0013028450386629168, '739d7d34-30cf-4c74-ae9c-bcbeeee43d6d': 0.0013028450386629168, 'b9cb07cc-1a45-4a8b-9799-f64e0fe8d74b': 0.0093391299096545, '60888fee-1977-4cf8-9eeb-c837bb85ab30': 0.003008545454772391, 'fcfd8cc2-8302-4150-9d3c-c9848aaa7e63': 0.0020965840489555994, '7e2cebed-d117-447c-96c0-6e5cce1e5836': 0.0035251452688632116, '775f4f82-6ed2-4931-8fb5-82f14d57e287': 0.0012920778807245766, 'de249635-51f8-4b24-a6a6-a969f57426eb': 0.0012920778807245766, 'd974f1f1-5a40-404c-906e-3f67fce19f96': 0.0020218816498965885, '38c8f4c1-6df7-474f-9c9a-a675f4a808fb': 0.0012710839341067114, '8bd2ccc0-419f-46f3-92b8-129188b27626': 0.0012710839341067114, 'a7dc1bdc-4fef-4998-8c8a-d63dea2d8ab1': 0.0024092954269400247, 'cfc51c06-022f-41de-9cdf-152aaec1fde7': 0.0012491365862217709, '6e0ce2f3-929c-471a-8a63-43c0ce01eb00': 0.0012491365862217709, 'd0152126-39a8-44bc-a782-1e06253e5bcc': 0.0024092954269400247, '6f3f626d-46fe-4f54-ae6d-6c7a46005400': 0.0012491365862217709, '38da2030-4b2d-417b-9afe-35cb8d0599cb': 0.0012491365862217709, '61c11015-5006-439a-a558-7d47cbfd99cf': 0.004854314368846759, '5c1550b9-7239-4a9a-9999-bb93d8e761da': 0.003018282323096134, 'b18c88d7-ab4f-4198-b51a-a3b2e27c07ab': 0.002698667357104275, '8a8ae17e-bcbd-43df-b792-b5d102cf8ddc': 0.0013533108280659048, '23d2684c-a461-40fb-8b65-66263235ecc0': 0.04693315345278779, '0c5e6dd6-31a5-4d85-af56-9e67f1f8611f': 0.003762635844744948, 'ecd30db1-698f-4aa7-a262-25aa8ed9bfb9': 0.0015640928257958451, '05a6ac92-80fc-4a2c-8a7a-d66208740ffe': 0.0015640928257958451, '5d95b3a2-3454-41c4-9fb3-d9e4b9020606': 0.0032476036004980445, 'fbf07550-c415-4a9b-b1d1-f6bb872a1ccf': 0.0022081876999623298, 'a7d97387-9c9b-486f-b92f-cb0ca039eed7': 0.001418163490306123, 'f45b42e6-5b9f-4816-a9b0-fd4c6f5bfebd': 0.00670315615457521, 'bf9602a2-24a0-4eae-9f29-9fd1827ffde8': 0.0014475243354855243, '958f73e3-bf2a-436e-9701-901193f25b5a': 0.0014475243354855243, '7e552bdd-8fc8-4edd-b928-aff6fcbcfa2b': 0.0014475243354855243, 'c24ce27c-0942-405e-8cd5-e21d84cdc304': 0.0014475243354855243, 'ed63bcee-8b4d-4dc2-bd97-3e8ce6062da6': 0.019894724726577245, '554b6ef4-8acc-4919-8ca6-b7c216bab9ce': 0.0053852029344608286, 'fdaeb0c4-2ee1-4edd-b745-24292c6c46e4': 0.001413453756388348, '78f3e088-5d53-4a73-8f24-0e54285a7735': 0.001413453756388348, '71e932f4-d429-441a-a3cf-7d38bcbc99eb': 0.001413453756388348, '9b077077-ea9f-434c-8fa5-a0afd4a56238': 0.0085933005140831, '725a82eb-c89d-4746-8c06-66174a8a2ab0': 0.0013095955165307142, '363b2115-5d17-4762-aec7-850e85402808': 0.0026255641024449947, '1f881e28-caea-409f-82b6-3622a7e33c08': 0.0013095955165307142, 'd56f670b-6a46-4678-8e44-547e0bffd579': 0.003410345340546191, '9e69ebf1-1e34-4960-a248-615184b8f68f': 0.0013095955165307142, '5ea1c205-3278-412e-a729-9b9dd750948c': 0.002094376754631911, '71ff63c0-cfca-4898-bd13-d61474aafbcb': 0.0013095955165307142, '1d3d1092-9985-4157-a26a-92b6ce20860f': 0.0029023186638816294, 'c328624c-0053-4d04-851b-9cbf5ccd8a24': 0.001320367428737572, 'fd32c173-54e8-417c-8911-f88c0354984b': 0.004112746634541106, '8575f921-d36d-4083-9326-763fe32340f9': 0.0013719695612319244, 'f7e455f7-e9db-48f5-9cec-fb65d6c509d9': 0.0013719695612319244, '6d317c6c-00d3-4159-b6d8-a2a76489905e': 0.0037811706178871958, '0299cacf-1356-44d2-9c62-37467fd285b9': 0.0021046805846967652, 'c749258d-910d-4fcf-bd61-c7e376f8c8cd': 0.0013015097275643295, '63932887-8523-4652-944c-65e8eb012beb': 0.0046723060558940595, '2da4d121-d6a7-4eec-986a-058f4706f686': 0.002452522291107678, '18062ceb-1c09-4b2b-ab13-90d602930d7e': 0.0012923634503894243, '8034ab71-357a-4ffc-b75c-5bf62c8f754a': 0.0012923634503894243, '13dec296-9468-44e3-95c6-cbe8b12f6339': 0.0037811706178871958, '58bbffd1-7cef-47f0-a67c-4a34623acf82': 0.0013015097275643295, '8917d612-da25-4e76-9c5d-06ea0e7ff189': 0.0029023186638816294, 'eb3a73bd-c819-4990-917d-063039671c12': 0.001320367428737572, 'febe7f6a-094b-4236-af68-8d6434a4233b': 0.0029023186638816294, '3ab57992-a402-47a3-aeba-f8fc4d498922': 0.001320367428737572, 'd62cc247-cbfd-4f70-8d64-ab9eebe11f74': 0.00557904821198916, 'ccb51e74-eebf-41bb-a8d8-2d6a337d9b78': 0.007086455477220576, 'a87bec1f-4950-4f71-8442-b37368af5a0d': 0.0012883630800881, '4288bf5c-0bd7-4605-8fb5-bb859a61b467': 0.0012883630800881, '5ec26898-04d0-48f1-980a-124bee035a3f': 0.004112746634541106, '50b8efc6-0c54-4f66-ac16-6fb034ca1f25': 0.0013719695612319244, 'd7e06aec-9d7e-4cd2-be84-4cea2e18945d': 0.0013719695612319244, '484d8ec5-a8e1-4824-b186-f542149f438f': 0.0053852029344608286, 'b024f2c9-61cc-474f-9880-77190482ec1f': 0.001413453756388348, '7ee6ca89-a373-48ee-9917-a0ef70ff21b7': 0.001413453756388348, '4207be30-35b0-40d7-9f33-281f0f7ed545': 0.001413453756388348, '5a444844-883c-4470-8b35-1549b9d600dd': 0.003129845169288983, 'ba6d4034-e779-49d3-95bc-3007471c18ff': 0.0017421168914236206, 'a07ce91b-78a8-41ca-96ae-8ddd08dc0138': 0.00358524346717562, '08820ac0-c80a-4289-9a81-dc5eed8f3c74': 0.0029023186638816294, '11411446-21b0-4989-bddb-a62f3dca7e6c': 0.001320367428737572, '5dfa300b-d67e-4fc2-8aba-6ad88ac5d175': 0.004322608632975175, '8cd6cd2c-f76a-4b78-acd3-752e1ffda8b2': 0.0012328981989027576, '25d87c18-3688-4c49-9e9b-cd1f2d6e693a': 0.0019408718014265682, '872a8574-e011-4f05-a8c7-2717c8746612': 0.003506214775557408, '561a654f-ac75-42eb-b058-7fa2051c1459': 0.0012431097265797999, 'da2d99be-67c6-43a1-bc84-4275e71962d0': 0.003506214775557408, '2e9beade-aa2e-4b1a-a449-d0f87cf6a4bb': 0.0012431097265797999, '33b5642d-c387-4226-b95a-26c0ed94cc8e': 0.003506214775557408, '80726b89-3389-49f4-a161-d4f38ec2cf77': 0.0012431097265797999, 'a0df281f-22dd-4769-9734-41d3e83b1e0b': 0.003506214775557408, '35a09978-f7c6-4c64-84e8-482354137937': 0.0012431097265797999, '060bc814-7a0b-4252-ae47-9b62e055bbfb': 0.0024876611307283712, '2ae3a358-30c8-4c48-9778-7185a7b10a25': 0.003332219275956615, 'a49895da-fe3e-4e93-93d3-0caedaafce67': 0.004350505054891608, '8fe57429-8713-4ed9-9339-04ad05fc28b9': 0.010054074648043759, '5afcf836-2b86-4d2e-b393-222a8a36d684': 0.002906231174100268, 'bc4dc15a-b229-49fd-945d-ac8c162f981d': 0.0017248996290769626, '208c62ea-df58-4778-a56a-652079a3cd52': 0.004281788461198421, 'dbc3d882-62fc-4c52-ae9e-e86993aadffd': 0.006237281981602907, '420e4c8d-896a-4ea9-82d4-823582847abe': 0.0034318368980870385, '96085412-6a69-45df-86f9-7e8fc3f9b08e': 0.001693801237770273, '967c5325-ff1c-49b6-9ccf-4a22bbb69cdd': 0.002939909871726813, 'bf6ffa87-845d-4a5d-b087-d114b779dcec': 0.0041007440086150565, '28aba1e4-8f41-44c5-8282-27bf5e28d73f': 0.004088911807893626, '195b1ddf-4e60-4d4b-8ba5-c95a2bcc2768': 0.0030572244648652417, '19c65d39-f300-45cc-81e7-5d633e0869bf': 0.004315110252632067, '24607b60-fac0-483c-a627-d63c1e066edf': 0.0031349498087905967, 'a27b0f94-9452-4ce5-b0ae-22978b0b8728': 0.004749130193097259, 'a43efa59-af9a-42e6-a361-bbc70919ef83': 0.0018436953994702642, '10e7ef00-d9ee-4ed1-92e4-fdec4f99bf27': 0.004749130193097259, 'd992b7c1-238e-49e2-bb4c-29e2d73e392d': 0.0018436953994702642, '6a892436-e31b-49c3-8b02-7bd5f9d263f3': 0.005280195829870563, '763244fb-df8e-4d2e-b1eb-5cb0fbf0931b': 0.0038713480598855125, '2eda3546-7fb9-48a4-a8e8-52c3034c989e': 0.0038713480598855125, '551f15be-3269-4ee2-a932-959bda524639': 0.005541580062865214, '8bb97bca-5758-442e-8701-519c1170ddf1': 0.00128312010853309, 'a4207bb0-b0ca-49d9-9727-eacba2c2915b': 0.00128312010853309, '61c9490d-4602-4272-8204-032c19ec8fca': 0.0024000978508994988, '49004ea8-3268-4b28-bc8f-8cd1acccb325': 0.003858224887365908, 'cb54a4d1-5397-43ef-9e65-29ff53e69f13': 0.0024169049847286243, '74e9eade-ddef-4afe-b09f-d9336a99a59e': 0.009012597153214525, '8da3767d-0a6a-4cc3-aecb-3f9e9c1e7c5e': 0.009286799317216422, '9485fa3c-e6e7-41e2-984a-bd6d04193b3a': 0.003872700940971787, '449e639f-5cdf-4988-bbfb-4ce36dd50d88': 0.0018741657105435015, '811dc14a-ae3a-4b03-82dd-2dad3727f68c': 0.0012158831050823116, 'a21297ab-78a5-4841-ae1c-0d496b1a37ab': 0.0012158831050823116, '0f3d8f64-4443-435b-9849-4d3801a30fb6': 0.0012158831050823116, 'f57e4cb8-eb04-42e9-9659-8f7eb397950e': 0.0012158831050823116, '3e5ab1e8-31f3-4867-bc7f-188a5e61b75d': 0.0036784104222348153, 'f2a653c5-ce7b-41fd-929b-2cae319aa034': 0.0017488474424254745, 'a6d77574-e2e4-4194-8136-2a7bab09b89b': 0.003678410422234815, '1a63c47d-adf1-4fb7-a759-a42e89723052': 0.002905620812255435, '9e3cdee3-ca78-44eb-bdfd-40ad36b104e4': 0.0031312545661256216, '9b0d9b27-ab93-4214-af63-c1c8ee3ab0a6': 0.0031187349873456377, '7fcad78d-1205-4e1e-b150-5998d4fec634': 0.0018263574951072749, '64fcbfdf-8201-4017-8490-cb95106bce9c': 0.002449498484213844, '3c9893a2-0686-4d32-b454-ebeb3dc98dba': 0.001781600893006428, '71462fd8-2965-4d5f-81ee-507f26ff9c93': 0.0023771354140444878, '14ac41b1-1100-411b-88a1-c837075276e2': 0.0034429743645344024, '07a1f096-ae5b-4c1d-acfb-a23e4ef13832': 0.0028969384563646314, '95bcbcd1-d5de-4885-866b-ced1d2eebf3f': 0.006518524527715317, '117a2e9a-d642-425f-b89b-cd4f63fb2c1f': 0.004757931636802616, 'c05201d6-768e-4c8b-98e0-708d9072f8d6': 0.007456115025795936, 'deda90ad-746a-4781-ab34-91ae45cd42b8': 0.002842145298998247, '60c3145d-4a07-494d-a498-623a865aec2f': 0.0036804226197728576, '2cee6c08-957b-4934-8f01-84c7a8634ff8': 0.0017576830014757133, 'b7398c7b-dace-40db-b513-4f8546330eba': 0.0011320921609681844, '8c9929e2-007b-495c-8393-5742afb843af': 0.0017098086812076894, '15962f99-0d85-42d9-ab21-848c1413acd4': 0.0011320921609681844, 'd2e3c7f9-8336-4f9d-a63d-6cdd47a8b828': 0.010851198270221124, '9adee9b4-f836-4973-8b8a-5e4b8b2df198': 0.002840947574510845, '90b60753-83d6-4946-bc05-58c06eed3859': 0.0016299748337238844, '116706d3-4bf6-44b1-83ce-a0ab6e4f1cb9': 0.001697734768831422, '73dc4ab3-3455-4635-ab91-74b3dc60b118': 0.0035155111228531515, '3b983ea2-1936-4c75-b92f-2cded82ca01e': 0.004750627271345219, 'd1ca85c2-a407-47c9-8456-09095898404d': 0.004108901403692416, '30f36312-02fa-4a0b-b993-1aee328d0c61': 0.001672706045779218, 'd4d71a4f-7192-44d3-8bc3-d9ffd85340b2': 0.002901079326617324, 'e1a1a9e9-9288-4cbd-9906-6ea4291f2cdd': 0.0030071879631649277, 'c3406462-3ba7-44ea-96a0-b8d0c5b0140d': 0.002901079326617324, '543a1d50-ade6-40ec-9ace-68d89ddae281': 0.0023034373249339827, '4fe2e349-801e-4dd6-af94-1d1c82cbfdd5': 0.0038699535937993723, '8d86a363-d464-465b-b6f2-3ea13d5a2d41': 0.0011561935677252195, 'e0b9d413-a9a6-4502-8125-c05ba11ad2da': 0.006155486996102704, '570a36e8-4b19-4eb2-b306-7b82fa57336f': 0.0016584977111501473, '62057083-8525-414d-b9f9-26808d254e8e': 0.008854729600098173, '8ce3e9a0-a7b7-498d-ab40-4605e86c6cc3': 0.0067395538754314605, '059286d3-15ad-4ce6-93ed-702b0acae9cf': 0.0016876140451858308, '17746e50-7de4-40f0-9cf7-e6ae37446bbf': 0.004122891306090113, '4760006d-9a17-41da-966f-ae6eb9305c75': 0.0016551122402618543, '2206a6da-9888-4a88-aa17-652cca2fe99f': 0.004892516137926222, 'a46acc9b-9f39-4369-b2c3-5cf7a909ab8f': 0.005617087145770435, '1c34837e-26d6-47ff-b602-70e19bd38b52': 0.0017743753876268385, '45425561-0bd8-41fa-a1ba-628818062a35': 0.0011803604455786132, 'fba982c4-6579-4e2c-8be1-149ac9d19163': 0.0011803604455786132, 'ad3b5591-18cb-4520-8f11-d679ef3ff1e7': 0.001108717494954382, 'c4816bf5-99bf-46a1-a93b-9ae9ae8f0fd8': 0.001108717494954382, '0ba7160b-64f0-4382-861d-ff6f7404bd2d': 0.003138852971051368, 'e48711c4-a0fb-4e13-84e0-ef86eb066b9b': 0.0032907621170256912, 'bc2b7da1-badb-4445-8519-9d8e56c12b86': 0.003138852971051368, '4fde1536-48c6-4136-ab88-146b80c1f343': 0.0035339517246944013, '76a9d7c2-3526-4d8e-b65a-8435a91721fd': 0.001249053640393156}
# sort pages
sorted_pages = sorted(ppr1.items(), key=lambda x: x[1], reverse=True)[:10]
# print out sorted pages
for page_id, score in sorted_pages:
result = [item["title"] for item in items if item["page"]["id"] == page_id]
if (len(result) > 0):
print(score, result)
0.013267747502974915 ['π΅ Estimating the Flow State from a piece of content can be computed from Semantic Distance and Keyword Distance']
0.011490329785734889 ['π΅ Number sets follow an explicit hierarchy']
0.011350229722217336 ['π΅ Claim-based approach can improve the effectiveness and efficiency of knowledge synthesis']
0.011238778578652098 ['π΅ Mindful Notes provide the foundation for atomic note-taking techniques']
0.011114596828469915 ['π΅ Close the gap between consuming and applying information']
0.010599727638626724 ['π΅ Use Cultural Symbols and Visual Metaphors to condense a concept into a visual image']
0.010441737104318248 ['π΅ Knowledge Synthesis fails when notes arenβt adequately detailed or rigorously linked']