private async Task LoadDataCollection() { var youtubeService = new YouTubeService( new BaseClientService.Initializer() { ApiKey = "AIzaSyAfoTicQHOtC4quqROGeC3NqbPVhS8AwiU", ApplicationName = this.GetType().ToString() }); var request = youtubeService.Search.List("snippet"); // request.Q = LblMovieName.Content.ToString(); //{영화이름} 예고편 request.MaxResults = 10; var response = await request.ExecuteAsync();//검색시작(youtube OpenApi호출) foreach (var item in response.Items) { if (item.Id.Kind.Equals("youtube#video")) { YoutubeItem youtube = new YoutubeItem() { Title = item.Snippet.Title, Author = item.Snippet.ChannelTitle, URL = $"https://www.youtube.com/watch?v={item.Id.VideoId}" }; //썸네일 이미지 youtube.Thumbnail = new BitmapImage(new Uri(item.Snippet.Thumbnails.Default__.Url, UriKind.RelativeOrAbsolute)); youtubes.Add(youtube);//여기서 개체 참조가 개체의 인스턴스로 설정되지 않았다고 예외 메시지가 발생함. youtubes에 아무 정보도 담기지 않음. 아마 API가 잘못되어서 그런 것일 것이다. 선생님 깃허브 보고 참조하자. } } }
private async Task LoadDataCollection() { var youtubeService = new YouTubeService(new BaseClientService.Initializer() { ApiKey = "AIzaSyBDO048WJAAPZlGUgAmV16xuhCXcWnA6YI", ApplicationName = this.GetType().ToString() }); var request = youtubeService.Search.List("Snippet"); request.Q = lblMovieName.Content.ToString(); request.MaxResults = 10; var response = await request.ExecuteAsync(); foreach (var item in response.Items) { if (item.Id.Kind.Equals("youtube#video")) { YoutubeItem youtube = new YoutubeItem() { Title = item.Snippet.Title, Author = item.Snippet.ChannelTitle, URL = $"https://www.youtube.com/watch?v={item.Id.VideoId}" }; youtube.Thumbnail = new BitmapImage(new Uri(item.Snippet.Thumbnails.Default__.Url, UriKind.RelativeOrAbsolute)); lsvYoutubeSearch.Items.Add(youtube); } } }
private async Task LoadDataCollection() { var youtubeService = new YouTubeService( new BaseClientService.Initializer() { ApiKey = "AIzaSyCEj2ZDsfqi95enEjUzK0MD-dh1NN1DMo4", ApplicationName = this.GetType().ToString() } ); var request = youtubeService.Search.List("snippet"); request.Q = LblMovieName.Content.ToString(); // {movieName} 예고편 request.MaxResults = 10; // 사이즈가 너무 크면 프로그램 멈춤 var response = await request.ExecuteAsync(); // 검색 시작(Youtube OpenAPI 호출) foreach (var item in response.Items) { if (item.Id.Kind.Equals("youtube#video")) { YoutubeItem youtube = new YoutubeItem() { Title = item.Snippet.Title, Author = item.Snippet.ChannelTitle, URL = $"http://www.youtube.com/watch?v={item.Id.VideoId}" }; // 썸네일 이미지 youtube.Thumbnail = new BitmapImage(new Uri(item.Snippet.Thumbnails.Default__.Url, UriKind.RelativeOrAbsolute)); youtubes.Add(youtube); } } }
public VideoDetailPage(YoutubeItem yt) { InitializeComponent(); youtubeItem = yt; this.BindingContext = youtubeItem; id = youtubeItem.VideoId; }
public async Task AddToFavourites(YoutubeItem entity) { var entitytoadd = new FavoriteVideos { VideoId = entity.VideoId }; var result = await localFavorsRepository.InsertAsync(entitytoadd); }
private async Task LoadDataCollection() { var youtubeService = new YouTubeService( new BaseClientService.Initializer() { ApiKey = "AIzaSyDwUh5aEYp7tTNKfTLUWmrh13Qcp2p1-IQ", ApplicationName = this.GetType().ToString() }); var request = youtubeService.Search.List("snippet"); request.Q = LblMovieName.Content.ToString(); // {영화이름} 예고편 request.MaxResults = 10; // size가 클 경우 멈춰버림 var response = await request.ExecuteAsync(); //검색시작(youtube OpenApi 호출) foreach (var item in response.Items) { if (item.Id.Kind.Equals("youtube#video")) { YoutubeItem youtube = new YoutubeItem() { Title = item.Snippet.Title, Author = item.Snippet.ChannelTitle, URL = $"https://www.youtube.com/watch?v={item.Id.VideoId}" }; //썸네일 이미지 youtube.Thumbnail = new BitmapImage(new Uri(item.Snippet.Thumbnails.Default__.Url, UriKind.RelativeOrAbsolute)); youtubes.Add(youtube); } } }
public void OnNavigatingTo(NavigationParameters parameters) { if (parameters.ContainsKey("videoKey")) { Vid = parameters["videoKey"] as YoutubeItem; } }
public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position) { YoutubeItem video = (GetItem(position)) as YoutubeItem; MyViewHolder myHolder = holder as MyViewHolder; myHolder.title.Text = video.Title; myHolder.published_date.Text = video.PublishedAt.ToString(); Bitmap bbb = GetBitmapFromUrl(video.MediumThumbnailUrl); myHolder.imageView.SetImageBitmap(bbb); myHolder.imageView.Click += (sender, args) => { var intent = new Intent(mcon, typeof(PlayVideoActivity)); intent.AddFlags(ActivityFlags.NewTask); intent.PutExtra(PlayVideoActivity.ExtraUrlKey, video.VideoId); mcon.StartActivity(intent); }; myHolder.removeButton.Click += delegate { ((FavouritesViewModel)ViewModel).entity = video; ((FavouritesViewModel)ViewModel).RemoveFromFavoritiesCommand.Execute(); }; }
private async Task <List <YoutubeItem> > GetVideosAsync() { //string apiUrlForVideosDetails = "https://www.googleapis.com/youtube/v3/search?part=snippet&q=" + xxh + "&maxResults=50&order=rating" + "&key=" + ApiKey; var content = await cclient.GetStringAsync(apiUrlForVideosDetails); Debug.WriteLine("async started"); var youtubeItems = new List <YoutubeItem>(); Debug.WriteLine("B4 tryblock"); try { Debug.WriteLine("Tryblock"); Debug.WriteLine(content); JObject response = JsonConvert.DeserializeObject <dynamic>(content); Debug.WriteLine(response); var items = response.Value <JArray>("items"); Debug.WriteLine(items); Debug.WriteLine("B4 for each items"); foreach (var checki in items) { var snippet = checki.Value <JObject>("snippet"); var id = checki.Value <JObject>("id"); Debug.WriteLine(snippet); Debug.WriteLine(id); var h = new YoutubeItem { VideoId = id.Value <string>("videoId"), Title = snippet.Value <string>("title"), DefaultThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("default")?.Value <string>("url"), MediumThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("medium")?.Value <string>("url"), HighThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("high")?.Value <string>("url"), }; Debug.WriteLine(h.VideoId + " cheez value"); Debug.WriteLine(h.Title + " cheez value"); Debug.WriteLine(h.DefaultThumbnailUrl); Debug.WriteLine(h.HighThumbnailUrl); Debug.WriteLine("****************************************"); youtubeItems.Add(h); } foreach (var a in youtubeItems) { Debug.WriteLine(a); Debug.WriteLine("*********XXXXX**************"); } Debug.WriteLine("return Utubeitem"); return(youtubeItems); } catch (Exception exception) { return(youtubeItems); Debug.WriteLine("Exception"); } }
private async Task <List <YoutubeItem> > GetVideosDetailsAsync(List <string> videoIds) { var videoIdsString = ""; foreach (var s in videoIds) { videoIdsString += s + ","; } var httpClient = new HttpClient(); var json = await httpClient.GetStringAsync(string.Format(apiUrlForVideosDetails, videoIdsString)); var youtubeItems = new List <YoutubeItem>(); try { JObject response = JsonConvert.DeserializeObject <dynamic>(json); var items = response.Value <JArray>("items"); foreach (var item in items) { var snippet = item.Value <JObject>("snippet"); var statistics = item.Value <JObject>("statistics"); var youtubeItem = new YoutubeItem { Title = snippet.Value <string>("title"), Description = snippet.Value <string>("description"), ChannelTitle = snippet.Value <string>("channelTitle"), PublishedAt = snippet.Value <DateTime>("publishedAt"), VideoId = item?.Value <string>("id"), DefaultThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("default")?.Value <string>("url"), MediumThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("medium")?.Value <string>("url"), HighThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("high")?.Value <string>("url"), StandardThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("standard")?.Value <string>("url"), MaxResThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("maxres")?.Value <string>("url"), ViewCount = statistics?.Value <int>("viewCount"), LikeCount = statistics?.Value <int>("likeCount"), DislikeCount = statistics?.Value <int>("dislikeCount"), FavoriteCount = statistics?.Value <int>("favoriteCount"), CommentCount = statistics?.Value <int>("commentCount"), //Tags = (from tag in snippet?.Value<JArray>("tags") select tag.ToString())?.ToList(), }; youtubeItems.Add(youtubeItem); } return(youtubeItems); } catch (Exception exception) { Debug.WriteLine(exception); } return(youtubeItems); }
public TubeLink(YoutubeItem item, string src) { InitializeComponent(); FlowDirection = (AppSettings.LastUserGravity == "English") ? FlowDirection.LeftToRight : FlowDirection.RightToLeft; BackImg.Rotation = (AppSettings.LastUserGravity == "English") ? 180 : 0; WebKey.Source = src; this.BindingContext = item; }
public async Task readImageFromUrl(string url, YoutubeItem item) { byte[] bytes = wc.DownloadData(url); MemoryStream ms = new MemoryStream(bytes); Image srcImage = Image.FromStream(ms); ImageUpdated(srcImage, item); }
public SingleYoutubeVideo() { InitializeComponent(); BindingContext = new YoutubeItem(); //youtubeItem = (YoutubeItem)BindingContext; youtubeVideo.Source = "https://www.youtube.com/embed/" + videoId; }
public void ImageTapped(YoutubeItem itemTapped) { var a = itemTapped; var launchActivity = DependencyService.Get <ILaunchActivity>(); launchActivity.LaunchSingleVideo(itemTapped); //var singleActivity = new Intent(this,typeof(SingleVideoActivity)) //StartActivity() }
public async Task RemoveFromFavorities(YoutubeItem entity) { var list = await localFavorsRepository.ReadAll(); var entitytoremove = list.Where(x => x.VideoId == entity.VideoId).FirstOrDefault(); var v = await localFavorsRepository.Delete(entitytoremove); // var entitytoremove = FavoriteList.Where(x => x.VideoId == entity.VideoId).FirstOrDefault(); // var result = await localFavorsRepository.Delete(entitytoremove); }
async void commentUpdated(List <Comment> comments) { y2bList.Clear(); foreach (Comment cmt in comments) { YoutubeItem item = new YoutubeItem(false); item.Title = cmt.authorName; item.Description = cmt.comment; item.Duration = cmt.time; y2bList.Add(item); } y2bList.Visible = true; }
public SingleYoutubeVideo(string videoId) { InitializeComponent(); BindingContext = new YoutubeItem(); //adds " to the end of the videoId videoId = videoId + "\""; //youtubeVideo.Source = "https://www.youtube.com/embed/" + videoId; var htmlSource = new HtmlWebViewSource(); //the htmlSource.Html would look something like<html><body><iframe width="100%" src="https://www.youtube.com/embed/ow241ADZxE" frameborder="0" allowfullscreen></iframe></body></html> htmlSource.Html = @"<html><body><iframe width=""100%"" height=""100%"" src = ""https://www.youtube.com/embed/" + videoId + " frameborder = \"0\" allowfullscreen></iframe ></body></html>"; youtubeVideo.Source = htmlSource; }
private void OnVideoTapped(YoutubeItem item) { // var navParams = new NavigationParameters(); //navParams.Add("videoKey", item); //_navigationService.NavigateAsync(nameof(VideoDetails), navParams); IActionSheetButton Yes = ActionSheetButton.CreateButton("Yes", new DelegateCommand(() => { Task.Run(() => { Device.OpenUri(new Uri(item.Url)); }); })); IActionSheetButton No = ActionSheetButton.CreateButton("No", new DelegateCommand(() => { Debug.WriteLine("No"); })); _page.DisplayActionSheetAsync("Using third party app for watching video!", Yes, No); Debug.WriteLine($"**** {this.GetType().Name}.{nameof(OnVideoTapped)}; {_videos}"); }
public async Task Remove(YoutubeItem entity) { var list = await localFavorsRepository.ReadAll(); var entitytoremove = list.Where(x => x.VideoId == entity.VideoId).FirstOrDefault(); await localFavorsRepository.Delete(entitytoremove); var l = FavoritesVideos.Where(x => x.VideoId != entity.VideoId); FavoritesVideos = new ObservableCollection <YoutubeItem>(l); this.RaisePropertyChanged(() => this.FavoritesVideos); }
public void LaunchSingleVideo(YoutubeItem item) { var intent = new Intent(MainActivity.Instance, typeof(SingleVideoActivity)); intent.PutExtra("SelectedVideo", JsonConvert.SerializeObject( new YoutubeItem { VideoId = item.VideoId, Title = item.Title })); MainActivity.Instance.StartActivity(intent); MainActivity.Instance.OverridePendingTransition( Android.Resource.Animation.FadeIn, Android.Resource.Animation.FadeOut); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); RequestWindowFeature(WindowFeatures.NoTitle); SetContentView(Resource.Layout.SingleActivityLayout); // Create your application here var txtTitleHeader = FindViewById <TextView>(Resource.Id.txtVideoTitle); var youtubeView = FindViewById <YouTubePlayerView>(Resource.Id.youtube_view); youtubeItem = JsonConvert.DeserializeObject <YoutubeItem>(Intent.GetStringExtra("SelectedVideo")); txtTitleHeader.Text = youtubeItem.Title; youtubeView.Initialize(Configs.ApiKey, this); }
async void videoListUpdated(List <VideoInfo> videos) { y2bList.Clear(); foreach (VideoInfo info in videos) { YoutubeItem item = new YoutubeItem(); item.Title = info.Title; item.Description = info.Description; item.Duration = info.PublishedAt; // info.Duration; item.Url = info.Id; // load the thumb image in async mode await searcher.readImageFromUrl(info.Thumbnail, item); y2bList.Add(item); } y2bList.Visible = true; }
private async Task LoadDataCollection() { var youtubeService = new YouTubeService( new BaseClientService.Initializer() { ApiKey = "AIzaSyD3vOLfJ0Tiv0FBfQGg8RulTE9HSajf0hQ", ApplicationName = this.GetType().ToString() }); var request = youtubeService.Search.List("snippet"); request.Q = LblMovieName.Content.ToString(); //영화이름 예고편 request.MaxResults = 20; // 사이즈가 크면 멈춤 var response = await request.ExecuteAsync(); //검색시작 youtube openapi 호출 foreach (var item in response.Items) { if (item.Id.Kind.Equals("youtube#video")) { YoutubeItem youtube = new YoutubeItem() { Title = item.Snippet.Title, Author = item.Snippet.ChannelTitle, URL = $"https://www.youtube.com/watch?v={item.Id.VideoId}" }; //썸네일 이미지 //Process.Start(youtube.URL); //byte[] imgBytes = new WebClient().DownloadData(item.Snippet.Thumbnails.Default__.Url); //using ( var ms = new MemoryStream(imgBytes)) //{ // var source = new BitmapImage(); // source.BeginInit(); // source.StreamSource = ms; // source.EndInit(); // //할당 // youtube.Thumbnail = new Image() { Source = source }; //} youtube.Thumbnail = new BitmapImage(new Uri(item.Snippet.Thumbnails.Default__.Url, UriKind.RelativeOrAbsolute)); youtubes.Add(youtube); } } }
private async Task LoadDataCollection() { var youtubeService = new YouTubeService( new BaseClientService.Initializer() { ApiKey = "AIzaSyCUooX3bJbpNAuJQYyELG22rKxFeTH7H0E", ApplicationName = this.GetType().ToString() }); var request = youtubeService.Search.List("snippet"); request.Q = LblMovieName.Content.ToString(); // (영화이름) 예고편 request.MaxResults = 10; // 사이즈가 크면 멈춰버림 var response = await request.ExecuteAsync(); // 검색시작(youtube OpenAPI 호출) foreach (var item in response.Items) { if (item.Id.Kind.Equals("youtube#video")) { YoutubeItem youtube = new YoutubeItem() { Title = item.Snippet.Title, Author = item.Snippet.ChannelTitle, URL = $"https://www.youtube.com/watch?v={item.Id.VideoId}" }; /*// 썸네일 이미지 * byte[] imgBytes = new WebClient().DownloadData(item.Snippet.Thumbnails.Default__.Url); * using (var ms = new MemoryStream(imgBytes)) * { * var bitmapImg = new BitmapImage(); * bitmapImg.BeginInit(); * bitmapImg.StreamSource = ms; * bitmapImg.EndInit(); * //할당 * youtube.Thumbnail = new Image() { Source = bitmapImg }; * }*/ youtube.Thumbnail = new BitmapImage(new Uri(item.Snippet.Thumbnails.Default__.Url, UriKind.RelativeOrAbsolute)); youtubes.Add(youtube); } } }
private async Task LoadData() { if (IsLoading) { return; } IsLoading = true; YoutubeItems.Clear(); var httpClient = new HttpClient(); var json = await httpClient.GetStringAsync(apiUrlForPlaylist); try { JObject jsonResponse = JsonConvert.DeserializeObject <dynamic>(json); var items = jsonResponse.Value <JArray>("items"); foreach (var item in items) { var snippet = item.Value <JObject>("snippet"); var youtubeItem = new YoutubeItem { Title = snippet.Value <string>("title"), Description = snippet.Value <string>("description"), ChannelTitle = snippet.Value <string>("channelTitle"), PublishedAt = snippet.Value <DateTime>("publishedAt"), VideoId = snippet?.Value <JObject>("resourceId")?.Value <string>("videoId"), DefaultThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("default")?.Value <string>("url"), MediumThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("medium")?.Value <string>("url"), HighThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("high")?.Value <string>("url"), StandardThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("standard")?.Value <string>("url"), MaxResThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("maxres")?.Value <string>("url"), }; YoutubeItems.Add(youtubeItem); } } catch { // todo: handle an exception } finally { IsLoading = false; } }
private async Task <List <YoutubeItem> > GetVideosDetailsAsync(List <string> videoIds) { var videoIdsString = ""; foreach (var s in videoIds) { videoIdsString += s + ","; } var httpClient = new HttpClient(); var json = await httpClient.GetStringAsync(string.Format(apiUrlForVideosDetails, videoIdsString)); var youtubeItems = new List <YoutubeItem>(); try { JObject response = JsonConvert.DeserializeObject <dynamic>(json); var items = response.Value <JArray>("items"); foreach (var item in items) { var snippet = item.Value <JObject>("snippet"); var statistics = item.Value <JObject>("statistics"); var youtubeItem = new YoutubeItem { Title = snippet.Value <string>("title"), VideoId = item?.Value <string>("id"), MediumThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("medium")?.Value <string>("url"), }; youtubeItems.Add(youtubeItem); } return(youtubeItems); } catch (Exception exception) { return(youtubeItems); } }
private async Task LoadDataCollection() { var youtubeSerivie = new YouTubeService( new BaseClientService.Initializer() { ApiKey = "AIzaSyArr68BFJRqX0i1vBFlJHh_NVcDkAhmzLk", ApplicationName = this.GetType().ToString() }); var request = youtubeSerivie.Search.List("snippet"); // request.Q = LblMovieName.Content.ToString(); // Q=쿼리, {영화이름} 예고편 검색 request.MaxResults = 10; // ※ 주의 : 사이즈가 크면 멈춰버림 var response = await request.ExecuteAsync(); //검색시작 (Youtube OpenAPI 호출) foreach (var item in response.Items) { if (item.Id.Kind.Equals("youtube#video")) { YoutubeItem youtube = new YoutubeItem() { Title = item.Snippet.Title, Author = item.Snippet.ChannelTitle, URL = $"https://www.youtube.com/watch?v={item.Id.VideoId}" }; //썸네일 이미지 //byte[] imgBytes = new WebClient().DownloadData(item.Snippet.Thumbnails.Default__.Url); //using (var ms = new MemoryStream(imgBytes)) //{ // var bitmapImg = new BitmapImage(); // bitmapImg.BeginInit(); // bitmapImg.StreamSource = ms; // bitmapImg.EndInit(); // // 값 할당 // youtube.Thumbnail = new Image() { Source = bitmapImg }; //} youtube.Thumbnail = new BitmapImage(new Uri(item.Snippet.Thumbnails.Default__.Url)); youtubes.Add(youtube); } } }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value == null) { return(System.Windows.Visibility.Collapsed); } YoutubeItem item = ((SelectableMediaItem)value).Item as YoutubeItem; String matchString = (String)parameter; String[] types = matchString.Split(new char[] { '|' }); if (types.Contains(item.GetType().Name)) { return(System.Windows.Visibility.Visible); } else { return(System.Windows.Visibility.Collapsed); } }
bool filterFunc(SelectableMediaItem selectableItem) { YoutubeItem item = (YoutubeItem)selectableItem.Item; switch ((FilterMode)FilterModes.CurrentItem) { case FilterMode.None: break; case FilterMode.Videos: if (!(item is YoutubeVideoItem)) { return(false); } break; case FilterMode.Channels: if (!(item is YoutubeChannelItem)) { return(false); } break; case FilterMode.Playlists: if (!(item is YoutubePlaylistItem)) { return(false); } break; default: break; } bool result = tagFilter(selectableItem); return(result); }
// Task // 비동기 작업을 나타냅니다. 이 유형에 대한.NET Framework 소스 코드를 찾아보려면 참조는 Reference Source합니다. private async Task LoadDataCollection() { // key : AIzaSyCLYMpoH-7OqiCgujQUUwBUZ6rIDryld-E // Entity Framework 6.2.0 으로 다운그레이드 ... var youtubeService = new YouTubeService( new BaseClientService.Initializer() { ApiKey = "AIzaSyCLYMpoH-7OqiCgujQUUwBUZ6rIDryld-E", ApplicationName = this.GetType().ToString() } ); var request = youtubeService.Search.List("snippet"); request.Q = LblMovieName.Content.ToString(); // "{영화이름} 예고편" 으로 검색 request.MaxResults = 10; var response = await request.ExecuteAsync(); // 유튜브 API 호출 // youtubes = new List<YoutubeItem>(); // 초기화 foreach (var item in response.Items) { if (item.Id.Kind.Equals("youtube#video")) { YoutubeItem youtube = new YoutubeItem() { Title = item.Snippet.Title, Author = item.Snippet.ChannelTitle, URL = $"https://www.youtube.com/watch?v={item.Id.VideoId}" }; youtube.Thumbnail = new BitmapImage(new Uri(item.Snippet.Thumbnails.Default__.Url, UriKind.RelativeOrAbsolute)); youtubes.Add(youtube); } } }