public void Load()
        {
            string pls = null;

            _db.Get("playlist:" + _name, out pls, null);
            if (pls == null)
            {
                return;
            }
            else
            {
                string [] entries = Regex.Split(pls, "#@%@#");
                //Hyena.Log.Information ("playlist name="+pls+", entries="+entries);
                foreach (string e in entries)
                {
                    Hyena.Log.Information("entry=" + e);
                    if (e != "")
                    {
                        string [] ids   = Regex.Split(e, "%%%");
                        string    cs_id = ids[0].Substring("cuesheet=".Length);
                        string    cs_e  = ids[1].Substring("entry=".Length);
                        //Hyena.Log.Information ("finding: cs-id="+cs_id+", e-id="+cs_e);
                        CueSheetEntry entry = _csc.FindEntry(cs_id, cs_e);
                        if (entry != null)
                        {
                            Hyena.Log.Information("adding entry:" + entry);
                            Add(entry);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void Save()
        {
            if (!File.Exists(_cuefile + ".bck"))
            {
                File.Copy(_cuefile, _cuefile + ".bck");
            }
            System.IO.StreamWriter wrt = new System.IO.StreamWriter(_cuefile);
            resetArt();
            indent = "";
            wrtl(wrt, "creator", "Banshee CueSheets Extension", true);
            wrtl(wrt, "creator-version", CS_Info.Version(), true);
            wrtl(wrt, "banshee-aaid", getArtId(), true);
            wrtl(wrt, "image", _image_file_name, true);
            wrtl(wrt, "composer", _composer, true);
            wrtl(wrt, "subtitle", _subtitle, true);
            wrtl(wrt, "year", _year, true);
            wrtl(wrt, "cddbid", _cddbId, true);
            wrtl(wrt, "performer", _performer);
            wrtl(wrt, "title", _title);
            string mfn = Tools.basename(_music_file_name);

            wrtl_file(wrt, mfn);

            int i, N;

            for (i = 0, N = nEntries(); i < N; i++)
            {
                CueSheetEntry e = _tracks[i];
                writeEntry(wrt, e, i);
            }

            wrt.Close();
        }
Ejemplo n.º 3
0
 public void seekSong(int i)
 {
     Hyena.Log.Information("SeekSong called " + i);
     try {
         CueSheet sheet = MySource.getSheet();
         if (sheet.Count == 0)
         {
             if (_selected != null)
             {
                 loadCueSheet(_selected);
             }
         }
         CueSheetEntry e = sheet.entry(i);
         _song_id = e.id();
         if (_song_file != e.file())
         {
             ServiceManager.PlayerEngine.Open(e);
             ServiceManager.PlayerEngine.Play();
             _song_file = e.file();
         }
         double offset = e.offset();
         //ServiceManager.PlayerEngine.SetCurrentTrack(e);
         _position     = (uint)(offset * 1000.0);
         _set_position = true;
         mscount       = chgcount - (1000 / timeout);
     } catch (SystemException ex) {
         Hyena.Log.Information(ex.ToString());
     }
 }
        private void setLatinTag(int track, CueSheet s, CueSheetEntry e)
        {
            string fn = _file_format;

            fn = fn.Replace("@A", s.performer());
            fn = fn.Replace("@b", s.title());
            fn = fn.Replace("@n", (track + 1).ToString());
            fn = fn.Replace("@t", e.title());
            fn = _directory + "/" + fn + ".mp3";
            Hyena.Log.Information("file to convert:" + fn);
            if (File.Exists(fn))
            {
                TagLib.File file = TagLib.File.Create(fn);
                if (file == null)
                {
                    Hyena.Log.Error("Cannot create taglib file for " + fn);
                    return;
                }
                else
                {
                    Hyena.Log.Information("Setting tags for " + fn);
                    file.Tag.Album        = s.title();
                    file.Tag.AlbumArtists = new string[] { s.performer() };
                    file.Tag.Composers    = new string[] { s.composer() };
                    file.Tag.Genres       = new string[] { s.genre() };
                    file.Tag.Title        = e.title();
                    file.Tag.Track        = (uint)track + 1;
                    file.Tag.Performers   = new string[] { e.performer() };
                    file.Save();
                }
            }
        }
        public void Insert(CueSheetEntry e, int index)
        {
            CS_PlayListEntry ple = new CS_PlayListEntry(e);

            Hyena.Log.Information("index=" + index + ", e=" + e);
            _playlist.Insert(index, ple);
        }
Ejemplo n.º 6
0
 void writeEntry(StreamWriter wrt, CueSheetEntry e, int i)
 {
     indent = "  ";
     wrtl_track(wrt, i + 1);
     indent = "    ";
     wrtl(wrt, "title", e.title());
     wrtl(wrt, "performer", e.performer());
     wrtl(wrt, "piece", e.getPiece(), true);
     wrtl(wrt, "composer", e.getComposer(), true);
     wrtl_index(wrt, 1, e.offset());
 }
        public void OnSave(object sender, EventArgs args)
        {
            string nPerformer = _performer.Text.Trim();
            string nTitle     = _title.Text.Trim();
            string nComposer  = _composer.Text.Trim();
            string nYear      = _year.Text.Trim();
            string nSubtitle  = _subtitle.Text.Trim();

            _sheet.SetPerformer(nPerformer);
            _sheet.SetTitle(nTitle);
            _sheet.SetComposer(nComposer);
            _sheet.SetYear(nYear);
            _sheet.SetSubtitle(nSubtitle);
            _sheet.SetImagePath(_imagefile.Filename);

            _sheet.ClearTracks();

            Gtk.TreeIter iter;
            if (_store.GetIterFirst(out iter))
            {
                do
                {
                    string title    = (string)_store.GetValue(iter, 1);
                    string perf     = (string)_store.GetValue(iter, 2);
                    string composer = (string)_store.GetValue(iter, 3);
                    if (composer.Trim() == "")
                    {
                        composer = nComposer;
                    }
                    string piece = (string)_store.GetValue(iter, 4);
                    piece = piece.Trim();
                    string    offset = (string)_store.GetValue(iter, 5);
                    string [] parts  = Regex.Split(offset, "[.:]");
                    double    e_offset;
                    int       min   = Convert.ToInt32(parts[0]);
                    int       secs  = Convert.ToInt32(parts[1]);
                    int       hsecs = Convert.ToInt32(parts[2]);
                    e_offset = min * 60 + secs + (hsecs / 100.0);
                    if (perf.Trim() == "")
                    {
                        perf = nPerformer;
                    }
                    CueSheetEntry e = _sheet.AddTrack(title, perf, e_offset);
                    e.setComposer(composer);
                    e.setPiece(piece);
                } while(_store.IterNext(ref iter));
            }
            _sheet.Save();
        }
Ejemplo n.º 8
0
        public int searchIndex(string _current_entry_id, double _offset)
        {
            Hyena.Log.Information("id=" + _current_entry_id + ", offset=" + _offset);
            int k, N;

            if (_current_entry_id == null)
            {
                for (k = 0, N = nEntries(); k < N && _offset > _tracks[k].offset(); k++)
                {
                    ;
                }
                return(k - 1);
            }
            else
            {
                for (k = 0, N = nEntries(); k < N && _current_entry_id != entry(k).id(); k++)
                {
                    ;
                }
                if (k == N)
                {
                    return(N - 1);
                }
                else
                {
                    CueSheetEntry e = entry(k);
                    Hyena.Log.Information("offset=" + e.offset() + ", endoffset=" + e.end_offset() + " offset=" + _offset);
                    if (_offset < e.offset())
                    {
                        return(k - 1);
                    }
                    else if (e.end_offset() <= 0.0)                         // end track, we don't know
                    {
                        return(k);
                    }
                    else if (_offset >= e.end_offset())
                    {
                        return(k + 1);
                    }
                    else
                    {
                        return(k);
                    }
                }
            }
        }
Ejemplo n.º 9
0
        public override int IndexOf(TrackInfo track)
        {
            int i, N;

            for (i = 0, N = _tracks.Count; i < N && CueSheetEntry.MakeId(track) != _tracks[i].id(); i++)
            {
                ;
            }
            if (i == N)
            {
                return(-1);
            }
            else
            {
                return(i);
            }
        }
        public void Save()
        {
            string pls = "";
            string sep = "";

            Hyena.Log.Information("Playlist=" + _playlist);
            foreach (CS_PlayListEntry ple in _playlist)
            {
                Hyena.Log.Information("ple=" + ple);
                CueSheetEntry e = ple.GetCueSheetEntry();
                Hyena.Log.Information("e=" + e);
                CueSheet s = e.getCueSheet();
                Hyena.Log.Information("sheet=" + s + ", entry=" + e);
                string id    = s.id();
                string e_id  = e.id();
                string entry = "cuesheet=" + id + "%%%entry=" + e_id;
                pls += sep;
                pls += entry;
                sep  = "#@%@#";
            }
            _db.Set("playlist:" + _name, pls);
        }
Ejemplo n.º 11
0
        public CueSheetEntry AddTrack(string e_title, string e_perf, double e_offset)
        {
            int           nr   = _tracks.Count;
            string        aaid = getArtId();
            CueSheetEntry e    = new CueSheetEntry(this, _music_file_name, aaid, nr, -1, e_title, e_perf, _title, e_offset);

            append(e);
            int i, N;

            for (i = 0, N = nEntries(); i < N; i++)
            {
                _tracks[i].setNrOfTracks(N);
                if (i < N - 1)
                {
                    _tracks[i].setLength(_tracks[i + 1].offset() - _tracks[i].offset());
                }
                else
                {
                    _tracks[i].setLength(-1.0);
                }
            }
            return(e);
        }
Ejemplo n.º 12
0
 public void reLoad()
 {
     index = 0;
     try {
         CueSheet sheet = MySource.getSheet();
         //ServiceManager.PlayerEngine.SetAccurateSeek(true);
         CueSheetEntry e = sheet.entry(index);
         _song_id = e.id();
         ServiceManager.PlayerEngine.Open(e);
         ServiceManager.PlayerEngine.Play();
         if (ServiceManager.PlaybackController.Source != MySource)
         {
             ServiceManager.PlaybackController.Source = MySource;
         }
         if (ServiceManager.PlaybackController.NextSource != MySource)
         {
             ServiceManager.PlaybackController.NextSource = MySource;
         }
         //ServiceManager.PlaybackController.SetSeekMode (true);
     } catch (SystemException ex) {
         Hyena.Log.Information(ex.ToString());
     }
     mscount = chgcount - 1;
 }
Ejemplo n.º 13
0
 public void AddEntry(CueSheetEntry e)
 {
     append(e);
 }
Ejemplo n.º 14
0
        public void iLoad(StreamReader sr)
        {
            _composer = "";
            _year     = "";
            _subtitle = "";
            _cddbId   = "";

            Boolean _in_tracks = false;
            string  e_perf     = "";
            string  e_title    = "";
            double  e_offset   = -1.0;
            string  e_piece    = "";
            string  e_composer = "";
            string  aaid       = "";
            int     nr         = 0;

            //string filename=_cuefile;
            string directory = _directory;

            string line = "";

            while ((line = sr.ReadLine()) != null)
            {
                line = line.Trim();
                if (line != "")
                {
                    //Console.WriteLine ("it="+_in_tracks+", "+line);
                    if (!_in_tracks)
                    {
                        if (eq(line, "performer"))
                        {
                            _performer = unquote(line.Substring(9).Trim());
                        }
                        else if (eq(line, "title"))
                        {
                            _title = unquote(line.Substring(5).Trim());
                        }
                        else if (eq(line, "file"))
                        {
                            _music_file_name = line.Substring(4).Trim();
                            Match m = Regex.Match(_music_file_name, "([\"][^\"]+[\"])");
                            _music_file_name = m.ToString();
                            _music_file_name = unquote(_music_file_name).Trim();
                            _music_file_name = Tools.makefile(directory, _music_file_name);
                        }
                        else if (line.Substring(0, 5).ToLower() == "track")
                        {
                            _in_tracks = true;
                        }
                        else if (eq(line, "rem"))
                        {
                            //Hyena.Log.Information (line);
                            line = line.Substring(3).Trim();
                            if (eq(line, "image"))
                            {
                                _image_file_name = line.Substring(5).Trim();
                                _image_file_name = unquote(_image_file_name).Trim();
                                _img_full_path   = Tools.makefile(directory, _image_file_name);
                            }
                            else if (eq(line, "composer"))
                            {
                                _composer = unquote(line.Substring(8).Trim());
                            }
                            else if (eq(line, "subtitle"))
                            {
                                _subtitle = unquote(line.Substring(8).Trim());
                            }
                            else if (eq(line, "year"))
                            {
                                _year = unquote(line.Substring(4).Trim());
                            }
                            else if (eq(line, "cddbid"))
                            {
                                _cddbId = unquote(line.Substring(6).Trim());
                            }
                        }
                    }


                    if (_in_tracks)
                    {
                        if (aaid == "")
                        {
                            aaid = getArtId();
                        }

                        //Console.WriteLine ("line="+line);
                        if (eq(line, "track"))
                        {
                            if (e_offset >= 0)
                            {
                                nr += 1;
                                CueSheetEntry e = new CueSheetEntry(this, _music_file_name, aaid, nr, -1, e_title, e_perf, _title, e_offset);
                                e.setComposer(e_composer);
                                e.setPiece(e_piece);
                                append(e);
                                if (nr > 1)
                                {
                                    CueSheetEntry ePrev;
                                    ePrev = this.entry(nr - 2);
                                    ePrev.setLength(e.offset() - ePrev.offset());
                                }
                            }
                            e_perf     = _performer;
                            e_title    = "";
                            e_composer = _composer;
                            e_offset   = -1.0;
                        }
                        else if (eq(line, "title"))
                        {
                            e_title = unquote(line.Substring(5).Trim());
                        }
                        else if (eq(line, "performer"))
                        {
                            e_perf = unquote(line.Substring(9).Trim());
                        }
                        else if (eq(line, "rem"))
                        {
                            line = line.Substring(3).Trim();
                            if (eq(line, "composer"))
                            {
                                e_composer = unquote(line.Substring(8).Trim());
                            }
                            else if (eq(line, "piece"))
                            {
                                e_piece = unquote(line.Substring(5).Trim());
                            }
                        }
                        else if (eq(line, "index"))
                        {
                            string s = line.Substring(5).Trim();
                            s = Regex.Replace(s, "^\\s*[0-9]+\\s*", "");
                            string [] parts = Regex.Split(s, "[:]");
                            int       min   = Convert.ToInt32(parts[0]);
                            int       secs  = Convert.ToInt32(parts[1]);
                            int       hsecs = Convert.ToInt32(parts[2]);
                            e_offset = min * 60 + secs + (hsecs / 100.0);
                        }
                    }
                }
            }
            //Console.WriteLine ("Last entry adding");
            if (e_offset >= 0)
            {
                nr += 1;
                CueSheetEntry e = new CueSheetEntry(this, _music_file_name, aaid, nr, -1, e_title, e_perf, _title, e_offset);
                e.setComposer(e_composer);
                e.setPiece(e_piece);
                append(e);
                if (nr > 1)
                {
                    CueSheetEntry ePrev;
                    ePrev = this.entry(nr - 2);
                    ePrev.setLength(e.offset() - ePrev.offset());
                }
            }
            //Console.WriteLine ("Last entry added");

            {
                int i;
                for (i = 0; i < nEntries(); i++)
                {
                    entry(i).setNrOfTracks(nr);
                }
                //Console.WriteLine ("Ready");
            }

            base.Selection.MaxIndex = nEntries();
        }
		public CS_PlayListEntry (CueSheetEntry e) {
			_e=e;
			Hyena.Log.Information ("ple: construct entry="+_e);
		}
Ejemplo n.º 16
0
 void writeEntry(StreamWriter wrt,CueSheetEntry e,int i)
 {
     indent="  ";
     wrtl_track(wrt,i+1);
     indent="    ";
     wrtl (wrt,"title",e.title ());
     wrtl (wrt,"performer",e.performer ());
     wrtl (wrt,"piece",e.getPiece (),true);
     wrtl (wrt,"composer",e.getComposer (),true);
     wrtl_index(wrt,1,e.offset ());
 }
Ejemplo n.º 17
0
        public void iLoad(StreamReader sr)
        {
            _composer="";
            _year="";
            _subtitle="";
            _cddbId="";

            Boolean _in_tracks=false;
            string e_perf="";
            string e_title="";
            double e_offset=-1.0;
            string e_piece="";
            string e_composer="";
            string aaid="";
            int nr=0;

            //string filename=_cuefile;
            string directory=_directory;

            string line = "";
            while ((line = sr.ReadLine()) != null) {
                line=line.Trim ();
                if (line!="") {
                    //Console.WriteLine ("it="+_in_tracks+", "+line);
                    if (!_in_tracks) {
                        if (eq(line,"performer")) {
                            _performer=unquote(line.Substring (9).Trim ());
                        } else if (eq(line,"title")) {
                            _title=unquote(line.Substring (5).Trim ());
                        } else if (eq(line,"file")) {
                            _music_file_name=line.Substring (4).Trim ();
                            Match m=Regex.Match (_music_file_name,"([\"][^\"]+[\"])");
                            _music_file_name=m.ToString ();
                            _music_file_name=unquote(_music_file_name).Trim ();
                            _music_file_name=Tools.makefile(directory,_music_file_name);
                        } else if (line.Substring(0,5).ToLower ()=="track") {
                            _in_tracks=true;
                        } else if (eq(line,"rem")) {
                            //Hyena.Log.Information (line);
                            line=line.Substring (3).Trim ();
                            if (eq(line,"image")) {
                                _image_file_name=line.Substring (5).Trim ();
                                _image_file_name=unquote(_image_file_name).Trim ();
                                _img_full_path=Tools.makefile(directory,_image_file_name);
                            } else if (eq (line,"composer")) {
                                _composer=unquote(line.Substring (8).Trim ());
                            } else if (eq (line,"subtitle")) {
                                _subtitle=unquote(line.Substring (8).Trim ());
                            } else if (eq (line,"year")) {
                                _year=unquote(line.Substring (4).Trim ());
                            } else if (eq (line,"cddbid")) {
                                _cddbId=unquote(line.Substring (6).Trim ());
                            }
                        }
                    }

                    if (_in_tracks) {
                        if (aaid=="") { aaid=getArtId (); }

                        //Console.WriteLine ("line="+line);
                        if (eq(line,"track")) {
                            if (e_offset>=0) {
                                nr+=1;
                                CueSheetEntry e=new CueSheetEntry(this,_music_file_name,aaid,nr,-1,e_title,e_perf,_title,e_offset);
                                e.setComposer (e_composer);
                                e.setPiece (e_piece);
                                append (e);
                                if (nr>1) {
                                    CueSheetEntry ePrev;
                                    ePrev=this.entry (nr-2);
                                    ePrev.setLength(e.offset ()-ePrev.offset());
                                }
                            }
                            e_perf=_performer;
                            e_title="";
                            e_composer=_composer;
                            e_offset=-1.0;
                        } else if (eq(line,"title")) {
                            e_title=unquote(line.Substring (5).Trim ());
                        } else if (eq(line,"performer")) {
                            e_perf=unquote(line.Substring (9).Trim ());
                        } else if (eq(line,"rem")) {
                            line=line.Substring (3).Trim ();
                            if (eq (line,"composer")) {
                                e_composer=unquote(line.Substring (8).Trim ());
                            } else if (eq(line,"piece")) {
                                e_piece=unquote(line.Substring (5).Trim ());
                            }
                        } else if (eq(line,"index")) {
                            string s=line.Substring (5).Trim ();
                            s=Regex.Replace (s,"^\\s*[0-9]+\\s*","");
                            string []parts=Regex.Split(s,"[:]");
                            int min=Convert.ToInt32(parts[0]);
                            int secs=Convert.ToInt32(parts[1]);
                            int hsecs=Convert.ToInt32(parts[2]);
                            e_offset=min*60+secs+(hsecs/100.0);
                        }
                    }
                }
            }
            //Console.WriteLine ("Last entry adding");
            if (e_offset>=0) {
                nr+=1;
                CueSheetEntry e=new CueSheetEntry(this,_music_file_name,aaid,nr,-1,e_title,e_perf,_title,e_offset);
                e.setComposer (e_composer);
                e.setPiece (e_piece);
                append (e);
                if (nr>1) {
                    CueSheetEntry ePrev;
                    ePrev=this.entry (nr-2);
                    ePrev.setLength(e.offset ()-ePrev.offset());
                }
            }
            //Console.WriteLine ("Last entry added");

            {
                int i;
                for(i=0;i<nEntries();i++) {
                    entry (i).setNrOfTracks(nr);
                }
                //Console.WriteLine ("Ready");
            }

            base.Selection.MaxIndex=nEntries ();
        }
Ejemplo n.º 18
0
 public void AddEntry(CueSheetEntry e)
 {
     append (e);
 }
Ejemplo n.º 19
0
        private int chgcount = 3000 / 100;                         // every 3 seconds
        //private CueSheetEntry     _playing=null;

        public bool PositionDisplay()
        {
            if (ServiceManager.PlaybackController.Source == MySource)
            {
                CueSheet sheet = MySource.getSheet();
                if (sheet != null)
                {
                    mscount += 1;
                    if (mscount > chgcount)
                    {
                        mscount = 0;
                    }

                    // Position if necessary
                    if (_set_position)
                    {
                        _set_position = false;
                        _positioning  = true;
                        ServiceManager.PlayerEngine.Position = _position;
                    }

                    // Do nothing while seeking
                    uint   pos = ServiceManager.PlayerEngine.Position;
                    double p   = ((double)pos) / 1000.0;
                    if (_positioning && pos <= _position)
                    {
                        //Hyena.Log.Information ("seek="+_position+", pos="+pos);
                        // do nothing
                    }
                    else
                    {
                        _positioning = false;
                        // Track number
                        int i = sheet.searchIndex(_song_id, p);
                        if (i != index && i >= 0)
                        {
                            // Handle repeat track
                            if (ServiceManager.PlaybackController.RepeatMode == PlaybackRepeatMode.RepeatSingle)
                            {
                                seekSong(index);
                            }
                            else if (sheet.SheetKind == CueSheet.Kind.PlayList)
                            {
                                index = i;
                                seekSong(i);
                            }
                            // Every 2 seconds
                            if (mscount == 0)
                            {
                                Hyena.Log.Information("Found index i=" + i + ", songid=" + _song_id);
                                index = i;
                                CueSheetEntry e = sheet.entry(index);
                                Hyena.Log.Information("current entry: " + e);
                                //ServiceManager.PlayerEngine.SetCurrentTrack (e);
                            }
                        }

                        if (mscount == 0 && index >= 0)
                        {
                            Hyena.Log.Information("mscount=" + mscount + ", index=" + index);
                            //view.ScrollTo(index);
                            view.Selection.QuietUnselect(view.Selection.FirstIndex);
                            view.Selection.Select(index);
                        }
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 20
0
        //private Stack<DatabaseTrackInfo> stk=new Stack<DatabaseTrackInfo>();

        public void ImportSheet(CueSheet s)
        {
            if (import_manager == null)
            {
                try {
                    import_manager = new LibraryImportManager(false);

                    /*import_manager.ImportResult+=delegate(object sender,DatabaseImportResultArgs args) {
                     *      DatabaseTrackInfo trk=args.Track;
                     *      stk.Push (trk);
                     * };*/
                } catch (Exception ex) {
                    Hyena.Log.Error(ex.ToString());
                }
            }

            Hyena.Log.Debug("Importsheet: Starting transaction");
            int i, N;

            for (i = 0, N = s.nEntries(); i < N; i++)
            {
                try {
                    CueSheetEntry e    = s.entry(i);
                    string        file = e.file();
                    string        uuid = Regex.Replace(e.id(), "\\s", "_");
                    string        ext  = ".mp3";

                    string uid = Guid.NewGuid().ToString();
                    string u1  = uid.Substring(0, 1);
                    string u2  = uid.Substring(0, 2);
                    string dir = basedir + "/.banshee/" + u1;
                    if (!Directory.Exists(dir))
                    {
                        Directory.CreateDirectory(dir);
                    }
                    dir += "/" + u2;
                    if (!Directory.Exists(dir))
                    {
                        Directory.CreateDirectory(dir);
                    }
                    uuid = dir + "/" + uuid + ext;

                    UnixFileInfo f = new UnixFileInfo(file);
                    if (File.Exists(uuid))
                    {
                        File.Delete(uuid);
                    }
                    //f.CreateLink (uuid);
                    f.CreateSymbolicLink(uuid);

                    DatabaseTrackInfo trk = import_manager.ImportTrack(uuid);
                    //File.Delete (uuid);

                    /*if (trk==null) {
                     *      Hyena.Log.Warning ("track = null (file="+e.file ()+")");
                     *      if (stk.Count>0) { trk=stk.Pop (); }
                     * }*/

                    if (trk == null)
                    {
                        Hyena.Log.Error("track = null (file=" + e.file() + ")");
                    }
                    else
                    {
                        Hyena.Log.Information("track!=null (file=" + e.file() + ")");
                        //MySource.DbConnection.BeginTransaction();
                        trk.PartOfCue    = 1;
                        trk.CueAudioFile = e.file();
                        trk.AlbumTitle   = s.title();
                        //trk.Album=s.title ();
                        trk.AlbumArtist = s.performer();
                        trk.Composer    = (e.Composer == "") ? s.composer() : e.Composer;
                        //trk.ArtworkId=s.getArtId ();
                        //trk.Artist=
                        trk.ArtistName  = (e.performer() == "") ? s.performer() : e.performer();
                        trk.TrackTitle  = e.title();
                        trk.TrackNumber = i + 1;
                        trk.Genre       = s.genre();
                        trk.BeginOffset = e.BeginOffset;
                        trk.EndOffset   = e.EndOffset;
                        //trk.Uri=trk.CueAudioUri;
                        //trk.MediaAttributes = TrackMediaAttributes.ExternalResource;
                        //trk.PrimarySource = ServiceManager.SourceManager.MusicLibrary;

                        trk.Save();
                        //MySource.DbConnection.CommitTransaction();
                    }
                } catch (Exception ex) {
                    Hyena.Log.Error(ex.ToString());
                }
            }
            import_manager.NotifyAllSources();
        }
Ejemplo n.º 21
0
 private void append(CueSheetEntry e)
 {
     _tracks.Add(e);
 }
Ejemplo n.º 22
0
 public CueSheetEntry AddTrack(string e_title,string e_perf,double e_offset)
 {
     int nr=_tracks.Count;
     string aaid=getArtId ();
     CueSheetEntry e=new CueSheetEntry(this,_music_file_name,aaid,nr,-1,e_title,e_perf,_title,e_offset);
     append (e);
     int i,N;
     for(i=0,N=nEntries ();i<N;i++) {
         _tracks[i].setNrOfTracks(N);
         if (i<N-1) {
             _tracks[i].setLength (_tracks[i+1].offset ()-_tracks[i].offset ());
         } else {
             _tracks[i].setLength (-1.0);
         }
     }
     return e;
 }
Ejemplo n.º 23
0
        public override void Reload()
        {
            _filteredList.Clear();
            List <CueSheet> s = MySource.getSheets();
            int             i, N;
            string          artist = "";

            if (_artist != null)
            {
                artist = Loosely.prepare(_artist.Name);
            }
            string composer = "";

            if (_composer != null)
            {
                composer = Loosely.prepare(_composer.Name);
            }
            for (i = 0, N = s.Count; i < N; i++)
            {
                bool do_add = true;
                if (_genre != null)
                {
                    if (s[i].genre() != _genre.Genre)
                    {
                        do_add = false;
                    }
                }
                if (_artist != null && do_add)
                {
                    if (!Loosely.eqp(artist, s[i].performer()))
                    {
                        do_add = false;
                    }
                }
                if (_composer != null && do_add)
                {
                    if (!Loosely.eqp(composer, s[i].composer()))
                    {
                        do_add = false;
                    }
                }
                if (_album_search != null && do_add)
                {
                    if (!s[i].title().ToLower().Contains(_album_search) &&
                        !s[i].performer().ToLower().Contains(_album_search) &&
                        !s[i].composer().ToLower().Contains(_album_search))
                    {
                        if (_also_in_tracks)
                        {
                            CueSheet q = s[i];
                            int      k, M;
                            bool     can_add = false;
                            for (k = 0, M = q.nEntries(); k < M && !can_add; k++)
                            {
                                CueSheetEntry e = q.entry(k);
                                if (e.title().ToLower().Contains(_album_search) ||
                                    e.performer().ToLower().Contains(_album_search) ||
                                    e.getComposer().ToLower().Contains(_album_search))
                                {
                                    can_add = true;
                                }
                            }
                            do_add = can_add;
                        }
                        else
                        {
                            do_add = false;
                        }
                    }
                }

                if (do_add)
                {
                    _filteredList.Add(new CS_AlbumInfo(s[i]));
                }
            }
            _filteredList.Sort(new CS_AlbumInfo.Comparer());
            base.RaiseReloaded();
        }
Ejemplo n.º 24
0
 private void append(CueSheetEntry e)
 {
     _tracks.Add(e);
 }
Ejemplo n.º 25
0
 public CS_PlayListEntry(CueSheetEntry e)
 {
     _e = e;
     Hyena.Log.Information("ple: construct entry=" + _e);
 }
 public void Add(CueSheetEntry e)
 {
     _playlist.Add(new CS_PlayListEntry(e));
     //Insert (e,_playlist.Count);
 }
Ejemplo n.º 27
0
 private void setLatinTag(int track,CueSheet s,CueSheetEntry e)
 {
     string fn=_file_format;
     fn=fn.Replace ("@A",s.performer());
     fn=fn.Replace ("@b",s.title ());
     fn=fn.Replace ("@n",(track+1).ToString ());
     fn=fn.Replace ("@t",e.title ());
     fn=_directory+"/"+fn+".mp3";
     Hyena.Log.Information ("file to convert:"+fn);
     if (File.Exists(fn)) {
         TagLib.File file=TagLib.File.Create(fn);
         if (file==null) {
             Hyena.Log.Error ("Cannot create taglib file for "+fn);
             return;
         } else {
             Hyena.Log.Information("Setting tags for "+fn);
             file.Tag.Album=s.title ();
             file.Tag.AlbumArtists=new string[]{s.performer ()};
             file.Tag.Composers=new string[]{s.composer ()};
             file.Tag.Genres=new string[]{s.genre ()};
             file.Tag.Title=e.title ();
             file.Tag.Track=(uint) track+1;
             file.Tag.Performers=new string[]{e.performer ()};
             file.Save ();
         }
     }
 }