예제 #1
0
        // 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;
        }
예제 #2
0
 // Remove Folder 'f'f from the database
 // Used in FolderController
 public void RemoveFolder(Folder f)
 {
     db.Folders.Remove(f);
 }
예제 #3
0
        // 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;
        }