public static List <string> GetSubtitleDataDirectoris(string movieRootDir, SubtitleData subtitleData) { var dirs = new List <string>(); if (subtitleData is null || !string.IsNullOrEmpty(subtitleData.ErrorMessage)) { return(dirs); } movieRootDir = Path.Combine(movieRootDir, "Subtitles"); dirs.Add(movieRootDir); bool hasFa = subtitleData.Subtitles != null && subtitleData.Subtitles.Count > 0; var seasons = new List <int?>(); if (hasFa) { dirs.Add(Path.Combine(movieRootDir, SubtitleLanguage.Fa.ToString())); seasons.AddRange(subtitleData.Subtitles.Where(sx => sx.SeasonNumber.HasValue).Select(sx => sx.SeasonNumber).Distinct()); } seasons = seasons.Distinct().ToList(); if (hasFa) { seasons.ForEach(sx => dirs.Add(Path.Combine(movieRootDir, Language.fa.ToString(), $"Season {sx.Value}"))); } return(dirs); }
private async void DownloadSubFileButton_OnClick(object Sender, RoutedEventArgs E) { SubtitleData data = SubtitlesList.SelectedValue as SubtitleData; if (data == null) { await window.ShowMessageAsync("No subtitles selected", "Please select a subtitles file to download."); } else { SaveFileDialog dialog = new SaveFileDialog { FileName = data.SubFileName, Filter = "SubRip (*.srt)|*.srt" }; if (!dialog.ShowDialog( ).GetValueOrDefault( )) { return; } controller = await window.ShowProgressAsync("Downloading subtitles", $"Downloading {data.SubFileName} from opensubtitles.org."); controller.Maximum = data.SubFileSize; downloadPath = dialog.FileName; downloader.DownloadFileAsync(new Uri(data.SubDownloadLink), tempFile); } }
public static SubtitleData CreateSubtitleData() { SubtitleData ret = new SubtitleData(); ret._filename = null; ret._color = Color.white; ret._pos = Vector3.zero; return(ret); }
public static void CreateSubtitleDataDirectoris(string movieRootDir, SubtitleData subtitleData) { var dirs = GetSubtitleDataDirectoris(movieRootDir, subtitleData); foreach (var d in dirs) { if (!Directory.Exists(d)) { Directory.CreateDirectory(d); } } }
public async Task DownloadSubtitleAsync(string movieRootDir, SubtitleData subtitleData, ProgressData progress = null, CancellationToken cancellationToken = default(CancellationToken)) { try { var allSubtitles = new List <SubtitleDataDetail>(); if (subtitleData.Subtitles != null) { allSubtitles.AddRange(subtitleData.Subtitles); } Utils.CreateSubtitleDataDirectoris(movieRootDir, subtitleData); movieRootDir = Path.Combine(movieRootDir, "Subtitles"); int total = allSubtitles.Count; int currentIndex = 1; if (subtitleData.Subtitles != null) { foreach (var sub in subtitleData.Subtitles) { if (cancellationToken.IsCancellationRequested) { throw new TaskCanceledException("Operation canceled by user."); } progress?.Report(currentIndex, total); currentIndex++; string fileName = Utils.RenameToPhisicalName($"{sub.Title}-{sub.Id}.zip"); string fileDir = Path.Combine(movieRootDir, "Fa"); if (sub.SeasonNumber.HasValue) { fileDir = Path.Combine(fileDir, $"Season {sub.SeasonNumber.Value}"); } fileName = Path.Combine(fileDir, fileName); await Utils.DownloadFileAsync(fileName, sub.Link); } } } catch (TaskCanceledException ex) { throw ex; } catch (Exception ex) { throw ex; } }
public void RemoveSubtitle(long index) { if (index < 0 || index > queue.Count - 1) { return; } SubtitleData subData = GetSubtitle(index); if (subData != null) { queue.Remove(subData); } }
public List<FileInfo> SaveSubtitle(Subtitle subtitle) { _logger.Info("Saving subtitle " + subtitle.FileName + "[" + subtitle.LanguageCode + "]"); var fileName = subtitle.FileName; var subtitleId = subtitle.Id; var languageCode = subtitle.LanguageCode; var languageName = DailySubsLanguageUtils.TryGetLanguageNameFromCode(languageCode).Name; var subtitleData = new SubtitleData(fileName, subtitleId, languageName); var subtitles = new List<SubtitleData>(1) {subtitleData}; var savedSubtitle = DownloadSubtitles(subtitles, 0); _logger.Info("Subtitle saved"); return savedSubtitle; }
public List <FileInfo> SaveSubtitle(Subtitle subtitle) { var fileName = subtitle.FileName; var subtitleId = subtitle.Id; var languageName = subtitle.LanguageCode; string languageCode; ToOpenSubtitlesTwoLetters.TryGetValue(languageName, out languageCode); var subtitleData = new SubtitleData(fileName, subtitleId, languageName); var subtitles = new List <SubtitleData>(1) { subtitleData }; var savedSubtitle = DownloadSubtitles(subtitles, 0); return(savedSubtitle); }
void Start() { video.url = Path.Combine(Application.streamingAssetsPath, StartingCutscene ? StartVideoName : EndVideoName); audio.clip = StartingCutscene ? StartAudio : EndAudio; video.loopPointReached += OnVideoEnd; string penis = Resources.Load <TextAsset>("subtitles").text; string name = StartingCutscene ? "start scene" : "end scene"; var node = SUCC.DataConverter.DataStructureFromPENIS(penis).Item2[name]; foreach (var child in node.ChildNodes) { var heck = (SUCC.KeyNode)child; SubtitleData.Add(float.Parse(heck.Key), heck.Value); } SubtitleTimes = new List <float>(SubtitleData.Keys); SubtitleTimes.Sort(); StartCoroutine(PrepareThenPlay()); }
public void AddSubtitle(long index, String subtitle, int durationMs) { if (blocked || subtitle == null || subtitle.Length == 0 || durationMs < 1) { return; } durationMs /= Core.UPDATE_INTERVAL; SubtitleData subData = GetSubtitle(index); if (subData == null) { queue.Add(new SubtitleData(index, subtitle, durationMs)); } else { subData.subtitle = subtitle; subData.duration = durationMs; } }
public void Read(Stream input, OWLib.STUD stud) { using (BinaryReader reader = new BinaryReader(input, Encoding.UTF8, true)) { data = reader.Read <SubtitleData>(); input.Position = data.arrayInfoOffset; // seems to use nonstandard array, defined by two uints, with one uint inbetween uint count = reader.Read <uint>(); reader.Read <uint>(); // unk7, seems to be apart of the array definiton uint offset = reader.Read <uint>(); if (count > 0) { input.Position = offset; str = new string(reader.ReadChars((int)count)); } else { str = ""; } } }
public void OnGUI() { m_isShowSubtitleArray = EditorGUILayout.Foldout(m_isShowSubtitleArray, "Subtitle List"); if (m_isShowSubtitleArray) { EditorGUILayout.BeginHorizontal(); { GUILayout.Space(20); EditorGUILayout.BeginVertical(GUI.skin.box, GUILayout.Width(Screen.width - 50)); for (int i = 0; i < m_subtitleDataList.Count; i++) { m_isSubtitleDataItemShowList[i] = EditorGUILayout.Foldout(m_isSubtitleDataItemShowList[i], "Item: " + i); if (m_isSubtitleDataItemShowList[i]) { EditorGUI.indentLevel += 1; // 层次树 +1 m_subtitleDataList[i].OnGUI(); EditorGUI.indentLevel -= 1; // 层次树 -1 } } if (GUILayout.Button("Add Child")) { m_subtitleDataList.Add(SubtitleData.CreateSubtitleData()); m_isSubtitleDataItemShowList.Add(true); } EditorGUILayout.EndVertical(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); } }