Skip to main content

Blogroll

These are my regular blog readings, sorted by category.

Authors

Baltimore

Black

Community

Dev

Education

Fearless

Flashlight

Freemasonry

Health

IRL

Law

Library

Marketing

Me

OSINT

Pennsylvania

Policy

Politics

Productivity

Programming

Science

Security

Shopping

Social Media

Software

Stuff

Tech

Travel

US News

Writing

Generation

Generated with the following code from a Feedly OMPL download, constructed by ChatGPT

import xml.etree.ElementTree as ET

def parse_opml_to_markdown(input_file_path, output_file_path):
# Parse the OPML file
tree = ET.parse(input_file_path)
root = tree.getroot()

# Check if there are any categories or just a flat list of feeds
body_element = root.find('body')
category_element = body_element.find('outline')

# Initialize markdown content
markdown_content = ""

if category_element is None:
# Flat list of feeds, no categories
feeds = [
(feed.get('title', feed.get('text')), feed.get('htmlUrl'))
for feed in body_element.findall('outline')
if feed.get('htmlUrl') is not None
]
for feed_title, feed_link in feeds:
markdown_content += f"- [{feed_title}]({feed_link})\n"
else:
# Categories exist, handle similar to the previous file
categories = []
for category in body_element.findall('outline'):
category_title = category.get('title', category.get('text'))
feeds = [
(feed.get('title', feed.get('text')), feed.get('htmlUrl'))
for feed in category.findall('outline')
if feed.get('htmlUrl') is not None
]
if feeds:
categories.append((category_title, feeds))

# Sort categories alphabetically
categories.sort(key=lambda x: x[0])

for category_title, feeds in categories:
markdown_content += f"## {category_title}\n\n"
for feed_title, feed_link in feeds:
markdown_content += f"- [{feed_title}]({feed_link})\n"
markdown_content += "\n"

# Save the markdown content to a file
with open(output_file_path, 'w') as markdown_file:
markdown_file.write(markdown_content)

# Example usage:
input_file = 'subscriptions.opml'
output_file = 'subscriptions.md'
parse_opml_to_markdown(input_file, output_file)