Add Feed#[] for episode lookup by number
Assisted-by: Claude Opus 4.6 via pi
change lznxsozuyyrnywtnztnwqnsqwrlxyzxz
commit 58ec618aab9768a665cf1a4eb6575bcea9560da3
author Alpha Chen <alpha@kejadlen.dev>
date
parent qvyqnwwm
diff --git a/Rakefile b/Rakefile
index 11adf85..d4e66cc 100644
--- a/Rakefile
+++ b/Rakefile
@@ -25,12 +25,6 @@ def feed
   @feed ||= CookingIssues::Feed.new(HRN_FEED)
 end
 
-def find_episode(number)
-  ep = feed.episodes.find { |e| e.number == number.to_i }
-  abort "Episode #{number} not found in feed." unless ep
-  ep
-end
-
 # --- Tasks ---
 
 task default: :sync
@@ -56,7 +50,8 @@ desc "Transcribe an episode by number (e.g., rake transcribe[42])"
 task :transcribe, [:number] => HRN_FEED do |_t, args|
   abort "Usage: rake transcribe[NUMBER]" unless args[:number]
 
-  ep = find_episode(args[:number])
+  ep = feed[args[:number].to_i]
+  abort "Episode #{args[:number]} not found in feed." unless ep
   audio = File.join(AUDIO_DIR, "#{ep.slug}.mp3")
   abort "Audio not found: #{audio}\nRun `rake sync` first." unless File.exist?(audio)
 
diff --git a/lib/feed.rb b/lib/feed.rb
index c40d862..803922f 100644
--- a/lib/feed.rb
+++ b/lib/feed.rb
@@ -24,6 +24,10 @@ module CookingIssues
       @episodes ||= parse(File.read(@path))
     end
 
+    def [](number)
+      episodes.find { |e| e.number == number }
+    end
+
     private
 
     def parse(xml)