Skip to content

Commit

Permalink
Remove audio version templates
Browse files Browse the repository at this point in the history
  • Loading branch information
svevang committed Apr 26, 2023
1 parent fab948c commit 4de8012
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 123 deletions.
61 changes: 0 additions & 61 deletions app/models/episode_import.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,6 @@ class EpisodeImport < ActiveRecord::Base
RETRYING = "retrying".freeze
EPISODE_SAVED = "episode saved".freeze

def audio_versions
@audio_versions ||= []
@audio_versions
end

attr_writer :audio_versions

def unlock_podcast
if podcast_import.finished?
podcast_import.podcast.update(locked: false)
Expand Down Expand Up @@ -150,8 +143,6 @@ def update_episode_with_entry!
episode.url = episode_url(entry) || default_episode_url(episode)
episode.itunes_type = entry[:itunes_episode_type] unless entry[:itunes_episode_type].blank?

update_audio

episode
end

Expand Down Expand Up @@ -185,58 +176,6 @@ def update_image
to_insert
end

def update_audio
if audio.blank? || audio[:files].blank?
audio_versions.clear
return []
end

if audio_versions.blank?
template = get_or_create_template(audio, entry["enclosure"]["type"])
version = {
audio_version_template: template,
label: "Podcast Audio",
explicit: explicit(entry[:itunes_explicit]),
audio_files: []
}
audio_versions << version
else
version = audio_versions.first
end

audio_files = version[:audio_files] || []
to_insert = []
to_destroy = []

if audio_files.size > audio[:files].size
to_destroy = audio_files[audio[:files].size..(audio[:files].size - 1)]
end

audio[:files].each_with_index do |audio_url, i|
existing_audio = audio_files[i]

if existing_audio && !files_match?(existing_audio, audio_url)
to_destroy << existing_audio
existing_audio = nil
end

if !existing_audio
new_audio = {
upload: audio_url.gsub(" ", "%20"),
label: "Segment #{i + 1}",
position: (i + 1)
}
to_insert << new_audio
end
end

version.audio_files.reject { |i| to_destroy.any? { |d| d.equal?(id) } } if to_destroy.size > 0

to_insert.each { |af| version[:audio_files] << af }

to_insert
end

def entry_description(entry)
atr = entry_description_attribute(entry)
clean_text(entry[atr])
Expand Down
46 changes: 0 additions & 46 deletions app/models/podcast_import.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,6 @@ class PodcastImport < ActiveRecord::Base
MP3_CONTENT_TYPE = "audio/mpeg".freeze
VIDEO_CONTENT_TYPE = "video/mpeg".freeze

def audio_version_templates
@audio_versions ||= []
@audio_versions
end

attr_writer :audio_version_templates

def episode_import_placeholders
EpisodeImport.where(podcast_import_id: id).having_duplicate_guids
end
Expand Down Expand Up @@ -333,45 +326,6 @@ def parse_keywords(feed)
(ikey + mkey).compact.uniq
end

def get_or_create_template(audio_files, enclosure_type = nil)
num_segments = [audio_files[:files].count, 1].max
template = nil
contains_video = enclosure_type&.starts_with?("video/")
content_type = contains_video ? VIDEO_CONTENT_TYPE : MP3_CONTENT_TYPE

podcast.with_lock do
template = audio_version_templates
.find { |avt| avt[:segment_count] == num_segments && avt[:content_type] == content_type }
if !template
template =
{
label: podcast_label(contains_video, num_segments),
content_type: content_type,
segment_count: num_segments,
promos: false,
length_minimum: 0,
length_maximum: 0,
audio_file_templates: []
}

audio_version_templates << template

num_segments.times do |x|
num = x + 1
template[:audio_file_templates] <<
{
position: num,
label: "Segment #{num}",
length_minimum: 0,
length_maximum: 0
}
end
end
end

template
end

def podcast_label(contains_video, num_segments)
label = contains_video ? "Podcast Video" : "Podcast Audio"
label += " #{num_segments} #{"segment".pluralize(num_segments)}"
Expand Down
9 changes: 0 additions & 9 deletions test/models/episode_import_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,15 +62,6 @@
_(f.podcast_id).must_equal podcast.id
_(f.published_at).must_equal Time.zone.parse("2017-01-20 03:04:12")

_(episode_import.audio_versions.count).must_equal 1
config_audio = "https://dts.podtrac.com/redirect.mp3/media.blubrry.com/transistor/cdn-transistor.prx.org/wp-content/uploads/Smithsonian3_Transistor.mp3"
version = episode_import.audio_versions.first
_(version[:label]).must_equal "Podcast Audio"
_(version[:explicit]).must_be_nil

_(version[:audio_files][0][:position]).must_equal 1
_(version[:audio_files][0][:upload]).must_equal config_audio

_(f.contents.count).must_equal 1
_(f.contents.first.status).must_equal "created"

Expand Down
13 changes: 6 additions & 7 deletions test/models/podcast_import_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -80,24 +80,23 @@
# get the memoized importer
importer = importer.episode_imports.first.podcast_import
_(importer.episode_imports.count).must_equal 2
_(importer.audio_version_templates.count).must_equal 2
end

it "imports a feed" do
importer.import
end

it "handles audio and video templates in episodes" do
it "handles audio and video in episodes" do
importer.url = "http://feeds.prx.org/feed_with_video"
importer.import

eps = importer.episode_imports.reset
eps.map(&:import)
importer = eps.first.podcast_import

_(importer.audio_version_templates.count).must_equal 2
_(importer.audio_version_templates
.count { |avt| avt[:content_type] == PodcastImport::VIDEO_CONTENT_TYPE }).must_equal 1
_(eps.length).must_equal 2

_(eps[0].episode.contents.map(&:url).all? { |u| u =~ /\.mp4$/ }).must_equal true
_(eps[1].episode.contents.map(&:url).all? { |u| u =~ /\.mp3$/ }).must_equal true
end

describe "episodes only" do
Expand Down Expand Up @@ -298,7 +297,7 @@
ep2 = importer.episode_imports[1]

ep1.update! status: EpisodeImport::FAILED
ep2.update! status: EpisodeImport::STORY_SAVED
ep2.update! status: EpisodeImport::EPISODE_SAVED

importer.reload

Expand Down

0 comments on commit 4de8012

Please sign in to comment.