Skip to content

Commit

Permalink
feat: add transcripts to import/export
Browse files Browse the repository at this point in the history
  • Loading branch information
eteubert committed Jul 28, 2024
1 parent 76c93e6 commit c17767b
Show file tree
Hide file tree
Showing 4 changed files with 105 additions and 2 deletions.
36 changes: 36 additions & 0 deletions lib/modules/transcripts/jobs/import_transcripts_job.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

namespace Podlove\Modules\Transcripts\Jobs;

use Podlove\Jobs\JobTrait;
use Podlove\Modules\ImportExport\Import\PodcastImportJobTableTrait;
use Podlove\Modules\ImportExport\Import\PodcastImportJobTrait;

class ImportTranscriptsJob
{
use JobTrait,
PodcastImportJobTrait,
PodcastImportJobTableTrait {
PodcastImportJobTableTrait::setup insteadof JobTrait;
}

public static function title()
{
return 'Podcast Import: Transcripts';
}

public static function description()
{
return 'Imports Episode Transcripts';
}

protected static function get_import_table_class()
{
return \Podlove\Modules\Transcripts\Model\Transcript::class;
}

protected static function get_import_item_name()
{
return 'transcript';
}
}
36 changes: 36 additions & 0 deletions lib/modules/transcripts/jobs/import_voice_assignments_job.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

namespace Podlove\Modules\Transcripts\Jobs;

use Podlove\Jobs\JobTrait;
use Podlove\Modules\ImportExport\Import\PodcastImportJobTableTrait;
use Podlove\Modules\ImportExport\Import\PodcastImportJobTrait;

class ImportVoiceAssignmentsJob
{
use JobTrait,
PodcastImportJobTrait,
PodcastImportJobTableTrait {
PodcastImportJobTableTrait::setup insteadof JobTrait;
}

public static function title()
{
return 'Podcast Import: Transcript Voices';
}

public static function description()
{
return 'Imports Episode Transcript Voice Assignments';
}

protected static function get_import_table_class()
{
return \Podlove\Modules\Transcripts\Model\VoiceAssignment::class;
}

protected static function get_import_item_name()
{
return 'voice_assignment';
}
}
31 changes: 29 additions & 2 deletions lib/modules/transcripts/transcripts.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ public function load()

add_action('wp', [$this, 'serve_transcript_file']);

add_action('podlove_xml_export', [$this, 'expandExportFile']);
add_filter('podlove_import_jobs', [$this, 'expandImport']);

// external assets
add_action('podlove_asset_assignment_form', [$this, 'add_asset_assignment_form'], 10, 2);
add_action('podlove_media_file_content_has_changed', [$this, 'handle_changed_media_file']);
Expand Down Expand Up @@ -515,11 +518,34 @@ public function handle_changed_media_file($media_file_id)
$this->transcript_import_from_asset($media_file->episode());
}

/**
* Expands "Import/Export" module: export logic.
*/
public function expandExportFile(\SimpleXMLElement $xml)
{
\Podlove\Modules\ImportExport\Export\PodcastExporter::exportTable($xml, 'transcripts', 'transcript', '\Podlove\Modules\Transcripts\Model\Transcript');
\Podlove\Modules\ImportExport\Export\PodcastExporter::exportTable($xml, 'voice_assignments', 'voice_assignment', '\Podlove\Modules\Transcripts\Model\VoiceAssignment');
}

/**
* Expands "Import/Export" module: import logic.
*
* @param mixed $jobs
*/
public function expandImport($jobs)
{
$jobs[] = '\Podlove\Modules\Transcripts\Jobs\ImportTranscriptsJob';
$jobs[] = '\Podlove\Modules\Transcripts\Jobs\ImportVoiceAssignmentsJob';

return $jobs;
}

private function print_rss_feed_links($podcast, $episode)
{
if ($podcast->feed_transcripts == 'none') {
return;
} else if ($podcast->feed_transcripts == 'generated') {
}
if ($podcast->feed_transcripts == 'generated') {
if (!Transcript::exists_for_episode($episode->id)) {
return;
}
Expand All @@ -534,7 +560,8 @@ private function print_rss_feed_links($podcast, $episode)
echo "\n\t\t".'<podcast:transcript url="'.esc_attr($url).'" type="application/json" />';

return;
} elseif (preg_match('/^asset_(?<id>\d+)$/', $podcast->feed_transcripts, $matches) === 1) {
}
if (preg_match('/^asset_(?<id>\d+)$/', $podcast->feed_transcripts, $matches) === 1) {
$asset_id = $matches['id'];
$asset = Model\EpisodeAsset::find_by_id($asset_id);

Expand Down
4 changes: 4 additions & 0 deletions readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,10 @@ This product includes GeoLite2 data created by MaxMind, available from http://ww

== Changelog ==

= 2024-07-28 =

* add transcripts to import/export

= 2024-03-26 =

* bring beta up to date with stable release 4.1.6
Expand Down

0 comments on commit c17767b

Please sign in to comment.