public SearchResult(ArtistModel model) { Id = model.Id; Name = string.Format("{0}, {1}", model.LastName, model.FirstName); Bio = model.Biography; Type = SearchResultType.Artist.ToString(); }
private void UpdateArtistsTreeView(Task<Indexes> task) { switch (task.Status) { case TaskStatus.RanToCompletion: Dispatcher.Invoke(() => { ArtistItems.Clear(); if (task.Result == null || task.Result.Items == null) return; foreach (Index index in task.Result.Items) { var artistItem = new ArtistModel { Name = index.Name }; foreach (Artist artist in index.Artists) artistItem.Children.Add(new ArtistModel { Name = artist.Name, Artist = artist }); ArtistItems.Add(artistItem); } }); break; } }
public IHttpActionResult Get(int id) { var artist = this.data.Artists.Get(id); if (artist == null) { return(NotFound()); } var artistModel = ArtistModel.FromArtist(artist); return(Ok(artistModel)); }
public IEnumerable <ArtistModel> GetAll() { var entities = this.artistRepository.GetAll(); List <ArtistModel> models = new List <ArtistModel>(); foreach (var entity in entities) { models.Add(ArtistModel.CreateFromArtistEntity(entity)); } return(models); }
public async Task <ServiceResult> Update(ArtistModel model) { var serviceResult = new ServiceResult(); var result = await _artistRepository.Update(model); serviceResult.Success = result.Success; if (!result.Success) { serviceResult.Error.Code = ErrorStatusCode.BudRequest; serviceResult.Error.Description = result.Message; } return(serviceResult); }
private void OnToArtist(object sender, RoutedEventArgs e) { if (!(TracksDataGrid.SelectedItem is ITrack track)) { return; } var artist = new ArtistModel(track.Artist) { Id = track.ArtistId }; ToArtist?.Invoke(this, new ArtistEventArgs(artist)); }
/// <summary> /// This function is responsable for extracting the Artist model from SpotifyArtistsSearchResult /// I'm not using the Automapper here as this logic is more related to the Spotify client /// </summary> public List <ArtistModel> GetArtistsNamesList() { List <ArtistModel> artists = new List <ArtistModel>(); foreach (var artist in SpotifyArtistsSearchResult.Items) { ArtistModel ar = new ArtistModel(); ar.Id = artist.Id; ar.Name = artist.Name; artists.Add(ar); } return(artists); }
public void DeleteAlbumArtists(List <ArtistModel> artists) { ArtistModel beforeArtist = new ArtistModel(); foreach (var artist in artists) { if (artist != beforeArtist) { _context.Artists.Remove(artist); } beforeArtist = artist; } }
// GET api/Artists/5 public ArtistModel GetArtist(int id) { ArtistModel artist = repository.All() .Where(x => x.ArtistId == id) .Select(ArtistModel.FromArtist).FirstOrDefault(); if (artist == null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound)); } return(artist); }
public AjaxResponseModel Update(ArtistModel model, string userId) { var resultModel = new AjaxResponseModel(); try { var artist = _context.MstArtists.Include(x => x.ArtistDepartments) .FirstOrDefault(x => x.Cd == model.Cd); if (artist != null) { artist.Code = model.Code.Trim(); artist.Name = model.Name.Trim(); artist.ItemName = model.ItemName.Trim(); artist.CategoryName = model.NameCategory.Trim(); artist.NameKana = model.NameKana.Trim(); artist.IsFavorited = model.IsFavorited; artist.UpdateDate = DateTime.Now; artist.UpdateUserId = userId; Update(artist); if (artist.ArtistDepartments != null) { // remove department of artist _context.ArtistDepartments.RemoveRange(artist.ArtistDepartments); // add department agian for artist List <ArtistDepartment> result = AddNewArtistDepartments(model, model.Cd); _context.ArtistDepartments.AddRange(result); } _context.SaveChanges(); resultModel.Status = true; resultModel.Message = "編集に成功しました。"; return(resultModel); } resultModel.Status = false; resultModel.Message = "作家が見つかりません。"; return(resultModel); } catch (Exception) { resultModel.Status = false; resultModel.Message = "作家の編集に失敗しました。"; return(resultModel); } }
public async Task <IActionResult> Create([Bind("Name,Description,FullName,Order,Active,IconUrl,ImageUrl,ThumbUrl")] ArtistModel artistModel, IFormFile IconUrlFile, IFormFile ImageUrlFile, IFormFile ThumbUrlFile) { //check the model is valid if (ModelState.IsValid) { artistModel.Active = true; artistModel.CreationTime = DateTime.UtcNow; artistModel.Guid = Guid.NewGuid().ToString(); #region Upload File to azure storage List <IFormFile> allFiles = new List <IFormFile> { IconUrlFile, ImageUrlFile, ThumbUrlFile }; foreach (IFormFile file in allFiles) { if (file == null) { continue; } //create file class to use uploading files AzureBlobFile azureBlobFile = new AzureBlobFile(Enums.InterfaceFileTypes.Artist, file, await file.GetBytes(), artistModel.Name, string.Empty, Configuration.GetConnectionString("AccessKey"), Configuration.GetConnectionString("ContainerName")); //create azure storace service BlobStorageService objBlobService = new BlobStorageService(azureBlobFile.AccessKey, azureBlobFile.ContainerName); //upload file to azure storage string uploadedFileName = objBlobService.UploadFileToBlob(azureBlobFile); //Set azure storage file nime into the model property Helper.Helper.UpdateProperty(artistModel, azureBlobFile.PropertyName, uploadedFileName); } #endregion _context.Add(artistModel); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(artistModel)); }
public IHttpActionResult AddArtist(ArtistModel _model) { Artist newArtist = new Artist() { artistId = _model.artistId, name = _model.name, surname = _model.surname, contact = _model.contact }; db.Artist.Add(newArtist); db.SaveChanges(); return(Ok()); }
public List <ArtistModel> GetTrimedArtists(string artists) { string[] styTab = artists.Split(","); var artList = new List <ArtistModel>(); for (int i = 0; i < styTab.Length; i++) { var ar = new ArtistModel(); ar.Name = styTab[i].Trim(); artList.Add(ar); } return(artList); }
public async Task Save_ForMultipleSongsWhenNewArtistIsCreated_UpdatesSongCorrectly() { // Arrange var oldArtist = new ArtistModel { Id = new ItemId("1"), Name = "Old Artist" }; var mocker = CreateMocker(artists: new[] { oldArtist }, genres: Array.Empty <GenreModel>()); var target = mocker.CreateInstance <EditSongPropertiesViewModel>(); var song1 = new SongModel { Id = new ItemId("1"), Artist = oldArtist, }; var song2 = new SongModel { Id = new ItemId("2"), Artist = oldArtist, }; await target.Load(new[] { song1, song2, }, CancellationToken.None); // Act target.Artist = null; target.NewArtistName = "New Artist"; await target.Save(CancellationToken.None); // Assert var artistServiceMock = mocker.GetMock <IArtistsService>(); Func <ArtistModel, bool> checkArtist = x => x.Name == "New Artist"; artistServiceMock.Verify(x => x.CreateArtist(It.Is <ArtistModel>(y => checkArtist(y)), It.IsAny <CancellationToken>()), Times.Once); Func <SongModel, Action <SongModel>, bool> verifySongUpdate = (song, updateAction) => { updateAction(song); return(song.Artist.Name == "New Artist"); }; var songServiceMock = mocker.GetMock <ISongsService>(); songServiceMock.Verify(x => x.UpdateSong(It.IsAny <SongModel>(), It.IsAny <Action <SongModel> >(), It.IsAny <CancellationToken>()), Times.Exactly(2)); songServiceMock.Verify(x => x.UpdateSong(song1, It.Is <Action <SongModel> >(y => verifySongUpdate(song1, y)), It.IsAny <CancellationToken>()), Times.Once); songServiceMock.Verify(x => x.UpdateSong(song2, It.Is <Action <SongModel> >(y => verifySongUpdate(song2, y)), It.IsAny <CancellationToken>()), Times.Once); }
public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state) { uint id = 0; if (!uint.TryParse(parameter.ToString(), out id)) { NavigationService.Navigate(typeof(Views.LibraryPage)); } Artist = ArtistModel.GetNew(id); if (Artist.Profile == null) { await Net.WebApi.Instance.GetArtistInfo(Artist); } }
//get artistID public int GetArtistID(ArtistModel thisArtist) { int newArtistID; DbCommand get_Artist = db.GetStoredProcCommand("get_Artist"); db.AddInParameter(get_Artist, "artistName", DbType.String, thisArtist.artistName); db.AddOutParameter(get_Artist, "artistID", DbType.Int32, sizeof(int)); db.ExecuteScalar(get_Artist); newArtistID = (Int32)db.GetParameterValue(get_Artist, "@artistID"); return(Convert.ToInt32(newArtistID)); }
public MainWindow() { var connStr = ConnectionFactory.GetConnectionString(); Artists = Data.Collection.GetArtists(connStr); var artist = new ArtistModel() { ArtistId = 1, Name = "New Artists" }; Artists.Add(artist); InitializeComponent(); }
public IAsyncAction GetArtistInfo(ArtistModel artist, bool cover = false) { //TODO: 艺人专辑http://www.xiami.com/app/xiating/artist-album2?id= 相似艺人http://www.xiami.com/app/xiating/artist-similar?id= //TODO: 艺人专辑、艺人歌曲列表都采用增量加载 if (artist.XiamiID == 0) { throw new ArgumentException("ArtistModel未设置ID"); } return(Run(async token => { try { LogService.DebugWrite($"Get info of Artist {artist.XiamiID}", nameof(WapApi)); var gettask = HttpHelper.GetAsync($"http://www.xiami.com/app/xiating/artist?id={artist.XiamiID}"); token.Register(() => gettask.Cancel()); var content = await gettask; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(content); var body = doc.DocumentNode.SelectSingleNode("//div[@id='artist']"); artist.Name = body.SelectSingleNode(".//h2").InnerText; artist.AliasName = body.SelectSingleNode(".//p").InnerText; var area = body.SelectSingleNode(".//p[2]"); if (area != null) { artist.Name = area.InnerText.Remove(0, 3); } if (artist.Art.Host == "") { var art = body.SelectSingleNode(".//img").GetAttributeValue("src", AlbumModel.SmallDefaultUri); artist.Art = new Uri(art); artist.ArtFull = new Uri(art.Replace("_1", "")); } var songlist = ParseArtistSongs(body.SelectSingleNode(".//ul[@class='playlist']")).ToArray();//只计算一次count artist.HotSongs = new PageItemsCollection <SongModel>(songlist, (pageindex, c) => GetArtistSongsPage(artist.XiamiID, pageindex, c)); artist.Albums = new PageItemsCollection <AlbumModel>(16, (pageindex, c) => GetArtistAlbumPage(artist.XiamiID, pageindex, c)); LogService.DebugWrite($"Finish Getting info of Artist {artist.XiamiID}", nameof(WapApi)); } catch (Exception e) { LogService.ErrorWrite(e, nameof(WapApi)); throw e; } })); }
public IHttpActionResult Add(ArtistModel artist) { if (!this.ModelState.IsValid) { return(BadRequest(ModelState)); } Artist artistToAdd = Mapper.Map <ArtistModel, Artist>(artist); this.Db.Artists.Add(artistToAdd); this.Db.SaveChanges(); artist.Id = artistToAdd.Id; return(Ok(artistToAdd)); }
public IHttpActionResult Post(ArtistModel model) { if (!this.ModelState.IsValid) { return(this.BadRequest("Invalid Artist data.")); } var newArtist = Mapper.Map <Artist>(model); this.data.Artists.Add(newArtist); this.data.SaveChanges(); return(this.Ok()); }
internal void Edit(Guid id, string title, ArtistModel artist, StyleModel style, int year, string description, string type, float price, bool availability) { var item = _dbContext.Artworks.First(x => x.Id == id); item.Title = title; item.Artist = artist; item.Style = style; item.Year = year; item.Description = description; item.Type = type; item.Price = price; item.Availability = availability; _dbContext.SaveChanges(); }
public IHttpActionResult Add(ArtistModel artistModel) { if (!this.ModelState.IsValid) { return(BadRequest(ModelState)); } var newAtist = ArtistModel.ToArtist(artistModel); this.data.Artists.Add(newAtist); this.data.SaveChanges(); artistModel.ID = newAtist.ID; return(Ok(artistModel)); }
public IHttpActionResult Add(ArtistModel artistModel) { if (!this.ModelState.IsValid) { return BadRequest(ModelState); } var newAtist = ArtistModel.ToArtist(artistModel); this.data.Artists.Add(newAtist); this.data.SaveChanges(); artistModel.ID = newAtist.ID; return Ok(artistModel); }
public void ChangeDB(EFContext context, JObject jsonFile, List <int> ids) { if (ids.Count != 2) { if (Successor != null) { Successor.ChangeDB(context, jsonFile, ids); } } else { try { foreach (var a in jsonFile["artists"]) { var artist = new ArtistModel() { Name = a["name"].ToString(), Album = new AlbumModel() }; artist.Album.ID = ids[1]; context.Artists.Add(artist); context.SaveChanges(); if (Successor != null) { Successor.ChangeDB(context, jsonFile, ids); } } } catch (Exception) { var artist = new ArtistModel() { Name = "no data", Album = new AlbumModel() }; artist.Album.ID = ids[1]; context.Artists.Add(artist); context.SaveChanges(); if (Successor != null) { Successor.ChangeDB(context, jsonFile, ids); } } } }
public IHttpActionResult Post([FromBody] ArtistModel artist) { if (!this.ModelState.IsValid) { return(this.BadRequest(this.ModelState)); } else { var result = Mapper.Map <Artist>(artist); this.artists.Add(result); this.artists.SaveChanges(); return(this.Created(this.Url.ToString(), result)); } }
public IHttpActionResult Delete(int id) { var existingArtist = this.data.Artists.Get(id); if (existingArtist == null) { return(BadRequest(BabRequestMessage)); } var artistModel = ArtistModel.FromArtist(existingArtist); this.data.Artists.Delete(existingArtist); this.data.SaveChanges(); return(Ok(artistModel)); }
public static ArtistModel ToArtistModel(Artist artist) { if (artist == null) { return(null); } var artistModel = new ArtistModel { Id = artist.Id, Name = artist.Name, Description = artist.Description }; return(artistModel); }
public ArtistListViewModel(TypeListEnum type, string filter = "All") { ArtistStatuses = DataAccess.GetStatusList(); ArtistScores = DataAccess.GetScoreList(); TypeList = type; ArtistList = DataAccess.GetArtistList(TypeList, filter); FirstLetterFilterList = Enumerable.Range('A', 26).Select(x => (char)x).Select(c => c.ToString()).ToList(); FirstLetterFilterList.Insert(0, "All"); FirstLetterFilterList.Add("0-9"); FirstLetterFilterList.Add("*"); ArtistSelected = new ArtistModel(); UpdateArtistUpToDateCommand = new RelayCommand(UpdateArtistUpToDate, param => canExecute); FirstLetterFilterCommand = new RelayCommand(FirstLetterFilter, param => canExecute); }
public static Artist ToArtist(ArtistModel artistModel) { if (artistModel == null) { return(null); } var artist = new Artist { Id = artistModel.Id, Name = artistModel.Name, Description = artistModel.Description }; return(artist); }
public async Task <ArtistModel> UpdateArtistAsync(ArtistModel artist) { var a = _mapper.Map <Artist>(artist); a = _unitOfWork.Artists.Update(a); await _unitOfWork.CommitAsync(); var f = new List <Expression <Func <Artist, bool> > >() { (x => x.ArtistId == a.ArtistId) }; a = await _unitOfWork.Artists.GetOneAsync(f, null, false); return(_mapper.Map <ArtistModel>(a)); }
/// <summary> /// GET: ArtistModel/Details/5 /// </summary> /// <param name="id">artistId</param> /// <returns></returns> public async Task <ActionResult> Details(long?id) { if (id == null) { return(NotFound()); } //finds the artist ArtistModel artist = await _context.Artists.FindAsync(id); if (artist == null) { return(NotFound()); } return(View(artist)); }
public async Task <ActionResult <IEnumerable <ArtistDownloadModel> > > SearchArtistAsync(string name) { try { var artists = (await ArtistModel.PerformArtistSearch( name, _spotifyAPICredentials).ConfigureAwait(false)).Artists.Items; return(Ok(MapEntitiesToDownloadModels <FullArtist, ArtistDownloadModel>(artists))); } catch (Exception err) { LogException(err); return(Problem("There was an error searching for the artist from Spotify", statusCode: 500, type: err.GetType().ToString())); } }
public static Artist AddArtist(ArtistModel artist) { HttpResponseMessage response = client.PostAsJsonAsync("api/artists", artist).Result; var myArtist = response.Content.ReadAsAsync <Artist>().Result; if (response.IsSuccessStatusCode) { Console.WriteLine("Artist added: {0}", artist.Name); } else { Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase); } return(myArtist); }
public IHttpActionResult Create(ArtistModel artist) { if (!this.ModelState.IsValid) { return BadRequest(this.ModelState); } var newArtist = new Artist() { Name = artist.Name, Country = artist.Country, DateOfBirth = artist.DateOfBirth }; this.data.Artists.Add(newArtist); this.data.SaveChanges(); artist.ArtistId = newArtist.ArtistId; return Ok(artist); }
public IHttpActionResult Update(int id, ArtistModel artist) { if (!this.ModelState.IsValid) { return BadRequest(this.ModelState); } var artistToUpdate = this.data.Artists .All() .FirstOrDefault(a => a.ArtistId == id); if (artistToUpdate == null) { return BadRequest("The artist with id: " + id + " does not exists."); } artistToUpdate.Name = artist.Name; artistToUpdate.Country = artist.Country; artistToUpdate.DateOfBirth = artist.DateOfBirth; this.data.SaveChanges(); artist.ArtistId = artistToUpdate.ArtistId; return Ok(artist); }
private void LoadCollection() { PerfTracer perfTracer = new PerfTracer("LibraryModel Loading"); IEnumerable<SongTable> allSongs = DatabaseManager.Current.FetchSongs(); foreach (SongTable songEntry in allSongs) { SongModel songModel = new SongModel(songEntry); _allSongs.Add(songModel); songLookupDictionary.Add(songModel.SongId, songModel); } perfTracer.Trace("Songs Added"); IEnumerable<AlbumTable> allAlbums = DatabaseManager.Current.FetchAlbums(); foreach (AlbumTable albumEntry in allAlbums) { AlbumModel albumModel = new AlbumModel(albumEntry); _allAlbums.Add(albumModel); albumLookupDictionary.Add(albumModel.AlbumId, albumModel); } perfTracer.Trace("Albums Added"); IEnumerable<ArtistTable> allArtists = DatabaseManager.Current.FetchArtists(); foreach (ArtistTable artistEntry in allArtists) { ArtistModel artistModel = new ArtistModel(artistEntry); _allArtists.Add(artistModel); artistLookupDictionary.Add(artistModel.ArtistId, artistModel); } perfTracer.Trace("Artists Added"); IEnumerable<PlaylistTable> allPlaylists = DatabaseManager.Current.FetchPlaylists(); foreach (PlaylistTable playlistEntry in allPlaylists) { PlaylistModel playlistModel = new PlaylistModel(playlistEntry); Playlists.Add(playlistModel); playlistLookupDictionary.Add(playlistModel.PlaylistId, playlistModel); playlistModel.Populate(); } perfTracer.Trace("Playlists Added"); IEnumerable<MixTable> allMixes = DatabaseManager.Current.FetchMixes(); foreach (MixTable mixEntry in allMixes) { MixModel mixModel = new MixModel(mixEntry); Mixes.Add(mixModel); mixLookupDictionary.Add(mixModel.MixId, mixModel); mixModel.Populate(); } perfTracer.Trace("Mixes Added"); }
public CommissionModel(ApplicationUser c, ArtistModel a) { Commissioner = c; Artist = a; CommissionedOn = DateTime.Now; }
private ArtistViewModel LookupArtist(ArtistModel artist) { if (artist == null) return null; if (ArtistLookupMap.ContainsKey(artist.ArtistId)) { return ArtistLookupMap[artist.ArtistId]; } else { ArtistViewModel newArtistViewModel = new ArtistViewModel(artist); ArtistLookupMap.Add(newArtistViewModel.ArtistId, newArtistViewModel); ArtistCollection.Add(newArtistViewModel, newArtistViewModel.SortName); return newArtistViewModel; } }
public ArtistModel LookupArtistByName(string artistName, bool createIfNotFound = true) { ArtistTable artistTable = DatabaseManager.Current.LookupArtist(artistName); if (artistTable == null) { if (createIfNotFound) { ArtistTable newArtist = new ArtistTable(artistName); DatabaseManager.Current.AddArtist(newArtist); ArtistModel artistModel = new ArtistModel(newArtist); artistLookupDictionary.Add(artistModel.ArtistId, artistModel); return artistModel; } else { return null; } } else { return LookupArtistById(artistTable.ArtistId); } }
public IHttpActionResult Update(int id, ArtistModel artistModel) { if (!this.ModelState.IsValid) { return BadRequest(ModelState); } var existingArtist = this.data.Artists.Get(id); if (existingArtist == null) { return BadRequest(BabRequestMessage); } ArtistModel.ToArtist(artistModel, existingArtist); this.data.Artists.Update(existingArtist); this.data.SaveChanges(); return Ok(artistModel); }
internal void ParseMusicianInfo(ArtistModel artist, HtmlNode contentnode, bool cover = true) { System.Diagnostics.Debug.Write("尚未完成获取音乐人信息"); }
public IAsyncAction GetArtistInfo(ArtistModel artist, bool cover = true) { if (artist.XiamiID == 0) throw new ArgumentException("ArtistModel未设置ID"); return Run(async token => { try { LogService.DebugWrite($"Get info of Artist {artist.XiamiID}", nameof(WebApi)); List<Task> process = new List<Task>(); var gettask = HttpHelper.GetAsync($"http://www.xiami.com/artist/{artist.XiamiID}"); token.Register(() => gettask.Cancel()); var content = await gettask; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(content); //System.Diagnostics.Debugger.Break(); if (artist.IsXiamiMusician) { ParseMusicianInfo(artist, doc.DocumentNode.SelectSingleNode("/html/body/div[@id='Glory']"), cover); return; } else if (doc.DocumentNode.SelectSingleNode("//h1").SelectSingleNode("../i[@title='音乐人']") != null) { artist.IsXiamiMusician = true; ParseMusicianInfo(artist, doc.DocumentNode.SelectSingleNode("/html/body/div[@id='Glory']"), cover); return; } var body = doc.DocumentNode.SelectSingleNode("/html/body/div[@id='page']"); process.Add(Task.Run(async () => { var pgettask = HttpHelper.GetAsync($"http://www.xiami.com/artist/profile/id/{artist.XiamiID}"); token.Register(() => pgettask.Cancel()); var pcontent = await pgettask; HtmlDocument pdoc = new HtmlDocument(); pdoc.LoadHtml(pcontent); var pdiv = pdoc.DocumentNode.SelectSingleNode(".//div[@class='profile']"); pdiv.RemoveChild(pdiv.SelectSingleNode("./h3")); artist.Profile = pdiv.InnerHtml; }, token)); process.Add(Task.Run(() => { var id = artist.XiamiID; artist.HotSongs = new PageItemsCollection<SongModel>(20, ParseArtistTopSongs( body.SelectSingleNode(".//div[@class='common_sec']/table")).ToList(), async (page, ptoken) => { #if DEBUG System.Diagnostics.Debugger.Break(); #endif var pgettask = HttpHelper.GetAsync($"http://www.xiami.com/artist/top/id/{id}/page/{page}"); ptoken.Register(() => pgettask.Cancel()); var pcontent = await pgettask; HtmlDocument pdoc = new HtmlDocument(); pdoc.LoadHtml(pcontent); var pbody = pdoc.DocumentNode.SelectSingleNode("/html/body/div[@id='page']"); return ParseArtistTopSongs(pbody.SelectSingleNode(".//table[@class]")).ToList(); }); }, token)); var title = body.SelectSingleNode(".//h1"); if (artist.Name == null || cover) artist.Name = title.FirstChild.InnerText; if (artist.Description == null || cover) if (title.LastChild.Name == "span") artist.Description = title.LastChild.InnerText; var detail = body.SelectSingleNode(".//table"); foreach (var item in detail.SelectNodes("./tr")) { var tds = item.SelectNodes("./td"); switch (tds[0].InnerText) { case "地区:": artist.Area = tds[1].InnerText; break; case "风格:": artist.Genre = tds[1].SelectNodes("./a").Select((node) => { var gen = GenreModel.GetNew(ParseXiamiID(node.GetAttributeValue("href", "/0"))); gen.Name = node.InnerText; return gen; }).ToList(); break; } } if (artist.Art == null || cover) { var image = body.SelectSingleNode(".//img"); artist.Art = new Uri(image.GetAttributeValue("src", ArtistModel.SmallDefaultUri)); artist.ArtFull = new Uri(image.GetAttributeValue("src", ArtistModel.LargeDefaultUri).Replace("_2", "")); } await Task.WhenAll(process); LogService.DebugWrite($"Finish Getting info of Artist {artist.XiamiID}", nameof(WebApi)); } catch (Exception e) { LogService.ErrorWrite(e, nameof(WebApi)); #if DEBUG System.Diagnostics.Debugger.Break(); #endif throw e; } }); }
public ArtistModel LookupArtistById(int artistId) { if (artistLookupDictionary.ContainsKey(artistId)) { return artistLookupDictionary[artistId]; } else { ArtistTable artistTable = DatabaseManager.Current.LookupArtistById(artistId); if (artistTable == null) { return null; } else { ArtistModel artistModel = new ArtistModel(artistTable); artistLookupDictionary.Add(artistModel.ArtistId, artistModel); return artistModel; } } }
public void Delete(ArtistModel model) { _session.Delete(model); }
public void Add(ArtistModel model) { _session.Add(model); }
public IAsyncAction GetArtistInfo(ArtistModel artist, bool cover = false) { //TODO: 艺人专辑http://www.xiami.com/app/xiating/artist-album2?id= 相似艺人http://www.xiami.com/app/xiating/artist-similar?id= //TODO: 艺人专辑、艺人歌曲列表都采用增量加载 if (artist.XiamiID == 0) throw new ArgumentException("ArtistModel未设置ID"); return Run(async token => { try { LogService.DebugWrite($"Get info of Artist {artist.XiamiID}", nameof(WapApi)); var gettask = HttpHelper.GetAsync($"http://www.xiami.com/app/xiating/artist?id={artist.XiamiID}"); token.Register(() => gettask.Cancel()); var content = await gettask; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(content); var body = doc.DocumentNode.SelectSingleNode("//div[@id='artist']"); artist.Name = body.SelectSingleNode(".//h2").InnerText; artist.AliasName = body.SelectSingleNode(".//p").InnerText; var area = body.SelectSingleNode(".//p[2]"); if (area != null) artist.Name = area.InnerText.Remove(0, 3); if (artist.Art.Host == "") { var art = body.SelectSingleNode(".//img").GetAttributeValue("src", AlbumModel.SmallDefaultUri); artist.Art = new Uri(art); artist.ArtFull = new Uri(art.Replace("_1", "")); } var songlist = ParseArtistSongs(body.SelectSingleNode(".//ul[@class='playlist']")).ToArray();//只计算一次count artist.HotSongs = new PageItemsCollection<SongModel>(songlist, (pageindex, c) => GetArtistSongsPage(artist.XiamiID, pageindex, c)); artist.Albums = new PageItemsCollection<AlbumModel>(16, (pageindex, c) => GetArtistAlbumPage(artist.XiamiID, pageindex, c)); LogService.DebugWrite($"Finish Getting info of Artist {artist.XiamiID}", nameof(WapApi)); } catch (Exception e) { LogService.ErrorWrite(e, nameof(WapApi)); throw e; } }); }
public void Edit(ArtistModel model) { var record = _session.Single<Artist>(x=>x.Id == model.Id); record.Update(model); _session.CommitChanges(); }
public IAsyncAction GetArtistInfo(ArtistModel artist, bool cover = false) { throw new NotImplementedException(); }