mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -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
|
||||
(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 GetSubtitleById(long id);
|
||||
|
||||
//Public read
|
||||
IEnumerable<Show> GetShows();
|
||||
|
@ -96,8 +96,14 @@ namespace Kyoo.Models
|
||||
//Converting mkv track language to c# system language tag.
|
||||
if (language == "fre")
|
||||
language = "fra";
|
||||
|
||||
DisplayName = CultureInfo.GetCultures(CultureTypes.NeutralCultures).FirstOrDefault(x => x.ThreeLetterISOLanguageName == language)?.EnglishName ?? language;
|
||||
|
||||
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;
|
||||
Link = "/subtitle/" + episodeSlug + "." + Language;
|
||||
|
||||
if (IsForced)
|
||||
|
@ -54,7 +54,11 @@ namespace Kyoo.Controllers
|
||||
&& 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)
|
||||
{
|
||||
return (from library in _database.Libraries where library.Slug == librarySlug select library).FirstOrDefault();
|
||||
|
@ -23,15 +23,23 @@ namespace Kyoo.Api
|
||||
[HttpGet("{showSlug}-s{seasonNumber:int}e{episodeNumber:int}.{identifier}.{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";
|
||||
|
||||
Track subtitle = _libraryManager.GetSubtitle(showSlug, seasonNumber, episodeNumber, languageTag, forced);
|
||||
|
||||
Track subtitle;
|
||||
|
||||
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)
|
||||
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.
|
||||
{
|
||||
return new ConvertSubripToVtt(subtitle.Path);
|
||||
|
Loading…
x
Reference in New Issue
Block a user