Получение информации о YouTube через URL - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь получить представление YouTube с помощью C #.
Мне удалось получить идентификаторы видео с кодом ниже, Однако я не могу получить понимание. Я надеюсь что используя идентификатор видео, я могу получить Get по следующему URL:

https://insight.youtube.com/video-analytics/csvreports?query=VIDEO_ID&type=v&starttime=1330727299&endtime=1331677699&region=world&hl=en_US&userName=USERNAME&password=PASSWORD&token=DEV_TOKEN

Хотя этот URL, похоже, не работает.

Есть идеи? Конкретный пример кода C # будет иметь неоценимое значение.

public class UnixTime
{
   public static string ToUnixTime(DateTime dateTime)
    {
        return (Math.Round((dateTime - new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime()).TotalSeconds, 0)).ToString() ;
    }
}



public void PrepareAndDownloadFile(string username, string password, string token, 
                                   string channel,  string destination)
{

    YouTubeRequestSettings settings = new YouTubeRequestSettings(channel, token, username, password);
    YouTubeRequest request = new YouTubeRequest(settings);
    string feedUrl = String.Format("http://gdata.youtube.com/feeds/api/users/{0}/uploads?v=2", channel);
    Feed<Video> videoFeed = request.Get<Video>(new Uri(feedUrl));

    foreach (Video video in videoFeed.Entries)
    {
        StringBuilder url = new StringBuilder();

        url.Append("https://insight.youtube.com/video-analytics/csvreports");
        url.Append(String.Format("?query={0}", video.VideoId));
        url.Append("&type=v");
        url.Append(String.Format("&starttime={0}", UnixTime.ToUnixTime(DateTime.Now.AddDays(SINCE_OFFSET))));
        url.Append(String.Format("&endtime={0}", UnixTime.ToUnixTime(DateTime.Now.AddDays(UNTIL_OFFSET))));
        url.Append("&region=world");
        url.Append("&hl=en_US");
        url.Append(String.Format("&userName={0}", username));
        url.Append(String.Format("&password={0}", password));
        url.Append(string.Format("&token={0}", token));

        // make Http Request here given the new url.

        dynamic rows = GetPath(url.ToString());
        processor.WriteRows(destination, rows);
     }
 }

1 Ответ

1 голос
/ 13 марта 2012

Джеффри Посник Пост ответ

10: 53 AM (1 час назад)

Привет,

У меня нет готового кода на C #, но я могу сказать вам, что ты делаешь неправильно. Вы не должны вручную создавать YouTube Insight URLs. Вы не можете сделать это. Вы, кажется, используете свой YouTube токен аутентификации в качестве значения параметра URL token =, и добавьте ваше имя пользователя и пароль в URL для правильной оценки, но это совершенно неправильный подход. URL Insight уникален генерируется API и выставляется в аутентифицированном запросе на запись видео владельцем этой записи, в элементе. Это объяснил на

https://developers.google.com/youtube/2.0/developers_guide_protocol_insight

Опять же, вы не можете вручную создать URL. Единственный раз, когда вам нужно изменить автоматически сгенерированный URL на всех, если вы хотите изменить параметры user_starttime или user_endtime, которые также рассматриваются в документах.

Ура, -Джефф Посник, команда YouTube API groups.google.com/group/youtube-api-gdata | apiblog.youtube.com | @YouTubeDev

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...