Go-OPML

OPML to JSON Converter with RSS Feed Fetching

v1.0.3 Ready for Release
View on GitHub

🚀 What's New in v1.0.3

✅ Dependency Updates

11 dependencies updated for better security and performance

🔧 Enhanced Build Pipeline

Intelligent version detection and automated release management

🛠️ Sample File Fix

Removed broken RSS feed from sample.opml

📚 Improved Documentation

Better build process and release management docs

✨ Features

🔄

OPML to JSON Conversion

Convert OPML files to clean, structured JSON format for easy integration

📡

RSS Feed Fetching

Optionally fetch and include RSS feed data with episode information

Concurrent Processing

High-performance concurrent RSS feed fetching for faster processing

🎛️

Customizable Options

Control episode count, timeouts, and concurrency settings

🕒

Timeout Control

Adjustable timeout settings for reliable RSS feed processing

🌐

Cross-Platform

Works on Windows, macOS, and Linux with native binaries

🚀 Getting Started

Quick Start

  1. 1

    Download the latest release

    GitHub releases page →
  2. 2

    Extract the downloaded file

  3. 3

    Open terminal and navigate to the directory

Basic Commands

Convert OPML to JSON:

./Go-OPML -input your_file.opml -output result.json

With RSS feed fetching:

./Go-OPML -input your_file.opml -output result.json -fetch-rss

📚 Usage

./Go-OPML -input <input_opml_file> -output <output_json_file> [options]

Options


-concurrency int
      Number of concurrent RSS feed fetches (default 5)
-fetch-rss
      Fetch RSS feeds and include episode information
-input string
      Path to the input OPML file
-max-episodes int
      Maximum number of episodes to fetch per podcast (default 10)
-output string
      Path to the output JSON file (default "output.json")
-timeout duration
      Timeout for fetching RSS feeds (default 30s)
            

📂 Examples

Sample OPML


<?xml version="1.0" encoding="UTF-8"?>
<opml>
    <head/>
    <body version="1.0">
        <outline xmlUrl="https://feeds.megaphone.fm/thediaryofaceo" title="The Diary Of A CEO with Steven Bartlett"/>
        <outline xmlUrl="https://feeds.simplecast.com/e_GRxR9a" title="Azeem Azhar's Exponential View"/>
        <outline xmlUrl="http://feeds.harvardbusiness.org/harvardbusiness/ideacast" title="HBR IdeaCast"/>
    </body>
</opml>
                    

Resulting JSON


[
  {
    "title": "The Diary Of A CEO with Steven Bartlett",
    "url": "https://feeds.megaphone.fm/thediaryofaceo",
    "episodes": [
      {
        "title": "The Investing Expert: We're Raising The Most Unhappy Generation In History!",
        "link": "",
        "publishDate": "2024-07-11T05:00:00Z",
        "description": "The millionaire entrepreneur revealing Wall Street's secrets and simplifying finance for the masses..."
      }
    ]
  },
  {
    "title": "Azeem Azhar's Exponential View",
    "url": "https://feeds.simplecast.com/e_GRxR9a",
    "episodes": [
      {
        "title": "The Science of Making Truthful AI",
        "link": "https://hbr.org/podcasts/exponential-view",
        "publishDate": "2024-02-07T13:17:29Z",
        "description": "Artificial Intelligence is on every business leader's agenda..."
      }
    ]
  },
  {
    "title": "HBR IdeaCast",
    "url": "http://feeds.harvardbusiness.org/harvardbusiness/ideacast",
    "episodes": [
      {
        "title": "Why We Should Pay More Attention to Departing CEOs",
        "link": "https://hbr.org/podcast/2024/07/why-we-should-pay-more-attention-to-departing-ceos",
        "publishDate": "2024-07-09T13:00:32Z",
        "description": "When news breaks of a CEO succession, much of the attention is given to the new leader..."
      }
    ]
  }
]
                    

⚙️ Performance Showcase

Test Results


$ time ./Go-OPML -input jad.opml -output output.json -fetch-rss
Successfully processed OPML and generated JSON. Output written to output.json

real    0m3.813s
user    0m1.662s
sys     0m0.238s
                

Total execution time: 3.813 seconds

Number of feeds processed: 19

Average time per feed: Approximately 0.2 seconds

📋 Release Management

Current Version: v1.0.3 (Ready)

📝 Changelog

v1.0.3 Ready for Release
  • • 11 dependency updates for enhanced security and performance
  • • Fixed sample.opml by removing broken RSS feed
  • • Enhanced build pipeline with intelligent version detection
  • • Improved documentation and release management
v1.0.2 Previous Release
  • • Major dependency updates
  • • Enhanced documentation and testing guide
  • • Updated project website
v1.0.1 Stable
  • • Initial stable release
  • • Core OPML to JSON conversion
  • • RSS feed fetching and concurrent processing

🚀 Ready to Release v1.0.3

Release Commands:
git add .
git commit -m 'Release v1.0.3: Fix sample.opml, enhance build pipeline'
git tag v1.0.3
git push origin main
git push origin v1.0.3
Available Binaries:
  • • Go-OPML.exe (Windows 64-bit)
  • • Go-OPML-mac-intel (macOS Intel)
  • • Go-OPML-mac-arm64 (macOS Apple Silicon)
  • • Go-OPML-linux (Linux 64-bit)