Esempio n. 1
0
 private void OnVideoDataLoaded(YoutubeData data)
 {
     if (OnVideoData != null)
     {
         OnVideoData(data);
     }
 }
Esempio n. 2
0
        protected void Load_Links()
        {
            OleDbConnection con2 = new OleDbConnection();

            con2.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + Request.PhysicalApplicationPath + "\\Yoav_DB.accdb";
            con2.Open();
            string       sqlstring2 = @"SELECT Link, Link_order FROM links_tbl WHERE Username = @usr AND List_number = @num ORDER BY Link_order ASC";
            OleDbCommand conSer2    = new OleDbCommand(sqlstring2, con2);

            conSer2.Parameters.AddWithValue("@usr", Request.QueryString["Username"]);
            conSer2.Parameters.AddWithValue("@num", Current.Text);
            OleDbDataReader Drdr2 = conSer2.ExecuteReader();
            DataTable       dt    = new DataTable("youtube");
            DataColumn      dc    = new DataColumn();

            dc.ColumnName = "link";
            dt.Columns.Add(dc);
            dc = new DataColumn("count");
            dt.Columns.Add(dc);
            while (Drdr2.Read())
            {
                DataRow dr = dt.NewRow();
                dr["link"]  = "https://www.youtube.com/embed/" + Drdr2.GetString(0);
                dr["count"] = Drdr2.GetValue(1);
                count       = int.Parse(Drdr2.GetValue(1).ToString());
                dt.Rows.Add(dr);
            }
            if (!dataSet.Tables.Contains("youtube"))
            {
                dataSet.Tables.Add(dt);
            }
            con2.Close();
            YoutubeData.DataSource = dt;
            YoutubeData.DataBind();
        }
Esempio n. 3
0
    IEnumerator YoutubeSearch(string keyword, int maxresult, YoutubeSearchOrderFilter order, YoutubeSafeSearchFilter safeSearch, string customFilters, Action <YoutubeData[]> callback)
    {
        keyword = keyword.Replace(" ", "%20");

        string orderFilter, safeSearchFilter;

        orderFilter = "";
        if (order != YoutubeSearchOrderFilter.none)
        {
            orderFilter = "&order=" + order.ToString();
        }
        safeSearchFilter = "&safeSearch=" + safeSearch.ToString();

        string newurl = WWW.EscapeURL("https://www.googleapis.com/youtube/v3/search/?q=" + keyword + "&type=video&maxResults=" + maxresult + "&part=snippet,id&key=" + APIKey + "" + orderFilter + "" + safeSearchFilter + "" + customFilters);

        Debug.Log(newurl);
        WWW call = new WWW(WWW.UnEscapeURL(newurl));

        yield return(call);

        Debug.Log(call.url);
        JSONNode result = JSON.Parse(call.text);

        searchResults = new YoutubeData[result["items"].Count];
        Debug.Log(searchResults.Length);
        for (int itemsCounter = 0; itemsCounter < searchResults.Length; itemsCounter++)
        {
            searchResults[itemsCounter]    = new YoutubeData();
            searchResults[itemsCounter].id = result["items"][itemsCounter]["id"]["videoId"];
            SetSnippet(result["items"][itemsCounter]["snippet"], out searchResults[itemsCounter].snippet);
        }
        callback.Invoke(searchResults);
    }
Esempio n. 4
0
    private void SetContentDetails(JSONNode resultContentDetails, out YoutubeContentDetails data)
    {
        data                 = new YoutubeContentDetails();
        data.duration        = resultContentDetails["duration"];
        data.dimension       = resultContentDetails["dimension"];
        data.definition      = resultContentDetails["definition"];
        data.caption         = resultContentDetails["caption"];
        data.licensedContent = resultContentDetails["licensedContent"];
        data.projection      = resultContentDetails["projection"];

        if (resultContentDetails["contentRating"] != null)
        {
            Debug.Log("Age restrict found!");
            if (resultContentDetails["contentRating"]["ytRating"] == "ytAgeRestricted")
            {
                data.ageRestrict = true;
            }
            else
            {
                data.ageRestrict = false;
            }
        }
        else
        {
            data.ageRestrict = false;
        }
    }
    IEnumerator YoutubeSearchByLocation(string keyword, int maxResult, int locationRadius, float latitude, float longitude, YoutubeSearchOrderFilter order, YoutubeSafeSearchFilter safeSearch, Action <YoutubeData[]> callback)
    {
        keyword = keyword.Replace(" ", "%20");
        string orderFilter, safeSearchFilter;

        orderFilter = "";
        if (order != YoutubeSearchOrderFilter.none)
        {
            orderFilter = "&order=" + order.ToString();
        }
        safeSearchFilter = "&safeSearch=" + safeSearch.ToString();
        WWW call = new WWW("https://www.googleapis.com/youtube/v3/search/?type=video&q=" + keyword + "&type=video&locationRadius=" + locationRadius + "mi&location=" + latitude + "%2C" + longitude + "&part=snippet,id&maxResults=" + maxResult + "&key=" + APIKey + "" + orderFilter + "" + safeSearchFilter);

        yield return(call);

        Debug.Log(call.url);
        JSONNode result = JSON.Parse(call.text);

        searchResults = new YoutubeData[result["items"].Count];
        Debug.Log(searchResults.Length);
        for (int itemsCounter = 0; itemsCounter < searchResults.Length; itemsCounter++)
        {
            searchResults[itemsCounter]    = new YoutubeData();
            searchResults[itemsCounter].id = result["items"][itemsCounter]["id"]["videoId"];
            SetSnippet(result["items"][itemsCounter]["snippet"], out searchResults[itemsCounter].snippet);
        }
        callback.Invoke(searchResults);
    }
    IEnumerator YoutubeSearchUsingCategory(string keyword, string category, int maxresult, YoutubeSearchOrderFilter order, YoutubeSafeSearchFilter safeSearch, Action <YoutubeData[]> callback)
    {
        keyword  = keyword.Replace(" ", "%20");
        category = category.Replace(" ", "%20");

        string orderFilter, safeSearchFilter;

        orderFilter = "";
        if (order != YoutubeSearchOrderFilter.none)
        {
            orderFilter = "&order=" + order.ToString();
        }
        safeSearchFilter = "&safeSearch=" + safeSearch.ToString();

        UnityWebRequest request = UnityWebRequest.Get("https://www.googleapis.com/youtube/v3/search/?q=" + keyword + "&videoCategoryId=" + category + "&maxResults=" + maxresult + "&type=video&part=snippet,id&key=" + APIKey + "" + orderFilter + "" + safeSearchFilter);

        yield return(request.SendWebRequest());

        Debug.Log(request.url);
        JSONNode result = JSON.Parse(request.downloadHandler.text);

        searchResults = new YoutubeData[result["items"].Count];
        Debug.Log(searchResults.Length);
        for (int itemsCounter = 0; itemsCounter < searchResults.Length; itemsCounter++)
        {
            searchResults[itemsCounter]    = new YoutubeData();
            searchResults[itemsCounter].id = result["items"][itemsCounter]["id"]["videoId"];
            SetSnippet(result["items"][itemsCounter]["snippet"], out searchResults[itemsCounter].snippet);
        }
        callback.Invoke(searchResults);
    }
Esempio n. 7
0
        void Connect()
        {
            Dictionary <string, AppData> idToApp = apps.ToDictionary(app => app.Id);

            foreach (DeveloperData developer in developers)
            {
                foreach (string appId in developer.appsIDs)
                {
                    if (idToApp.ContainsKey(appId))
                    {
                        idToApp[appId].developer = developer;
                        developer.apps.Add(idToApp[appId]);
                    }
                }
            }

            Dictionary <string, YoutubeData> idToVideo = videos.ToDictionary(v => v.videoId);

            foreach (AppData app in apps)
            {
                if (idToVideo.ContainsKey(app.videoID))
                {
                    YoutubeData video = idToVideo[app.videoID];
                    app.video = video;
                    video.app = app;
                }
            }

            // sort developer apps
            foreach (DeveloperData developer in developers)
            {
                developer.apps = developer.apps.OrderBy(a => a.video == null ? DateTime.MinValue : a.video.date).ToList();
            }
        }
Esempio n. 8
0
        private void Form1_Load(object sender, EventArgs e)
        {
            //fastBasePath = fastMiniBasePath; // use part of datas
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
            Directory.CreateDirectory(fastBasePath);
            CheckCache("apps.txt");
            CheckCache("developers.txt");
            CheckCache("video.txt");

            apps       = AppData.load_from_file(fastBasePath + "apps.txt");
            developers = DeveloperData.Deserialize(fastBasePath + "developers.txt");
            videos     = YoutubeData.load_from_file(fastBasePath + "video.txt");

            videos = videos.DistinctBy(v => v.videoId).ToList();
            genreComboBox.Items.AddRange(Genres.All.ToArray());

            Connect();
            //SavePart();

            //SymbolsInName();
            //NameWordsCount(false);
            //PopularNameWords(); <---
            //AppsByGenres(true);
            //SimpleDevelopersAnalisis(false);
            //SimpleDevelopersAnalisis(true);

            //DevelopersAnalisis("Аркады и экшн");

            //YoutubeAnalisis();

            GenerateReport();
        }
Esempio n. 9
0
        public JsonResult YouTubeData()//Without Postman
        {
            //https://developers.google.com/youtube/v3/docs/activities/list
            YoutubeData YoutubeData = new YoutubeData();

            client.Headers.Add("Content-Type", "application/json; charset=utf-8");
            try
            {
                if (Session["YouTube_Token"] != null)
                {
                    client.Headers.Add("x-li-format", "json");
                    client.Headers.Add("x-original-host", "ngrok.io");
                    //client.Headers.Add("part", "contentDetails");
                    //client.Headers.Add("home", "true");
                    var content = client.DownloadString("https://www.googleapis.com/youtube/v3/activities/?access_token=" + Session["YouTube_Token"].ToString() + "&part=contentDetails&home=true");
                    serializer.MaxJsonLength = Int32.MaxValue;
                    YoutubeData = serializer.Deserialize <YoutubeData>(content);
                    log.Info("Serialization Completed");
                }
            }
            catch (Exception ex)
            {
                log.Error("Error Message : " + ex.Message);
            }
            return(Json(YoutubeData, JsonRequestBehavior.AllowGet));
        }
 private void SetSnippet(JSONNode resultSnippet, out YoutubeSnippet data)
 {
     data             = new YoutubeSnippet();
     data.publishedAt = resultSnippet["publishedAt"];
     data.channelId   = resultSnippet["channelId"];
     data.title       = resultSnippet["title"];
     data.description = resultSnippet["description"];
     //Thumbnails
     data.thumbnails = new YoutubeTumbnails();
     data.thumbnails.defaultThumbnail         = new YoutubeThumbnailData();
     data.thumbnails.defaultThumbnail.url     = resultSnippet["thumbnails"]["default"]["url"];
     data.thumbnails.defaultThumbnail.width   = resultSnippet["thumbnails"]["default"]["width"];
     data.thumbnails.defaultThumbnail.height  = resultSnippet["thumbnails"]["default"]["height"];
     data.thumbnails.mediumThumbnail          = new YoutubeThumbnailData();
     data.thumbnails.mediumThumbnail.url      = resultSnippet["thumbnails"]["medium"]["url"];
     data.thumbnails.mediumThumbnail.width    = resultSnippet["thumbnails"]["medium"]["width"];
     data.thumbnails.mediumThumbnail.height   = resultSnippet["thumbnails"]["medium"]["height"];
     data.thumbnails.highThumbnail            = new YoutubeThumbnailData();
     data.thumbnails.highThumbnail.url        = resultSnippet["thumbnails"]["high"]["url"];
     data.thumbnails.highThumbnail.width      = resultSnippet["thumbnails"]["high"]["width"];
     data.thumbnails.highThumbnail.height     = resultSnippet["thumbnails"]["high"]["height"];
     data.thumbnails.standardThumbnail        = new YoutubeThumbnailData();
     data.thumbnails.standardThumbnail.url    = resultSnippet["thumbnails"]["standard"]["url"];
     data.thumbnails.standardThumbnail.width  = resultSnippet["thumbnails"]["standard"]["width"];
     data.thumbnails.standardThumbnail.height = resultSnippet["thumbnails"]["standard"]["height"];
     data.channelTitle = resultSnippet["channelTitle"];
     //TAGS
     data.tags = new string[resultSnippet["tags"].Count];
     for (int index = 0; index < data.tags.Length; index++)
     {
         data.tags[index] = resultSnippet["tags"][index];
     }
     data.categoryId = resultSnippet["categoryId"];
 }
 private void SetStatistics(JSONNode resultStatistics, out YoutubeStatistics data)
 {
     data               = new YoutubeStatistics();
     data.viewCount     = resultStatistics["viewCount"];
     data.likeCount     = resultStatistics["likeCount"];
     data.dislikeCount  = resultStatistics["dislikeCount"];
     data.favoriteCount = resultStatistics["favoriteCount"];
     data.commentCount  = resultStatistics["commentCount"];
 }
 private void SetContentDetails(JSONNode resultContentDetails, out YoutubeContentDetails data)
 {
     data                 = new YoutubeContentDetails();
     data.duration        = resultContentDetails["duration"];
     data.dimension       = resultContentDetails["dimension"];
     data.definition      = resultContentDetails["definition"];
     data.caption         = resultContentDetails["caption"];
     data.licensedContent = resultContentDetails["licensedContent"];
     data.projection      = resultContentDetails["projection"];
 }
 void OnVideoDataLoaded(YoutubeData data)
 {
     ShowContent(
         new RealmVideoContentCard.VideoDescriptionContent()
     {
         title         = data.snippet.title
         , description = data.snippet.description
     }
         );
 }
 void OnFinishLoadingData(YoutubeData result)
 {
     UI_title.text       = result.snippet.title;
     UI_description.text = result.snippet.description;
     UI_duration.text    = "Duration: " + result.contentDetails.duration.Replace("PT", "");
     UI_likes.text       = "Likes: " + result.statistics.likeCount;
     UI_dislikes.text    = "Dislikes: " + result.statistics.dislikeCount;
     UI_favorites.text   = "Favs: " + result.statistics.favoriteCount;
     UI_comments.text    = "Comments: " + result.statistics.commentCount;
     UI_views.text       = "Views: " + result.statistics.viewCount;
     LoadThumbnail(result.snippet.thumbnails.defaultThumbnail.url);
 }
Esempio n. 15
0
    IEnumerator DownloadThumbnailFunc(YoutubeData videoData)
    {
        var url = videoData.snippet.thumbnails.mediumThumbnail.url;
        var www = UnityWebRequestTexture.GetTexture(url);

        yield return(www.SendWebRequest());

        var tex = DownloadHandlerTexture.GetContent(www);

        rawImage.texture = tex;

        videoRT = new RenderTexture(tex.width, tex.height, 24);
        youtube.unityVideoPlayer.targetTexture         = videoRT;
        GetComponent <AspectRatioFitter>().aspectRatio = (float)tex.width / tex.height;
    }
    IEnumerator LoadSingleVideo(string videoId, Action <YoutubeData> callback)
    {
        WWW call = new WWW("https://www.googleapis.com/youtube/v3/videos?id=" + videoId + "&part=snippet,id,contentDetails,statistics&key=" + APIKey);

        yield return(call);

        data = new YoutubeData();
        JSONNode result = JSON.Parse(call.text);

        result  = result["items"][0];  //using items
        data.id = result["id"];
        //Populate snippet data
        SetSnippet(result["snippet"], out data.snippet);
        SetStatistics(result["statistics"], out data.statistics);
        SetContentDetails(result["contentDetails"], out data.contentDetails);
        callback.Invoke(data);
    }
Esempio n. 17
0
        public async Task <JsonResult> Test(YoutubeViewModel model)
        {
            YoutubeData data = new YoutubeData()
            {
                Views       = model.Views,
                FemaleViews = model.FemaleViews,
                Likes       = model.Likes,
                Subcribers  = model.Subcribers,
                MaleViews   = model.MaleViews,
                Comments    = model.Comments,
                Dislike     = model.Dislike,
                Engagement  = model.Engagement,
            };

            _YoutubeRepo.Add(data);

            return(Json(true));
        }
    IEnumerator GetVideosFromChannel(string channelId, int maxResults, Action <YoutubeData[]> callback)
    {
        WWW call = new WWW("https://www.googleapis.com/youtube/v3/search?order=date&type=video&part=snippet&channelId=" + channelId + "&maxResults=" + maxResults + "&key=" + APIKey);

        yield return(call);

        Debug.Log(call.url);
        JSONNode result = JSON.Parse(call.text);

        searchResults = new YoutubeData[result["items"].Count];
        for (int itemsCounter = 0; itemsCounter < searchResults.Length; itemsCounter++)
        {
            searchResults[itemsCounter]    = new YoutubeData();
            searchResults[itemsCounter].id = result["items"][itemsCounter]["id"]["videoId"];
            SetSnippet(result["items"][itemsCounter]["snippet"], out searchResults[itemsCounter].snippet);
        }
        callback.Invoke(searchResults);
    }
    IEnumerator LoadSingleVideo(string videoId, Action <YoutubeData> callback)
    {
        UnityWebRequest request = UnityWebRequest.Get("https://www.googleapis.com/youtube/v3/videos?id=" + videoId + "&part=snippet,id,contentDetails,statistics&key=" + APIKey);

        yield return(request.SendWebRequest());

        Debug.Log(request.url);
        data = new YoutubeData();
        JSONNode result = JSON.Parse(request.downloadHandler.text);

        result  = result["items"][0];  //using items
        data.id = result["id"];
        //Populate snippet data
        SetSnippet(result["snippet"], out data.snippet);
        SetStatistics(result["statistics"], out data.statistics);
        SetContentDetails(result["contentDetails"], out data.contentDetails);
        callback.Invoke(data);
    }
    private void SetComment(JSONNode commentsData, out YoutubeComments data)
    {
        data         = new YoutubeComments();
        data.videoId = commentsData["videoId"];
        JSONNode commentDetail = commentsData["topLevelComment"]["snippet"];

        data.authorDisplayName     = commentDetail["authorDisplayName"];
        data.authorProfileImageUrl = commentDetail["authorProfileImageUrl"];
        data.authorChannelUrl      = commentDetail["authorChannelUrl"];
        data.authorChannelId       = commentDetail["authorChannelId"]["value"];
        data.textDisplay           = commentDetail["textDisplay"];
        data.textOriginal          = commentDetail["textOriginal"];
        data.canRate      = commentDetail["canRate"].AsBool;
        data.viewerRating = commentDetail["viewerRating"];
        data.likeCount    = commentDetail["likeCount"].AsInt;
        data.publishedAt  = commentDetail["publishedAt"];
        data.updatedAt    = commentDetail["updatedAt"];
    }
Esempio n. 21
0
        //public JsonResult YouTubedata()//With Postman
        //{
        //    YoutubeData YoutubeData = new YoutubeData();
        //    try
        //    {
        //        var client = new RestClient("https://api.linkedin.com/v1/people/~?format=json");
        //        var request = new RestRequest(Method.GET);
        //        request.AddHeader("Postman-Token", "e2f54cdf-c9d3-47a1-8c49-c07dc09c76c9");
        //        request.AddHeader("Cache-Control", "no-cache");
        //        request.AddHeader("Authorization", "Bearer AQUpylIsxl51pKuB_vw-ENuWZxgkLSDaJxV-Pzjqdcx5EW_vPgCNAG1rpRYBQZIrVxWX8_SPrSGAH8sraN7KpfWxAQaPHpMPZhAVxFb860MgxjJHclDm7Ns9OImy79bqaguIyXx6er6FfZwLsMC8snP3ByDGK-Lnr4BItMNzsxs06BrmuGabZ-XM2XC74CalsUGzhHphhDNFH-HK8itIfJBmzseQquxd5CvPLqx-7CytpUH1SXh9jyYr-SqZvi99HoEki8tIizmrzCIUJ_ABZpfc1ehrFUxu7wOVVhnFsNYLRWuA64FbwypokE_ZyIBi-IZjsk5ahgRTnoN1PyZqqcuvAU4z3A");
        //        IRestResponse response = client.Execute(request);
        //        YoutubeData = serializer.Deserialize<YoutubeData>(response.Content);

        //    }
        //    catch (Exception ex)
        //    {
        //        log.Error("Error Message : " + ex.Message);
        //    }
        //    return Json(YoutubeData, JsonRequestBehavior.AllowGet);
        //}

        public JsonResult youtubedata2()//oauth1
        {
            YoutubeData youtubeData = new YoutubeData();

            client.Headers.Add("X-Language", "en");
            client.Headers.Add("Content-Type", "application/json; charset=utf-8");
            try
            {
                var content = client.DownloadString("https://www.googleapis.com/youtube/v3/search?key=AIzaSyB_mVYswwrfIosYeR-UUYBamBeXOyyk7fM&channelId=UCyS42OgDpiOrFw9_u5bGotQ&part=snippet,id&order=date&maxResults=20");
                serializer.MaxJsonLength = Int32.MaxValue;
                youtubeData = serializer.Deserialize <YoutubeData>(content);
                log.Info("Serialization Completed");
            }
            catch (Exception ex)
            {
                log.Error("Error Message : " + ex.Message);
            }
            return(Json(youtubeData, JsonRequestBehavior.AllowGet));
        }
    IEnumerator YoutubeSearch(string keyword)
    {
        keyword = keyword.Replace(" ", "%20");
        int tempMaxResult = 0;

        if (maxResult > 50)
        {
            tempMaxResult = 50;
        }
        else
        {
            tempMaxResult = maxResult;
        }


        string          newurl  = UnityWebRequest.EscapeURL("https://www.googleapis.com/youtube/v3/search/?q=" + keyword + "&type=video&maxResults=" + tempMaxResult + "&part=snippet,id&key=" + APIKey + "");
        UnityWebRequest request = UnityWebRequest.Get(UnityWebRequest.UnEscapeURL(newurl));

        yield return(request.SendWebRequest());

        JSONNode result = JSON.Parse(request.downloadHandler.text);

        currentResults += result["items"].Count;

        for (int itemsCounter = 0; itemsCounter < result["items"].Count; itemsCounter++)
        {
            YoutubeData ytItem = new YoutubeData();
            ytItem.id = result["items"][itemsCounter]["id"]["videoId"];
            SetSnippet(result["items"][itemsCounter]["snippet"], out ytItem.snippet);

            searchResults.Add(ytItem);
        }

        if (currentResults < maxResult)
        {
            StartCoroutine(YoutubeGetNextPage(result["nextPageToken"]));
        }
        else
        {
            Debug.Log("List is done");
        }
    }
Esempio n. 23
0
    IEnumerator GetTrendingVideos(string regionCode, int maxresult, Action <YoutubeData[]> callback)
    {
        string newurl = WWW.EscapeURL("https://www.googleapis.com/youtube/v3/videos?part=snippet,id&chart=mostPopular&regionCode=" + regionCode + "&maxResults=" + maxresult + "&key=" + APIKey);
        WWW    call   = new WWW(WWW.UnEscapeURL(newurl));

        Debug.Log(call.url);
        yield return(call);

        JSONNode result = JSON.Parse(call.text);

        searchResults = new YoutubeData[result["items"].Count];
        Debug.Log(searchResults.Length);
        for (int itemsCounter = 0; itemsCounter < searchResults.Length; itemsCounter++)
        {
            searchResults[itemsCounter]    = new YoutubeData();
            searchResults[itemsCounter].id = result["items"][itemsCounter]["id"];
            SetSnippet(result["items"][itemsCounter]["snippet"], out searchResults[itemsCounter].snippet);
        }
        callback.Invoke(searchResults);
    }
Esempio n. 24
0
 public ParserResponse Parse(NameValueCollection requestData)
 {
     var jsonObject = new YoutubeData
     {
         Url = requestData["Url"],
         Avatar = requestData["Avatar"],
         Name = requestData["Name"],
         Comments = requestData["Comments"],
         Videos = requestData["Videos"],
         Subscribers = requestData["Subscribers"]
     };
     var data = JToken.FromObject(jsonObject).ToString();
     return new ParserResponse
     {
         Data = data,
         Followers = jsonObject.Subscribers.ToIntOrDefault(),
         Url = jsonObject.Url,
         Title = jsonObject.Name
     };
 }
    IEnumerator YoutubeGetNextPage(string pageToken)
    {
        int tempMaxResult = 0;

        if (maxResult > 50)
        {
            tempMaxResult = 50;
        }
        else
        {
            tempMaxResult = maxResult;
        }
        string newurl = WWW.EscapeURL("https://www.googleapis.com/youtube/v3/search/?pageToken=" + pageToken + "&type=video&maxResults=" + tempMaxResult + "&part=snippet,id&key=" + APIKey + "");
        WWW    call   = new WWW(WWW.UnEscapeURL(newurl));

        yield return(call);

        JSONNode result = JSON.Parse(call.text);

        currentResults += result["items"].Count;

        for (int itemsCounter = 0; itemsCounter < result["items"].Count; itemsCounter++)
        {
            YoutubeData ytItem = new YoutubeData();
            ytItem.id = result["items"][itemsCounter]["id"]["videoId"];
            SetSnippet(result["items"][itemsCounter]["snippet"], out ytItem.snippet);

            searchResults.Add(ytItem);
        }

        if (currentResults < maxResult)
        {
            StartCoroutine(YoutubeGetNextPage(result["nextPageToken"]));
        }
        else
        {
            Debug.Log("List is done");
        }
    }
Esempio n. 26
0
        void SavePart(int step = 10)
        {
            List <AppData>       appsPart       = new List <AppData>();
            List <DeveloperData> developersPart = new List <DeveloperData>();
            List <YoutubeData>   videosPart     = new List <YoutubeData>();

            foreach (DeveloperData developer in developers.TakeEvery(step))
            {
                developersPart.Add(developer);
                foreach (AppData app in developer.apps)
                {
                    appsPart.Add(app);
                    if (app.video != null)
                    {
                        videosPart.Add(app.video);
                    }
                }
            }

            AppData.save_to_file(appsPart, fastMiniBasePath + "apps.txt");
            YoutubeData.save_to_file(videosPart, fastMiniBasePath + "video.txt");
            DeveloperData.Serialize(developersPart, fastMiniBasePath + "developers.txt");
        }
        public AppRawData(HtmlDocument document)
        {
            HtmlNode root = document.DocumentNode;

            name  = root.SelectSingleNode("//div[@itemprop='name']/div").InnerText;
            genre = root.SelectSingleNode("//span[@itemprop='genre']").InnerText;

            score            = root.SelectSingleNode("//div[@class='score']").InnerText;
            reviews_num      = root.SelectSingleNode("//span[@class='reviews-num']").InnerText;
            rating_histogram = root.SelectNodes("//div[@class='rating-histogram']/div/span[@class='bar-number']").Select(el => el.InnerText).ToList();

            datePublished    = root.SelectSingleNode("//div[@itemprop='datePublished']").InnerText;
            fileSize         = root.SelectSingleNode("//div[@itemprop='fileSize']").InnerText;
            softwareVersion  = root.SelectSingleNode("//div[@itemprop='softwareVersion']").InnerText;
            operatingSystems = root.SelectSingleNode("//div[@itemprop='operatingSystems']").InnerText;
            contentRating    = root.SelectSingleNode("//div[@itemprop='contentRating']").InnerText;
            price            = root.SelectSingleNode("//meta[@itemprop='price']").GetAttributeValue("content", null); //<meta itemprop="price" content="Бесплатно">

            HtmlNode numDownloads_node = root.SelectSingleNode("//div[@itemprop='numDownloads']");

            numDownloads = numDownloads_node == null ? "0" : numDownloads_node.InnerText;

            HtmlNodeCollection developer_references = root.SelectNodes("//a[@class='dev-link']");

            foreach (HtmlNode ref_node in developer_references)
            {
                string link = ref_node.GetAttributeValue("href", null);
                if (link.StartsWith("mailto:"))
                {
                    developer_email = link;
                }
                else
                {
                    developer_site = link;
                }
            }

            //    //span[@class='play-action-container']               data-video-url
            string videoUrl = null;

            try
            {
                videoUrl = root.SelectSingleNode("//span[@data-video-url]").GetAttributeValue("data-video-url", null);
            }
            catch
            {
            }

            if (videoUrl != null)
            {
                if (new Uri(videoUrl).Host != "www.youtube.com")
                {
                    throw new Exception("video host : " + new Uri(videoUrl).Host);
                }
                videoID = YoutubeData.GetVideoID(videoUrl);
                if (videoID.Contains(":") || videoID.Contains(";"))
                {
                    throw new Exception(": or ; in videoId");
                }
            }
        }
Esempio n. 28
0
 private void OnReceiveVideoData(YoutubeData videoData)
 {
     StartCoroutine(DownloadThumbnailFunc(videoData));
 }
 public YoutubeService(IOptionsSnapshot <YoutubeData> youtubeDataAccessor)
 {
     _apiKey = youtubeDataAccessor.Value;
 }