mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-06-23 15:30:34 -04:00
Implementing playback of subtitles where the language is unknown
This commit is contained in:
parent
8fdfc5ce85
commit
2cfb285c22
@ -21,6 +21,7 @@ namespace Kyoo.Controllers
|
|||||||
//Internal read
|
//Internal read
|
||||||
(Track video, IEnumerable<Track> audios, IEnumerable<Track> subtitles) GetStreams(long episodeID, string showSlug);
|
(Track video, IEnumerable<Track> audios, IEnumerable<Track> subtitles) GetStreams(long episodeID, string showSlug);
|
||||||
Track GetSubtitle(string showSlug, long seasonNumber, long episodeNumber, string languageTag, bool forced);
|
Track GetSubtitle(string showSlug, long seasonNumber, long episodeNumber, string languageTag, bool forced);
|
||||||
|
Track GetSubtitleById(long id);
|
||||||
|
|
||||||
//Public read
|
//Public read
|
||||||
IEnumerable<Show> GetShows();
|
IEnumerable<Show> GetShows();
|
||||||
|
@ -97,6 +97,12 @@ namespace Kyoo.Models
|
|||||||
if (language == "fre")
|
if (language == "fre")
|
||||||
language = "fra";
|
language = "fra";
|
||||||
|
|
||||||
|
if (language == null)
|
||||||
|
{
|
||||||
|
Language = ID.ToString();
|
||||||
|
DisplayName = $"Unknown Language (id: {ID.ToString()})";
|
||||||
|
}
|
||||||
|
else
|
||||||
DisplayName = CultureInfo.GetCultures(CultureTypes.NeutralCultures).FirstOrDefault(x => x.ThreeLetterISOLanguageName == language)?.EnglishName ?? language;
|
DisplayName = CultureInfo.GetCultures(CultureTypes.NeutralCultures).FirstOrDefault(x => x.ThreeLetterISOLanguageName == language)?.EnglishName ?? language;
|
||||||
Link = "/subtitle/" + episodeSlug + "." + Language;
|
Link = "/subtitle/" + episodeSlug + "." + Language;
|
||||||
|
|
||||||
|
@ -54,6 +54,10 @@ namespace Kyoo.Controllers
|
|||||||
&& track.Language == languageTag select track).FirstOrDefault();
|
&& track.Language == languageTag select track).FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Track GetSubtitleById(long id)
|
||||||
|
{
|
||||||
|
return (from track in _database.Tracks where track.ID == id select track).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
public Library GetLibrary(string librarySlug)
|
public Library GetLibrary(string librarySlug)
|
||||||
{
|
{
|
||||||
|
@ -23,15 +23,23 @@ namespace Kyoo.Api
|
|||||||
[HttpGet("{showSlug}-s{seasonNumber:int}e{episodeNumber:int}.{identifier}.{extension?}")]
|
[HttpGet("{showSlug}-s{seasonNumber:int}e{episodeNumber:int}.{identifier}.{extension?}")]
|
||||||
public IActionResult GetSubtitle(string showSlug, int seasonNumber, int episodeNumber, string identifier, string extension)
|
public IActionResult GetSubtitle(string showSlug, int seasonNumber, int episodeNumber, string identifier, string extension)
|
||||||
{
|
{
|
||||||
string languageTag = identifier.Substring(0, 3);
|
|
||||||
bool forced = identifier.Length > 3 && identifier.Substring(4) == "forced";
|
bool forced = identifier.Length > 3 && identifier.Substring(4) == "forced";
|
||||||
|
Track subtitle;
|
||||||
|
|
||||||
Track subtitle = _libraryManager.GetSubtitle(showSlug, seasonNumber, episodeNumber, languageTag, forced);
|
if (identifier.Length >= 3 && identifier[3] == '-')
|
||||||
|
{
|
||||||
|
string languageTag = identifier.Substring(0, 3);
|
||||||
|
subtitle = _libraryManager.GetSubtitle(showSlug, seasonNumber, episodeNumber, languageTag, forced);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
long.TryParse(identifier.Substring(0, 3), out long id);
|
||||||
|
subtitle = _libraryManager.GetSubtitleById(id);
|
||||||
|
}
|
||||||
|
|
||||||
if (subtitle == null)
|
if (subtitle == null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
|
|
||||||
if (subtitle.Codec == "subrip" && extension == "vtt") //The request wants a WebVTT from a Subrip subtitle, convert it on the fly and send it.
|
if (subtitle.Codec == "subrip" && extension == "vtt") //The request wants a WebVTT from a Subrip subtitle, convert it on the fly and send it.
|
||||||
{
|
{
|
||||||
return new ConvertSubripToVtt(subtitle.Path);
|
return new ConvertSubripToVtt(subtitle.Path);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user