Skip to content

Commit 0760ec4

Browse files
authored
Merge pull request #1052 from Mik1ll/fix-language-update
Fix AniDB languages not being updated properly
2 parents eea3a9b + 4d1a12b commit 0760ec4

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

Shoko.Server/Commands/AniDB/CommandRequest_GetFile.cs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -138,34 +138,36 @@ protected override void Process()
138138
public void CreateLanguages(ResponseGetFile response)
139139
{
140140
using var session = DatabaseFactory.SessionFactory.OpenSession();
141-
if ((response?.AudioLanguages?.Count ?? 0) >
142-
0) //Only create relations if the origin of the data if from Raw (WebService/AniDB)
141+
using var trans = session.BeginTransaction();
142+
// Only update languages if we got a response
143+
if (response?.AudioLanguages is not null)
143144
{
144-
// Delete old if changed
145-
var fileLanguages = RepoFactory.CrossRef_Languages_AniDB_File.GetByFileID(response.FileID);
146-
RepoFactory.CrossRef_Languages_AniDB_File.DeleteWithOpenTransaction(session, fileLanguages);
145+
// Delete old
146+
var toDelete = RepoFactory.CrossRef_Languages_AniDB_File.GetByFileID(response.FileID);
147+
RepoFactory.CrossRef_Languages_AniDB_File.DeleteWithOpenTransaction(session, toDelete);
147148

149+
// Save new
148150
var toSave = response.AudioLanguages.Select(language => language.Trim().ToLower())
149151
.Where(lang => lang.Length > 0)
150152
.Select(lang => new CrossRef_Languages_AniDB_File { LanguageName = lang, FileID = response.FileID })
151153
.ToList();
152-
153154
RepoFactory.CrossRef_Languages_AniDB_File.SaveWithOpenTransaction(session, toSave);
154155
}
155156

156-
if ((response?.SubtitleLanguages?.Count ?? 0) > 0)
157+
if (response?.SubtitleLanguages is not null)
157158
{
158-
// Delete old if changed
159-
var fileLanguages = RepoFactory.CrossRef_Subtitles_AniDB_File.GetByFileID(response.FileID);
160-
RepoFactory.CrossRef_Subtitles_AniDB_File.DeleteWithOpenTransaction(session, fileLanguages);
159+
// Delete old
160+
var toDelete = RepoFactory.CrossRef_Subtitles_AniDB_File.GetByFileID(response.FileID);
161+
RepoFactory.CrossRef_Subtitles_AniDB_File.DeleteWithOpenTransaction(session, toDelete);
161162

163+
// Save new
162164
var toSave = response.SubtitleLanguages.Select(language => language.Trim().ToLower())
163165
.Where(lang => lang.Length > 0)
164166
.Select(lang => new CrossRef_Subtitles_AniDB_File { LanguageName = lang, FileID = response.FileID })
165167
.ToList();
166-
167168
RepoFactory.CrossRef_Subtitles_AniDB_File.SaveWithOpenTransaction(session, toSave);
168169
}
170+
trans.Commit();
169171
}
170172

171173
public void CreateEpisodes(string filename, ResponseGetFile response)

Shoko.Server/Providers/AniDB/UDP/Info/RequestGetFile.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,10 @@ protected override UDPResponse<ResponseGetFile> ParseResponse(UDPResponse<string
222222
}
223223

224224
// audio languages
225-
var alangs = parts[10].Split(new[] { '\'' }, StringSplitOptions.RemoveEmptyEntries).ToList();
225+
var alangs = parts[10].Split(new[] { '\'' }, StringSplitOptions.RemoveEmptyEntries).Where(lang => lang != "none").ToList();
226226

227227
// sub languages
228-
var slangs = parts[11].Split(new[] { '\'' }, StringSplitOptions.RemoveEmptyEntries).ToList();
228+
var slangs = parts[11].Split(new[] { '\'' }, StringSplitOptions.RemoveEmptyEntries).Where(lang => lang != "none").ToList();
229229

230230
// mylist
231231
var myList = ParseMyList(parts);

0 commit comments

Comments
 (0)