From 524058a0d249ea09fe6f2c00e6c7fbafad9b0811 Mon Sep 17 00:00:00 2001 From: Kirsten Hunter Date: Thu, 8 Feb 2024 13:22:05 -0800 Subject: [PATCH] Adding new vector apps --- astrajson/AI-Phil-RestSearch | 20 --- astrajson/Datastax-Examples-ai-as-an-api.json | 3 +- ...xamples-google-cloud-functions-nodejs.json | 8 +- ...shop-introduction-to-machine-learning.json | 3 +- .../cassioml-langchain-flare-pdf-qa-demo.json | 4 +- astrajson/devinbost-moonshot.json | 4 +- .../difli-astra_vsearch_QA_for_documents.json | 4 +- ...shnannarayanaswamy-bank-ragstack-demo.json | 4 +- ...ayanaswamy-hiring-assistant-rag-astra.json | 4 +- ...anaswamy-langstream-rag-astra-chatbot.json | 4 +- ...rishnannarayanaswamy-ptc-ai-assistant.json | 4 +- ...nnarayanaswamy-ragstack-astra-dev-jam.json | 4 +- ...-streamlit-langchain-vectorstore-demo.json | 4 +- ...ayanaswamy-video-summarizer-langchain.json | 4 +- astrajson/mborges-pivotal-ds-vector-demo.json | 4 +- astrajson/michelderu-vector-playgrounds.json | 10 +- ...undha-genai-multi-lingual-retail-demo.json | 4 +- ...kundha-image-similarity-vector-search.json | 4 +- ...ha-multi-modal-vector-retrieval-astra.json | 4 +- astrajson/mukundha-real-time-ai-astra.json | 4 +- .../mukundha-term-search-playground.json | 3 + astrajson/qzg-streamlit-langchain.json | 4 +- astrajson/smatiolids-astra-agent-memory.json | 4 +- getAppData.py | 167 +++++++++--------- 24 files changed, 146 insertions(+), 136 deletions(-) delete mode 100644 astrajson/AI-Phil-RestSearch diff --git a/astrajson/AI-Phil-RestSearch b/astrajson/AI-Phil-RestSearch deleted file mode 100644 index e0ec026..0000000 --- a/astrajson/AI-Phil-RestSearch +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "Restaurant Search Application", - "description": "This is a technology demonstrator that combines vector similarity search with a secondary geographic radius filter.", - "duration": "2h", - "skillLevel": "Intermediate", - "netlifyUrl": "", - "gitpodUrl": "", - "vercelUrl": "", - "githubUrl": "https://github.com/qzg/streamlit-langchain/tree/main", - "tags": [ - "vector", - "nodejs", - "openstreetmap", - "openai", - "docker" - ], - "category": "", - "priority": 1, - "heroImage": "https://github.com/AI-Phil/RestSearch/blob/main/readme/homepage.png" -} diff --git a/astrajson/Datastax-Examples-ai-as-an-api.json b/astrajson/Datastax-Examples-ai-as-an-api.json index 4e0106b..48ea9f8 100644 --- a/astrajson/Datastax-Examples-ai-as-an-api.json +++ b/astrajson/Datastax-Examples-ai-as-an-api.json @@ -7,8 +7,7 @@ "astradb", "fastapi", "tutorials", - "dev", - "machine-learning" + "dev" ], "urls": { "github": "https://github.com/DataStax-Examples/ai-as-an-api", diff --git a/astrajson/Datastax-Examples-google-cloud-functions-nodejs.json b/astrajson/Datastax-Examples-google-cloud-functions-nodejs.json index 0f4f238..afb325d 100644 --- a/astrajson/Datastax-Examples-google-cloud-functions-nodejs.json +++ b/astrajson/Datastax-Examples-google-cloud-functions-nodejs.json @@ -2,18 +2,14 @@ "key": "Datastax-Examples-google-cloud-functions-nodejs", "tags": [ "javascript", - "nodejs driver", + "nodejs", "dev", "astradb", "ds-bulk", - "nodejs", "google cloud", "serverless framework", "cassandra", - "tutorials", - "google-cloud", - "serverless-framework", - "nodejs-driver" + "tutorials" ], "urls": { "github": "https://github.com/DataStax-Examples/google-cloud-functions-nodejs", diff --git a/astrajson/DatastaxDevs-workshop-introduction-to-machine-learning.json b/astrajson/DatastaxDevs-workshop-introduction-to-machine-learning.json index 830dac6..9a020a7 100644 --- a/astrajson/DatastaxDevs-workshop-introduction-to-machine-learning.json +++ b/astrajson/DatastaxDevs-workshop-introduction-to-machine-learning.json @@ -11,8 +11,7 @@ "spark-ml", "workshop", "nosql", - "jupyter-notebook", - "machine-learning" + "jupyter-notebook" ], "urls": { "github": "https://github.com/datastaxdevs/workshop-introduction-to-machine-learning", diff --git a/astrajson/cassioml-langchain-flare-pdf-qa-demo.json b/astrajson/cassioml-langchain-flare-pdf-qa-demo.json index 5d3cafa..0288ae9 100644 --- a/astrajson/cassioml-langchain-flare-pdf-qa-demo.json +++ b/astrajson/cassioml-langchain-flare-pdf-qa-demo.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/CassioML/langchain-flare-pdf-qa-demo", + "urls": { + "github": "https://github.com/CassioML/langchain-flare-pdf-qa-demo" + }, "tags": ["vector", "astradb", "pdf", "flare", "cassio"], "category": "", "priority": 1, diff --git a/astrajson/devinbost-moonshot.json b/astrajson/devinbost-moonshot.json index 2a53257..75d7710 100644 --- a/astrajson/devinbost-moonshot.json +++ b/astrajson/devinbost-moonshot.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/devinbost/moonshot", + "urls": { + "github": "https://github.com/devinbost/moonshot" + }, "tags": ["vector", "astradb", "data api"], "category": "", "priority": 1, diff --git a/astrajson/difli-astra_vsearch_QA_for_documents.json b/astrajson/difli-astra_vsearch_QA_for_documents.json index 2bf6687..8dd1643 100644 --- a/astrajson/difli-astra_vsearch_QA_for_documents.json +++ b/astrajson/difli-astra_vsearch_QA_for_documents.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/difli/astra_vsearch_QA_for_documents", + "urls": { + "github": "https://github.com/difli/astra_vsearch_QA_for_documents" + }, "tags": ["vector", "astradb", "cassio", "openai", "python"], "category": "", "priority": 1, diff --git a/astrajson/krishnannarayanaswamy-bank-ragstack-demo.json b/astrajson/krishnannarayanaswamy-bank-ragstack-demo.json index 67dc336..f38b6df 100644 --- a/astrajson/krishnannarayanaswamy-bank-ragstack-demo.json +++ b/astrajson/krishnannarayanaswamy-bank-ragstack-demo.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/krishnannarayanaswamy/bank-ragstax-demo", + "urls": { + "github": "https://github.com/krishnannarayanaswamy/bank-ragstax-demo" + }, "tags": ["vector", "astradb", "data api", "ragstax"], "category": "", "priority": 1, diff --git a/astrajson/krishnannarayanaswamy-hiring-assistant-rag-astra.json b/astrajson/krishnannarayanaswamy-hiring-assistant-rag-astra.json index f10fa81..dbc1318 100644 --- a/astrajson/krishnannarayanaswamy-hiring-assistant-rag-astra.json +++ b/astrajson/krishnannarayanaswamy-hiring-assistant-rag-astra.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/krishnannarayanaswamy/ragstack-astra-dev-jam", + "urls": { + "github": "https://github.com/krishnannarayanaswamy/ragstack-astra-dev-jam" + }, "tags": ["vector", "astradb", "data api", "ragstax", "bedrock"], "category": "", "priority": 1, diff --git a/astrajson/krishnannarayanaswamy-langstream-rag-astra-chatbot.json b/astrajson/krishnannarayanaswamy-langstream-rag-astra-chatbot.json index 46c0e3a..7bdb3d4 100644 --- a/astrajson/krishnannarayanaswamy-langstream-rag-astra-chatbot.json +++ b/astrajson/krishnannarayanaswamy-langstream-rag-astra-chatbot.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/krishnannarayanaswamy/langstream-rag-astra-chatbot", + "urls": { + "github": "https://github.com/krishnannarayanaswamy/langstream-rag-astra-chatbot" + }, "tags": ["vector", "astradb", "data api", "langstream"], "category": "", "priority": 1, diff --git a/astrajson/krishnannarayanaswamy-ptc-ai-assistant.json b/astrajson/krishnannarayanaswamy-ptc-ai-assistant.json index dc4d618..8dcc0cc 100644 --- a/astrajson/krishnannarayanaswamy-ptc-ai-assistant.json +++ b/astrajson/krishnannarayanaswamy-ptc-ai-assistant.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/krishnannarayanaswamy/ptc-ai-assistant", + "urls": { + "github": "https://github.com/krishnannarayanaswamy/ptc-ai-assistant" + }, "tags": ["vector", "astradb", "data api"], "category": "", "priority": 1, diff --git a/astrajson/krishnannarayanaswamy-ragstack-astra-dev-jam.json b/astrajson/krishnannarayanaswamy-ragstack-astra-dev-jam.json index e3f12a3..66c1152 100644 --- a/astrajson/krishnannarayanaswamy-ragstack-astra-dev-jam.json +++ b/astrajson/krishnannarayanaswamy-ragstack-astra-dev-jam.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/krishnannarayanaswamy/ragstack-astra-dev-jam", + "urls": { + "github": "https://github.com/krishnannarayanaswamy/ragstack-astra-dev-jam" + }, "tags": [ "vector", "ragbot", diff --git a/astrajson/krishnannarayanaswamy-streamlit-langchain-vectorstore-demo.json b/astrajson/krishnannarayanaswamy-streamlit-langchain-vectorstore-demo.json index aaef713..881e60f 100644 --- a/astrajson/krishnannarayanaswamy-streamlit-langchain-vectorstore-demo.json +++ b/astrajson/krishnannarayanaswamy-streamlit-langchain-vectorstore-demo.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/krishnannarayanaswamy/video-summarizer-langchain", + "urls": { + "github": "https://github.com/krishnannarayanaswamy/video-summarizer-langchain" + }, "tags": ["vector", "astradb", "langchain", "openai", "python"], "category": "", "priority": 1, diff --git a/astrajson/krishnannarayanaswamy-video-summarizer-langchain.json b/astrajson/krishnannarayanaswamy-video-summarizer-langchain.json index efcfd37..29ab0ee 100644 --- a/astrajson/krishnannarayanaswamy-video-summarizer-langchain.json +++ b/astrajson/krishnannarayanaswamy-video-summarizer-langchain.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/krishnannarayanaswamy/video-summarizer-langchain", + "urls": { + "github": "https://github.com/krishnannarayanaswamy/video-summarizer-langchain" + }, "tags": ["vector", "astradb", "langchain", "openai", "python"], "category": "", "priority": 1, diff --git a/astrajson/mborges-pivotal-ds-vector-demo.json b/astrajson/mborges-pivotal-ds-vector-demo.json index 8c75686..16c1624 100644 --- a/astrajson/mborges-pivotal-ds-vector-demo.json +++ b/astrajson/mborges-pivotal-ds-vector-demo.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/smatiolids/astra-agent-memory", + "urls": { + "github": "https://github.com/smatiolids/astra-agent-memory" + }, "tags": [ "vector", "astradb", diff --git a/astrajson/michelderu-vector-playgrounds.json b/astrajson/michelderu-vector-playgrounds.json index b9ed9cb..a3ad398 100644 --- a/astrajson/michelderu-vector-playgrounds.json +++ b/astrajson/michelderu-vector-playgrounds.json @@ -6,12 +6,10 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/michelderu/vector-playgrounds/tree/main/hybrid-search", - "tags": [ - "vector", - "cassio", - "langchain" - ], + "urls": { + "github": "https://github.com/michelderu/vector-playgrounds/tree/main/hybrid-search" + }, + "tags": ["vector", "cassio", "langchain"], "category": "", "priority": 1, "heroImage": "https://github.com/michelderu/vector-playgrounds/blob/main/hybrid-search/Hybrid-search.jpg" diff --git a/astrajson/mukundha-genai-multi-lingual-retail-demo.json b/astrajson/mukundha-genai-multi-lingual-retail-demo.json index f8ff111..c64757e 100644 --- a/astrajson/mukundha-genai-multi-lingual-retail-demo.json +++ b/astrajson/mukundha-genai-multi-lingual-retail-demo.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/mukundha/genai-multi-lingual-retail-demo/tree/main", + "urls": { + "github": "https://github.com/mukundha/genai-multi-lingual-retail-demo/tree/main" + }, "tags": ["vector", "python", "cassandra"], "category": "", "priority": 1, diff --git a/astrajson/mukundha-image-similarity-vector-search.json b/astrajson/mukundha-image-similarity-vector-search.json index 1cf4e8b..f521c6a 100644 --- a/astrajson/mukundha-image-similarity-vector-search.json +++ b/astrajson/mukundha-image-similarity-vector-search.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/mukundha/image-similarity-vector-search", + "urls": { + "github": "https://github.com/mukundha/image-similarity-vector-search" + }, "tags": ["vector", "cassio", "langchain"], "category": "", "priority": 1, diff --git a/astrajson/mukundha-multi-modal-vector-retrieval-astra.json b/astrajson/mukundha-multi-modal-vector-retrieval-astra.json index 7d3b579..b3890b7 100644 --- a/astrajson/mukundha-multi-modal-vector-retrieval-astra.json +++ b/astrajson/mukundha-multi-modal-vector-retrieval-astra.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/mukundha/multi-modal-vector-retrieval-astra", + "urls": { + "github": "https://github.com/mukundha/multi-modal-vector-retrieval-astra" + }, "tags": ["vector", "astradb", "cassio", "openai", "python"], "category": "", "priority": 1, diff --git a/astrajson/mukundha-real-time-ai-astra.json b/astrajson/mukundha-real-time-ai-astra.json index 2c6337d..24c4187 100644 --- a/astrajson/mukundha-real-time-ai-astra.json +++ b/astrajson/mukundha-real-time-ai-astra.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/michelderu/vector-playgrounds/tree/main/hybrid-search", + "urls": { + "github": "https://github.com/michelderu/vector-playgrounds/tree/main/hybrid-search" + }, "tags": ["vector", "cassio", "langchain"], "category": "", "priority": 1, diff --git a/astrajson/mukundha-term-search-playground.json b/astrajson/mukundha-term-search-playground.json index bab24d9..d793679 100644 --- a/astrajson/mukundha-term-search-playground.json +++ b/astrajson/mukundha-term-search-playground.json @@ -6,6 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", + "urls": { + "github": "https://github.com/mukundha/term-search-playground/tree/main" + }, "githubUrl": "https://github.com/mukundha/term-search-playground/tree/main", "tags": ["vector", "python", "cassandra"], "category": "", diff --git a/astrajson/qzg-streamlit-langchain.json b/astrajson/qzg-streamlit-langchain.json index fc93b8c..6b47aad 100644 --- a/astrajson/qzg-streamlit-langchain.json +++ b/astrajson/qzg-streamlit-langchain.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/qzg/streamlit-langchain", + "urls": { + "github": "https://github.com/qzg/streamlit-langchain" + }, "tags": [ "vector", "langchain", diff --git a/astrajson/smatiolids-astra-agent-memory.json b/astrajson/smatiolids-astra-agent-memory.json index a40eb58..50c879f 100644 --- a/astrajson/smatiolids-astra-agent-memory.json +++ b/astrajson/smatiolids-astra-agent-memory.json @@ -6,7 +6,9 @@ "netlifyUrl": "", "gitpodUrl": "", "vercelUrl": "", - "githubUrl": "https://github.com/smatiolids/astra-agent-memory", + "urls": { + "github": "https://github.com/smatiolids/astra-agent-memory" + }, "tags": ["vector", "astradb", "python"], "category": "", "priority": 1, diff --git a/getAppData.py b/getAppData.py index 9c3cfce..da3896a 100644 --- a/getAppData.py +++ b/getAppData.py @@ -196,6 +196,7 @@ def main(): currententry = json.loads(content_file.decoded_content.decode()) if ("$vector" in currententry): del currententry["$vector"] + print(currententry) repository = currententry["urls"]["github"] url = currententry["urls"]["github"] organization_name = repository.split("/")[3] @@ -232,90 +233,90 @@ def main(): print(error) continue - if (astrajson is not None): - apprepo = g.get_repo(organization_name + '/' + repository_name) - last_modified = apprepo.last_modified - forks_count = apprepo.forks_count - stargazers_count = apprepo.stargazers_count - ghtopics = apprepo.get_topics() - for topic in ghtopics: - if topic not in currententry["tags"]: - currententry["tags"].append(topic) - - newentry = {"key":key, "tags":currententry["tags"], "urls":{"github":url}, "last_modified":last_modified, "forks_count":forks_count, "stargazers_count":stargazers_count} - - settings = json.loads(astrajson.decoded_content.decode()) - keys = settings.keys() - for key in keys: - lowerkey = key.lower() - if (key.upper() == "GITHUBURL"): - continue - elif (key.upper() == "YOUTUBEURL" or key.upper() == "YOUTUBE"): - print("Youtube is " + json.dumps(settings[key])) - newentry["urls"]["youtube"] = settings[key] - #try: - # (path, video_id) = settings[key][0].split("=") - # (likes, views) = getVideoStats(youtube, video_id) - # newentry["likes"] = likes - # newentry["views"] = views - #except: - # continue - elif (key.upper() == "GITPODURL"): - newentry["urls"]["gitpod"] = settings[key] - elif (key.upper() == "NETLIFYURL"): - newentry["urls"]["netlify"] = settings[key] - elif (key.upper() == "DEMOURL"): - newentry["urls"]["demo"] = settings[key] - elif (key.upper() == "VERCELURL"): - newentry["urls"]["vercel"] = settings[key] - elif (key.upper() == "TAGS"): - for tag in settings["tags"]: - if ("name" in tag): - newentry["tags"].append( - tag["name"].lower()) - else: - newentry["tags"].append(tag.lower()) - elif (key.upper() == "STACK"): - for stack in settings["stack"]: - if ("tags" not in entry): - newentry["tags"] = [] - newentry["tags"].append(stack.lower()) - elif (key.upper() == "CATEGORY"): - newentry["tags"].append(settings[key]) - elif (key.upper() == "HEROIMAGE"): - newentry["urls"]["heroimage"] = settings[key] - else: - newentry[lowerkey] = settings[key] - newentry["readme"] = readme_trunc - newentry["readme_markdown"] = readme_markdown_trunc - if ("$vector" in newentry): - del newentry["$vector"] - vector_json = json.dumps(newentry) - - for tag in newentry["tags"]: - if tag not in existingtags: - taglist.append(tag) - - newentry["tags"] = cleanTags(newentry["tags"]) - - query_vector = client.embeddings.create(input=[vector_json], - model=embedding_model_name).data[0].embedding - newentry["_id"] = newentry["key"] - newentry["$vector"] = query_vector + if (astrajson is not None): + apprepo = g.get_repo(organization_name + '/' + repository_name) + last_modified = apprepo.last_modified + forks_count = apprepo.forks_count + stargazers_count = apprepo.stargazers_count + ghtopics = apprepo.get_topics() + for topic in ghtopics: + if topic not in currententry["tags"]: + currententry["tags"].append(topic) + + newentry = {"key":key, "tags":currententry["tags"], "urls":{"github":url}, "last_modified":last_modified, "forks_count":forks_count, "stargazers_count":stargazers_count} + + settings = json.loads(astrajson.decoded_content.decode()) + keys = settings.keys() + for key in keys: + lowerkey = key.lower() + if (key.upper() == "GITHUBURL"): + continue + elif (key.upper() == "YOUTUBEURL" or key.upper() == "YOUTUBE"): + print("Youtube is " + json.dumps(settings[key])) + newentry["urls"]["youtube"] = settings[key] + #try: + # (path, video_id) = settings[key][0].split("=") + # (likes, views) = getVideoStats(youtube, video_id) + # newentry["likes"] = likes + # newentry["views"] = views + #except: + # continue + elif (key.upper() == "GITPODURL"): + newentry["urls"]["gitpod"] = settings[key] + elif (key.upper() == "NETLIFYURL"): + newentry["urls"]["netlify"] = settings[key] + elif (key.upper() == "DEMOURL"): + newentry["urls"]["demo"] = settings[key] + elif (key.upper() == "VERCELURL"): + newentry["urls"]["vercel"] = settings[key] + elif (key.upper() == "TAGS"): + for tag in settings["tags"]: + if ("name" in tag): + newentry["tags"].append( + tag["name"].lower()) + else: + newentry["tags"].append(tag.lower()) + elif (key.upper() == "STACK"): + for stack in settings["stack"]: + if ("tags" not in entry): + newentry["tags"] = [] + newentry["tags"].append(stack.lower()) + elif (key.upper() == "CATEGORY"): + newentry["tags"].append(settings[key]) + elif (key.upper() == "HEROIMAGE"): + newentry["urls"]["heroimage"] = settings[key] + else: + newentry[lowerkey] = settings[key] + newentry["readme"] = readme_trunc + newentry["readme_markdown"] = readme_markdown_trunc + if ("$vector" in newentry): + del newentry["$vector"] + vector_json = json.dumps(newentry) + + for tag in newentry["tags"]: + if tag not in existingtags: + taglist.append(tag) + + newentry["tags"] = cleanTags(newentry["tags"]) + + query_vector = client.embeddings.create(input=[vector_json], + model=embedding_model_name).data[0].embedding + newentry["_id"] = newentry["key"] + newentry["$vector"] = query_vector + + try: + demo_collection.insert_one(newentry) + print("Inserted " + newentry["key"]) + except: + demo_collection.find_one_and_replace(filter={"_id":newentry["key"]}, replacement=newentry) + print("Replaced " + newentry["key"]) + + filename = "./astrajson/" + newentry["key"] + ".json" + del newentry["$vector"] + with open(filename, 'w') as outfile: + json.dump(newentry, outfile, indent=4) + print("Wrote " + filename) - try: - demo_collection.insert_one(newentry) - print("Inserted " + newentry["key"]) - except: - demo_collection.find_one_and_replace(filter={"_id":newentry["key"]}, replacement=newentry) - print("Replaced " + newentry["key"]) - - filename = "./astrajson/" + newentry["key"] + ".json" - del newentry["$vector"] - with open(filename, 'w') as outfile: - json.dump(newentry, outfile, indent=4) - print("Wrote " + filename) - def cleanTags(tags): newtags = []