Esempio n. 1
0
        internal DACPRequest GetPlayQueueEditRequest(string command, DACPQueryElement query, PlayQueueMode mode, string sort = null)
        {
            DACPRequest request = new DACPRequest("/ctrl-int/1/playqueue-edit");

            request.QueryParameters["command"] = command;
            if (query != null)
            {
                request.QueryParameters["query"] = query.ToString();
            }
            request.QueryParameters["mode"] = ((int)mode).ToString();
            if (sort != null)
            {
                request.QueryParameters["sort"] = sort;
            }

            if (this != Server.MainDatabase)
            {
                request.QueryParameters["srcdatabase"] = "0x" + PersistentID.ToString("x16");
            }

            // TODO: Handle this separately
            if (mode == PlayQueueMode.Replace)
            {
                request.QueryParameters["clear-previous"] = "1";
            }

            return(request);
        }
Esempio n. 2
0
        private PersistentID GetPlaylistPersistentID(string name)
        {
            IITPlaylist  playlist = itunes.LibrarySource.Playlists.get_ItemByName(name);
            PersistentID pid      = GetPersistentID(playlist);

            return(pid);
        }
Esempio n. 3
0
    // Use this for initialization
    protected virtual void Start()
    {
        //tarkista ja päivitä vihollisen tiedot pelin tallennuksessa
        baseHealthSystem = GetComponent <HealthSystem>();
        id       = GetComponent <PersistentID>();
        gameData = GameDataManager.Instance.GameData;

        if (!gameData.enemies.ContainsKey(id.id))
        {
            gameData.enemies[id.id] = new GameData.Enemy();
            enemyData         = gameData.enemies[id.id];
            enemyData.isAlive = true;
            if (baseHealthSystem != null)
            {
                enemyData.health = baseHealthSystem.currentHealth;
            }
        }
        else
        {
            enemyData = gameData.enemies[id.id];
            if (!enemyData.isAlive)
            {
                //Debug.Log("EnemyBase - "+id.id+" Not Alive");
                Destroy(gameObject);
            }
            else
            {
                if (baseHealthSystem != null)
                {
                    baseHealthSystem.currentHealth = enemyData.health;
                }
            }
        }
    }
Esempio n. 4
0
        public void DuplicateScannerInAlbum()
        {
            // for this test, create new 'ituner' playlist and add duplicate entries..

            DuplicateScanner scanner = new DuplicateScanner(controller, catalog);

            scanner.PlaylistFilter = PersistentID.Parse("612F0BCDC4E08C4E");
            scanner.Execute();
        }
Esempio n. 5
0
        private DACPRequest GetCueRequest(DACPQueryElement query, string sort)
        {
            DACPRequest request = new DACPRequest("/ctrl-int/1/cue");

            request.QueryParameters["command"] = "play";
            if (query != null)
            {
                request.QueryParameters["query"] = query.ToString();
            }
            request.QueryParameters["sort"]        = sort;
            request.QueryParameters["srcdatabase"] = "0x" + PersistentID.ToString("x16");
            request.QueryParameters["clear-first"] = "1";

            return(request);
        }
Esempio n. 6
0
        public void FindCatalogedTracksByPlaylist()
        {
            // FlatCatalog

            ICatalog catalog = new FlatCatalog();

            catalog.Initialize(libraryXMLPath);
            Console.WriteLine(String.Format("new FlatCatalog() -> {0} ms", watch.GetSplitMilliseconds()));

            var tracks = new List <IITTrack>();

            PersistentID           pid           = GetPlaylistPersistentID("ituner");
            PersistentIDCollection persistentIDs = catalog.FindTracksByPlaylist(pid);

            foreach (PersistentID persistentID in persistentIDs)
            {
                IITTrack itrack = itunes.LibraryPlaylist.Tracks.get_ItemByPersistentID(
                    persistentID.HighBits, persistentID.LowBits);

                tracks.Add(itrack);
            }

            Console.WriteLine(String.Format("FindTracksByPlaylist -> {0} ms", watch.GetSplitMilliseconds()));

            Assert.IsNotNull(persistentIDs);
            Assert.AreNotEqual(0, persistentIDs.Count);
            Console.WriteLine(String.Format("Found {0} tracks", persistentIDs.Count));

            watch.Stop();
            Console.WriteLine(String.Format("Completed in {0} ms", watch.GetElapsedMilliseconds()));

            // iTunes

            watch.Reset();
            watch.Start();

            IITTrackCollection itracks =
                itunes.LibrarySource.Playlists.get_ItemByName("ituner").Tracks;

            Console.WriteLine(String.Format("get_ItemByName -> {0} ms", watch.GetSplitMilliseconds()));

            watch.Stop();
            Console.WriteLine(String.Format("Completed in {0} ms", watch.GetElapsedMilliseconds()));
        }
Esempio n. 7
0
    // Use this for initialization
    void Start()
    {
        anim            = flag.GetComponent <Animator>();
        id              = GetComponent <PersistentID>();
        activationSound = GetComponent <AudioSource>();
        spawnPoint      = transform.Find("SpawnPoint").gameObject;
        activated       = false;
        //tarkista ja päivitä checkpointin tiedot pelin tallennuksessa
        GameData data = GameDataManager.Instance.GameData;

        if (!data.checkPoints.ContainsKey(id.id))
        {
            data.checkPoints[id.id] = new GameData.CheckPoint();
        }
        else
        {
            if (data.checkPoints[id.id].activated)
            {
                Debug.Log("CheckPoint - " + id.id + " already activated");
                activated = true;
                anim.SetBool("Raised", true);
            }
        }
    }
Esempio n. 8
0
        private DacpRequest GetPlaySpecRequest()
        {
            DacpRequest request = new DacpRequest("/ctrl-int/1/playspec");

            request.QueryParameters["database-spec"]  = DacpQueryPredicate.Is("dmap.persistentid", "0x" + Database.PersistentID.ToString("x16")).ToString();
            request.QueryParameters["container-spec"] = DacpQueryPredicate.Is("dmap.persistentid", "0x" + PersistentID.ToString("x16")).ToString();

            return(request);
        }
Esempio n. 9
0
        //----------------------------------------------------------------------------------------

        /// <summary>
        /// Invoked when the Sync button is pressed, starts the synchronization process.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        private void DoSync(object sender, RoutedEventArgs e)
        {
            string text = String.Format(Resx.SyncWarningText, selector.Location);

            MessageBoxResult result = MessageWindow.Show(
                null, text, Resx.SyncWarningCaption,
                MessageBoxButton.OKCancel, MessageWindowImage.Warning, MessageBoxResult.Cancel);

            if (result != MessageBoxResult.OK)
            {
                e.Handled = true;
                return;
            }

            countBox.Visibility      = Visibility.Hidden;
            playlistBox.IsEnabled    = false;
            selector.IsEnabled       = false;
            syncButton.Visibility    = Visibility.Collapsed;
            progressPanel.Visibility = Visibility.Visible;

            string format       = PathHelper.GetPathFormat(selector.FormatTag);
            bool   withPlaylist = format.Contains("playlist");

            var list = new PersistentIDCollection();

            using (var selectedPlaylists = new PlaylistCollection())
            {
                selectedPlaylists.AddRange(playlists.FindAll(p => p.IsSelected == true));

                foreach (Playlist playlist in selectedPlaylists.Values)
                {
                    if (playlist != null)
                    {
                        PersistentID pid = playlist.PersistentID;

                        PersistentIDCollection tracks =
                            controller.Librarian.Catalog.FindTracksByPlaylist(pid);

                        if (withPlaylist)
                        {
                            // Cannot modify a value type (PersistentID) from within a foreach loop
                            // or the .ForEach extension method, so we need to recreate each pid
                            // to set the playlist name.  Unfortunate design consequence...
                            foreach (PersistentID track in tracks)
                            {
                                PersistentID tid = track;
                                tid.PlaylistName = playlist.Name;
                                list.Add(tid);
                            }
                        }
                        else
                        {
                            list.AddRange(tracks);
                        }
                    }
                }
            }

            // show iTunes incase a protection fault occurs; otherwise you cannot see the
            // dialog if iTunes is minimized as a Taskbar toolbar
            controller.ShowiTunes();

            controller.Librarian.ProgressChanged += new ProgressChangedEventHandler(DoProgressChanged);
            controller.Librarian.Export(list, selector.Location, format);
        }
Esempio n. 10
0
        public void FlatTerseComparisons()
        {
            // create two playlists, both name "Ben" and use this to test that we can
            // find the extensions in the first one

            ICatalog flat = new FlatCatalog();

            flat.Initialize(libraryXMLPath);

            ICatalog terse = new TerseCatalog();

            terse.Initialize(libraryXMLPath);

            PersistentID pid = GetPlaylistPersistentID("Ben");

            // FindExtensionsByPlaylist()

            StringCollection flatExtensions = flat.FindExtensionsByPlaylist(pid);

            Assert.IsNotNull(flatExtensions);
            Assert.AreNotEqual(0, flatExtensions.Count);

            StringCollection terseExtensions = terse.FindExtensionsByPlaylist(pid);

            Assert.IsNotNull(terseExtensions);
            Assert.AreNotEqual(0, terseExtensions.Count);

            Assert.AreEqual(flatExtensions.Count, terseExtensions.Count);

            foreach (string ext in terseExtensions)
            {
                Assert.IsTrue(flatExtensions.Contains(ext));
            }

            Console.WriteLine("FindExtensionsByPlaylist() OK");

            // FindPlaylistName()

            string name = flat.FindPlaylistName(pid);

            Assert.AreEqual("Ben", name);

            name = terse.FindPlaylistName(pid);
            Assert.AreEqual("Ben", name);

            Console.WriteLine("FindPlaylistName() OK");

            // FindTracksByAlbum()

            PersistentIDCollection flatTracks =
                flat.FindTracksByAlbum("Greatest Hits", "Alice Cooper");

            Assert.IsNotNull(flatTracks);
            Assert.AreNotEqual(0, flatTracks.Count);

            PersistentIDCollection terseTracks =
                terse.FindTracksByAlbum("Greatest Hits", "Alice Cooper");

            Assert.IsNotNull(terseTracks);
            Assert.AreNotEqual(0, terseTracks.Count);

            Assert.AreEqual(flatTracks.Count, terseTracks.Count);

            foreach (PersistentID id in terseTracks)
            {
                Assert.IsTrue(flatTracks.Contains(id));
            }

            Console.WriteLine("FindTracksByAlbum() OK");

            // FindTracksByArtist()

            flatTracks = flat.FindTracksByArtist("Alice Cooper");
            Assert.IsNotNull(flatTracks);
            Assert.AreNotEqual(0, flatTracks.Count);

            terseTracks = terse.FindTracksByArtist("Alice Cooper");
            Assert.IsNotNull(terseTracks);
            Assert.AreNotEqual(0, terseTracks.Count);

            Assert.AreEqual(flatTracks.Count, terseTracks.Count);

            foreach (PersistentID id in terseTracks)
            {
                Assert.IsTrue(flatTracks.Contains(id));
            }

            Console.WriteLine("FindTracksByArtist() OK");

            // FindTracksByPlaylist()

            pid = GetPlaylistPersistentID("My Top Rated");

            flatTracks = flat.FindTracksByPlaylist(pid);
            Assert.IsNotNull(flatTracks);
            Assert.AreNotEqual(0, flatTracks.Count);

            terseTracks = terse.FindTracksByPlaylist(pid);
            Assert.IsNotNull(terseTracks);
            Assert.AreNotEqual(0, terseTracks.Count);

            Assert.AreEqual(flatTracks.Count, terseTracks.Count);

            foreach (PersistentID id in terseTracks)
            {
                Assert.IsTrue(flatTracks.Contains(id));
            }

            Console.WriteLine("FindTracksByPlaylist() OK");
        }
Esempio n. 11
0
        public void ReloadPlaylist()
        {
            // 46CD262697DA37D9 == Classical Music
            PersistentID persistentID = PersistentID.Parse("46CD262697DA37D9");

            XElement playlist = null;

            try
            {
                using (Stream stream = File.Open(libraryXMLPath,
                                                 FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                {
                    var settings = new XmlReaderSettings();
                    settings.IgnoreComments = true;
                    settings.IgnoreProcessingInstructions = true;
                    settings.IgnoreWhitespace             = true;
                    settings.DtdProcessing = DtdProcessing.Ignore;

                    using (var reader = XmlReader.Create(stream, settings))
                    {
                        // read into //plist/dict and stop at the first ./array
                        // this is the playlists collection

                        if (reader.ReadToDescendant("array"))
                        {
                            // by using this subreader and pumping the stream through
                            // XElement.ReadFrom, we should avoid the Large Object Heap

                            using (var subreader = reader.ReadSubtree())
                            {
                                playlist = XElement.ReadFrom(subreader) as XElement;
                            }
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                Debug.WriteLine(exc.Message);
                return;
            }

            if (playlist != null)
            {
                XElement target =
                    (from node in playlist
                     .Elements("dict")
                     .Elements("key")
                     where node.Value == "Playlist Persistent ID" &&
                     ((XElement)node.NextNode).Value == (string)persistentID
                     select node.Parent).FirstOrDefault();

                if (target != null)
                {
                    var list =
                        from node in target
                        .Elements("array")
                        .Elements("dict")
                        .Elements("integer")
                        select node.Value;
                }
            }
        }
Esempio n. 12
0
        public void PeruseLibrary()
        {
            var controller = new Controller();

            System.Threading.Thread.Sleep(5000);

            var playlist  = controller.LibraryPlaylist;
            var librarian = controller.Librarian;
            var catalog   = librarian.Catalog;
            var tagger    = new Tagger();

            // search the library...

            var extensions = catalog.FindExtensionsByPlaylist(controller.LibraryPlaylist.PersistentID);

            var filepaths =
                from e in Directory.EnumerateFiles(catalog.MusicPath, "*", SearchOption.AllDirectories)
                where extensions.Contains(Path.GetExtension(e))
                select e;

            Logger.WriteLine(String.Format("Found {0} possible tracks to analyze", filepaths.Count()));

            var random       = new Random();
            int maxIndex     = filepaths.Count() - 1;
            int numFound     = 0;
            int numFailed    = 0;
            int numRetrieved = 0;
            int numSimilar   = 0;

#if true
            for (int index = 0; index < maxIndex; index++)
#else
            for (int index = 0; index < Math.Min(20, maxIndex); index++)
#endif
            {
                var trackFile = new TrackFile(filepaths.ElementAt(random.Next(maxIndex)));

                Logger.WriteLine();
                Logger.WriteLine(String.Format("Reading tags from [{0}]", trackFile.Location));

                using (TagLib.File tagFile = TagLib.File.Create(trackFile.Location))
                {
                    if (tagFile != null)
                    {
                        trackFile.Album  = tagFile.Tag.Album;
                        trackFile.Artist = tagFile.Tag.FirstAlbumArtist;
                        trackFile.Title  = tagFile.Tag.Title;
                        Logger.WriteLine(String.Format(" - Tag.Album  = [{0}]", tagFile.Tag.Album));
                        Logger.WriteLine(String.Format(" - Tag.Artist = [{0}]", tagFile.Tag.FirstAlbumArtist));
                        Logger.WriteLine(String.Format(" - Tag.Title  = [{0}]", tagFile.Tag.Title));
                    }
                }

                if (String.IsNullOrEmpty(trackFile.Title) ||
                    (String.IsNullOrEmpty(trackFile.Album) && String.IsNullOrEmpty(trackFile.Artist)))
                {
                    Logger.WriteLine(String.Format(" . Retrieving tags for PUID [{0}]", trackFile.UniqueID));
                    tagger.RetrieveTags(trackFile);
                    numRetrieved++;
                }

                bool found = false;

                // can we find the track by artist/album/title?

                PersistentID pid = catalog.FindTrack(
                    trackFile.Album, trackFile.Artist, trackFile.Title);

                if (found = !pid.IsEmpty)
                {
                    Track track = playlist.GetTrack(pid);

                    if (!track.Artist.Equals(trackFile.Artist))
                    {
                        Logger.WriteLine(String.Format(
                                             " ~ Similar track '{0}', '{1}', '{2}'",
                                             track.Artist, track.Album, track.Title));
                        numSimilar++;
                    }
                    else
                    {
                        Logger.WriteLine(String.Format(
                                             " = Found track '{0}', '{1}', '{2}'",
                                             track.Artist, track.Album, track.Title));
                    }

                    numFound++;
                }

                if (!found)
                {
                    numFailed++;
                    Logger.WriteLine(String.Format(
                                         " x Could not find track '{0}', '{1}', '{2}'",
                                         trackFile.Artist, trackFile.Album, trackFile.Title));
                }
            }

            Logger.WriteLine();
            Logger.WriteLine(String.Format("... {0} found", numFound));
            Logger.WriteLine(String.Format("... {0} not found", numFailed));
            Logger.WriteLine(String.Format("... {0} similar", numSimilar));
            Logger.WriteLine(String.Format("... {0} retrieved", numRetrieved));
        }
Esempio n. 13
0
    static void UpdateIDs()
    {
        int numCheckedIDs = 0;
        int numUpdatedIDs = 0;
        IDictionary <int, int> duplicateIDCounts = new Dictionary <int, int>();
        IList <PersistentID>   idObjects         = new List <PersistentID>();

        //etsi kaikki scenen GameObjecteissa olevat PersistentID-komponentit, myös epäaktiivisista GameObjecteista
        GameObject[] gameObjects = Resources.FindObjectsOfTypeAll <GameObject>();
        foreach (GameObject obj in gameObjects)
        {
            //jätä objekti pois listalta jos se on prefab-originaali (ei scenessä)
            if (PrefabUtility.GetPrefabParent(obj) == null && PrefabUtility.GetPrefabObject(obj) != null)
            {
                continue;
            }

            PersistentID idObj = obj.GetComponent <PersistentID>();
            if (idObj != null)
            {
                idObjects.Add(idObj);
            }
        }
        //tarkista, onko id-arvoissa duplikaatteja ja anna virheilmoitus, mikäli on
        foreach (PersistentID id in idObjects)
        {
            if (id.id > 0)
            {
                if (duplicateIDCounts.ContainsKey(id.id))
                {
                    duplicateIDCounts[id.id]++;
                }
                else
                {
                    duplicateIDCounts.Add(id.id, 0);
                }
            }
        }
        foreach (int id in duplicateIDCounts.Keys)
        {
            int dupcount = duplicateIDCounts[id];
            if (dupcount > 0)
            {
                Debug.LogError("IDUpdater - " + dupcount + " duplicate IDs for ID " + id);
            }
        }
        //etsi suurin olemassa oleva ID:n arvo, uudet arvot ovat tätä seuraavasta arvosta alkaen
        int maxId = 0;

        foreach (PersistentID id in idObjects)
        {
            if (id.id > maxId)
            {
                maxId = id.id;
            }
        }
        //aseta ID:t kaikille ID-objekteille, joilta puuttuu arvo
        foreach (PersistentID id in idObjects)
        {
            if (id.id < 0) //negatiivinen id on oletusarvo, joka tarkoittaa että ID:tä ei ole asetettu
            {
                int newId = maxId + 1;
                maxId = newId;
                //id pitää asettaa näin, jotta uusi arvo säilyy play modeen siirtymisen jälkeen
                SerializedObject obj = new SerializedObject(id);
                obj.FindProperty("id").intValue = newId;
                obj.ApplyModifiedProperties();
                numUpdatedIDs++;
            }
        }
        numCheckedIDs = idObjects.Count;
        Debug.Log("IDUpdater:\n" + "Checked " + numCheckedIDs + " IDs\n" + "Updated " + numUpdatedIDs + " IDs");
    }