private static string[] FileExtension(SearchType flags) { List <string> extensions = new List <string>(4); if (flags.HasFlag(SearchType.Prefab)) { extensions.Add("prefab"); } if (flags.HasFlag(SearchType.Scene)) { extensions.Add("unity"); } if (flags.HasFlag(SearchType.Script)) { extensions.Add("cs"); } if (flags.HasFlag(SearchType.Asset)) { extensions.Add("asset"); } if (flags.HasFlag(SearchType.Material)) { extensions.Add("mat"); } return(extensions.ToArray()); }
/// <inheritdoc /> public async Task <IList <object> > Search( string query, SearchType searchTypes = SearchType.Album | SearchType.Artist | SearchType.Playlist | SearchType.Track, string market = "", int offset = 0, int resultLimit = 100) { var searchTypeString = "&type="; if (searchTypes.HasFlag(SearchType.Album)) { searchTypeString += "album,"; } if (searchTypes.HasFlag(SearchType.Artist)) { searchTypeString += "artist,"; } if (searchTypes.HasFlag(SearchType.Playlist)) { searchTypeString += "playlist,"; } if (searchTypes.HasFlag(SearchType.Track)) { searchTypeString += "track,"; } searchTypeString = searchTypeString.Remove(searchTypeString.Length - 1); var r = await ApiClient.GetAsync <SearchResult>( MakeUri($"search?q={query}{searchTypeString}&offset={offset}{AddMarketCode("&", market)}"), this.Token); if (r.Response is SearchResult res) { var result = new List <object>(); try { var artists = res.Artists.LoadToList(this.Token); var albums = res.Albums.LoadToList(this.Token); var playlists = res.Playlists.LoadToList(this.Token); var tracks = res.Tracks.LoadToList(this.Token); // Await all tasks finished... await Task.WhenAll(artists, albums, playlists, tracks); result.AddRange(artists.Result); result.AddRange(albums.Result); result.AddRange(playlists.Result); result.AddRange(tracks.Result); } catch (Exception e) { Console.WriteLine(e); } return(result); } return(new List <object>()); }
/// <inheritdoc /> public async Task <SearchResult> Search( string query, SearchType searchTypes, string market, int offset, int resultLimit) { var searchTypeString = string.Empty; if (searchTypes.HasFlag(SearchType.Album)) { searchTypeString += "album,"; } if (searchTypes.HasFlag(SearchType.Artist)) { searchTypeString += "artist,"; } if (searchTypes.HasFlag(SearchType.Playlist)) { searchTypeString += "playlist,"; } if (searchTypes.HasFlag(SearchType.Track)) { searchTypeString += "track,"; } var r = await ApiClient.GetAsync <ApiSearchResult>( MakeUri( "search", ("q", query.Replace(' ', '+')), ("type", searchTypeString.Remove(searchTypeString.Length - 1)), ("offset", offset.ToString()), ("market", market)), this.Token); if (r.Response is ApiSearchResult res) { var result = new SearchResult { Albums = res.Albums.Items, Playlists = res.Playlists.Items, Tracks = res.Tracks.Items, Artists = res.Artists.Items }; return(result); } return(new SearchResult()); }
public Searcher(Object subject, SearchType type) { this.Subject = subject; this.SearchType = type; this.Name = subject?.name; //If we are a MonoBehaviour or a ScriptableObject, we want to get hte base script if (Subject is MonoBehaviour monoBehaviour) { Subject = MonoScript.FromMonoBehaviour(monoBehaviour); } else if (Subject is ScriptableObject scriptableObject) { Subject = MonoScript.FromScriptableObject(scriptableObject); } //If the subject is a MonoScript and we have the search script if (type.HasFlag(SearchType.Script) && Subject is MonoScript) { _analyticEnumerator = AnalyticSearch.FindReferencesEnumerator(Subject, _analyticResults); } //If we are searching assets if (type != SearchType.None) { _assetEnumerator = AssetSearch.FindAssetsEnumerator(Subject, type, _assetResults); } //Update our asset path this.AssetPath = AssetDatabase.GetAssetPath(Subject); }
private string GetTypes(SearchType type) { var types = new List <string>(); if (type.HasFlag(SearchType.Artist)) { types.Add("artist"); } if (type.HasFlag(SearchType.Album)) { types.Add("album"); } if (type.HasFlag(SearchType.Playlist)) { types.Add("playlist"); } if (type.HasFlag(SearchType.Track)) { types.Add("track"); } return(string.Join(",", types)); }
public static string GetSearchValue(this SearchType en, String separator) { IEnumerable <StringAttribute> attributes = Enum.GetValues(typeof(SearchType)) .Cast <SearchType>() .Where(v => en.HasFlag(v)) .Select(v => typeof(SearchType).GetRuntimeField(v.ToString())) .Select(f => f.GetCustomAttributes(typeof(StringAttribute), false).FirstOrDefault()) .Cast <StringAttribute>(); var list = attributes.Select(x => x.Text).ToList(); return(string.Join(separator, list)); }
public static string GetSearchValue(this SearchType en, String separator) { IEnumerable <StringAttribute> attributes = Enum.GetValues(typeof(SearchType)) .Cast <SearchType>() .Where(v => en.HasFlag(v)) .Select(v => typeof(SearchType).GetField(v.ToString())) .Select(f => f.GetCustomAttributes(typeof(StringAttribute), false)[0]) .Cast <StringAttribute>(); List <String> list = new List <String>(); attributes.ToList().ForEach((element) => list.Add(element.Text)); return(string.Join(" ", list)); }
/// <summary> /// Finds all assets of the type. /// </summary> /// <param name="asset"></param> /// <param name="filter"></param> /// <returns></returns> private static IEnumerable <AssetResult> FindAssets(SearchType filter) { var assetPaths = AssetDatabase.GetAllAssetPaths(); foreach (var path in assetPaths) { //Validate its folder if (!path.StartsWith("Assets/")) { continue; } //Validate its search string extension = Path.GetExtension(path); if (extension.Length <= 1) { continue; } extension = extension.Substring(1); //Get the type SearchType searchType; switch (extension) { default: searchType = SearchType.Files; break; case "mat": searchType = SearchType.Material; break; case "prefab": searchType = SearchType.Prefab; break; case "unity": searchType = SearchType.Scene; break; case "cs": searchType = SearchType.Script; break; case "asset": searchType = SearchType.Asset; break; } //validate the type if (!filter.HasFlag(SearchType.Files) && !filter.HasFlag(searchType)) { continue; } //Dont load textures, sound or lighting var assetType = AssetDatabase.GetMainAssetTypeAtPath(path); //return scene switch (searchType) { default: yield return(new AssetResult() { assetPath = path, assetType = assetType, searchableType = searchType }); break; //Return scene case SearchType.Scene: yield return(new SceneResult() { assetPath = path, assetType = assetType, searchableType = searchType }); break; //Return prefab case SearchType.Prefab: yield return(new PrefabResult() { assetPath = path, assetType = assetType, searchableType = searchType }); break; //Return Script case SearchType.Script: yield return(new ScriptResult() { assetPath = path, assetType = assetType, searchableType = searchType }); break; } } }