// Add subtitle 'file' to the database // Used in FolderController public bool AddFile(HttpPostedFileBase file, Folder folder, SubFile subfile) { // Nær í skráarendinguna á textaskránni string extension = Path.GetExtension(file.FileName); // Athugar hvort skráin sé á löglegu formi (.srt ending) if (extension != ".srt") { return false; } // Tengja textaskrána við möppu og gefa henni nafn subfile.FolderID = folder.ID; // Mun halda utan um nafnið á þýðingarskránni string transName; if (subfile.LanguageID == 1) // Textaskráni er ensk og þýðingin íslensk { subfile.SubName = file.FileName.Substring(0, file.FileName.Count() - 4) + ".en.srt"; transName = file.FileName.Substring(0, file.FileName.Count() - 4) + ".is.srt"; } else // Textaskráni er íslensk og þýðingin ensk { subfile.SubName = file.FileName.Substring(0, file.FileName.Count() - 4) + ".is.srt"; transName = file.FileName.Substring(0, file.FileName.Count() - 4) + ".en.srt"; } // Setja möppuna og textaskrána í gagnagrunninn db.Folders.Add(folder); db.SubFiles.Add(subfile); SubFile trans = new SubFile() { FolderID = folder.ID, SubName = transName, LanguageID = 2 }; if (subfile.LanguageID == 2) { trans.LanguageID = 1; } // Setja þýðinguna í gagnagrunninn db.SubFiles.Add(trans); db.SaveChanges(); if (!ReadFile(file, folder, subfile, trans)) { return false; } return true; }
// Remove Folder 'f'f from the database // Used in FolderController public void RemoveFolder(Folder f) { db.Folders.Remove(f); }
// Read subtitle 'file' and add the lines to the database // Used in FolderController public bool ReadFile(HttpPostedFileBase file, Folder folder, SubFile subfile, SubFile trans) { //// Vistar textaskrána í ~/App_Data/Uploads //// Nær eingöngu í nafnið á skránni //var fileName = Path.GetFileName(file.FileName); //// store the file inside ~/App_Data/uploads folder //var path = Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data/Uploads"), fileName); //file.SaveAs(path); //Regex reTime = new Regex(@"^(\d{1,2})(:\d{1,2})(:\d{1,2})(,\d{1,3})$"); List<string> _list = new List<string>(); using (StreamReader s = new StreamReader(file.InputStream, Encoding.GetEncoding("iso-8859-1"))) { string currLine; while ((currLine = s.ReadLine()) != null) { int value; // Línunúmer í textaskránni // 'currLine' er borið saman við 'value' til að // kanna hvort það sé heiltala. if ((int.TryParse(currLine, out value))) { _list.Add(currLine); // Tímalínurnar í textaskránni currLine = s.ReadLine(); if (currLine.Length < 17) { return false; } _list.Add(currLine.Substring(0, 12)); _list.Add(currLine.Substring(17)); } else // Textinn sjálfur { // Ef textinn er í meira en einni línu string nextLine = s.ReadLine(); while (nextLine != "") { if (nextLine == null) { break; } currLine += "\n" + nextLine; nextLine = s.ReadLine(); } _list.Add(currLine); } } } for (int i = 0; i < _list.Count(); ++i) { db.SubFileLines.Add(new SubFileLine() { SubFileID = subfile.ID, LineNumber = Convert.ToInt32(_list[i]), StartTime = _list[++i], EndTime = _list[++i], LineText = _list[++i] }); } // Nær í línurnar sem var verið að setja í gagnagrunninn IEnumerable<SubFileLine> subLines = subfile.SubFileLines.ToList(); ; foreach (var line in subLines) { // Býr til nýja línu, tengir hana við þýðingarskrána // og setur hana í gagnagrunninn db.SubFileLines.Add(new SubFileLine() { SubFileID = trans.ID, LineNumber = line.LineNumber, StartTime = line.StartTime, EndTime = line.EndTime, LineText = "" }); } return true; }