Skip to content

Commit

Permalink
Impemented VidoInfo for "video" media entity in ExtendedEntities on a…
Browse files Browse the repository at this point in the history
… Status.
  • Loading branch information
JoeMayo committed Feb 8, 2016
1 parent 9532cf9 commit 8e6be51
Show file tree
Hide file tree
Showing 10 changed files with 156 additions and 67 deletions.
30 changes: 15 additions & 15 deletions Samples/net46/CSharp/ConsoleSamples/StatusDemos.cs
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ static void PrintTweetsResults(List<Status> tweets)

static async Task ShowMentionsTimelineAsync(TwitterContext twitterCtx)
{
var tweets =
List<Status> tweets =
await
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.Mentions &&
Expand All @@ -156,7 +156,7 @@ static async Task ShowMentionsTimelineAsync(TwitterContext twitterCtx)

static async Task RunUserTimelineQueryAsync(TwitterContext twitterCtx)
{
var tweets =
List<Status> tweets =
await
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.User &&
Expand All @@ -169,7 +169,7 @@ static async Task RunUserTimelineQueryAsync(TwitterContext twitterCtx)

static async Task RunHomeTimelineQueryAsync(TwitterContext twitterCtx)
{
var tweets =
List<Status> tweets =
await
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.Home
Expand All @@ -181,7 +181,7 @@ static async Task RunHomeTimelineQueryAsync(TwitterContext twitterCtx)

static async Task RetweetsOfMeStatusQueryAsync(TwitterContext twitterCtx)
{
var myRetweets =
List<Status> myRetweets =
await
(from retweet in twitterCtx.Status
where retweet.Type == StatusType.RetweetsOfMe &&
Expand All @@ -196,16 +196,16 @@ static async Task RetweetsQueryAsync(TwitterContext twitterCtx)
{
ulong tweetID = 196991337554378752;

var publicTweets =
List<Status> retweets =
await
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.Retweets &&
tweet.ID == tweetID
select tweet)
.ToListAsync();

if (publicTweets != null)
publicTweets.ForEach(tweet =>
if (retweets != null)
retweets.ForEach(tweet =>
{
if (tweet != null && tweet.User != null)
Console.WriteLine(
Expand All @@ -220,18 +220,18 @@ static async Task SingleStatusQueryAsync(TwitterContext twitterCtx)
{
ulong tweetID = 449660889793581056;

var friendTweets =
List<Status> status =
await
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.Show &&
tweet.ID == tweetID
select tweet)
.ToListAsync();

if (friendTweets != null)
if (status != null)
{
Console.WriteLine("\nTweets: \n");
friendTweets.ForEach(tweet =>
status.ForEach(tweet =>
{
if (tweet != null && tweet.User != null)
Console.WriteLine(
Expand Down Expand Up @@ -341,7 +341,7 @@ static async Task UploadMultipleImagesAsync(TwitterContext twitterCtx)

await Task.WhenAll(imageUploadTasks);

var mediaIds =
List<ulong> mediaIds =
(from tsk in imageUploadTasks
select tsk.Result.MediaID)
.ToList();
Expand All @@ -359,7 +359,7 @@ static async Task UploadVideoAsync(TwitterContext twitterCtx)
"Testing video upload tweet #Linq2Twitter £ " +
DateTime.Now.ToString(CultureInfo.InvariantCulture);

var media = await twitterCtx.UploadMediaAsync(File.ReadAllBytes(@"..\..\images\SampleVideo.mp4"), "video/mp4");
Media media = await twitterCtx.UploadMediaAsync(File.ReadAllBytes(@"..\..\images\SampleVideo.mp4"), "video/mp4");

Status tweet = await twitterCtx.TweetAsync(status, new ulong[] { media.MediaID });

Expand All @@ -371,7 +371,7 @@ static async Task OEmbedStatusAsync(TwitterContext twitterCtx)
{
ulong tweetID = 305050067973312514;

var embeddedStatus =
EmbeddedStatus embeddedStatus =
await
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.Oembed &&
Expand Down Expand Up @@ -403,7 +403,7 @@ static async Task RetweetersAsync(TwitterContext twitterCtx)

static async Task GetConversationAsync(TwitterContext twitterCtx)
{
var tweets =
List<Status> tweets =
await
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.Conversation &&
Expand All @@ -416,7 +416,7 @@ static async Task GetConversationAsync(TwitterContext twitterCtx)

static async Task LookupTweetsAsyc(TwitterContext twitterCtx)
{
var tweets =
List<Status> tweets =
await
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.Lookup &&
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using LitJson;

namespace LinqToTwitter
{
public class AspectRatio
{
const int WidthIndex = 0;
const int HeightIndex = 1;

public AspectRatio() { }
public AspectRatio(JsonData aspectRatio)
{
if (aspectRatio == null) return;

Width = (int) aspectRatio[WidthIndex];
Height = (int) aspectRatio[HeightIndex];
}

public int Width { get; set; }

public int Height { get; set; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ public Entities(JsonData entityJson)
return;
}

var hashTagEntities = entityJson.GetValue<JsonData>("hashtags");
var mediaEntities = entityJson.GetValue<JsonData>("media");
var urlEntities = entityJson.GetValue<JsonData>("urls");
var userEntities = entityJson.GetValue<JsonData>("user_mentions");
var symbolEntities = entityJson.GetValue<JsonData>("symbols");
JsonData hashTagEntities = entityJson.GetValue<JsonData>("hashtags");
JsonData mediaEntities = entityJson.GetValue<JsonData>("media");
JsonData urlEntities = entityJson.GetValue<JsonData>("urls");
JsonData userEntities = entityJson.GetValue<JsonData>("user_mentions");
JsonData symbolEntities = entityJson.GetValue<JsonData>("symbols");
HashTagEntities =
hashTagEntities == null
? new List<HashTagEntity>()
Expand Down Expand Up @@ -69,7 +69,8 @@ public Entities(JsonData entityJson)
Type = media.GetValue<string>("type"),
Url = media.GetValue<string>("url"),
Start = indices.Count > 0 ? (int)indices[0] : 0,
End = indices.Count > 1 ? (int)indices[1] : 0
End = indices.Count > 1 ? (int)indices[1] : 0,
VideoInfo = new VideoInfo(media.GetValue<JsonData>("video_info")),
})
.ToList();
UrlEntities =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections.Generic;

namespace LinqToTwitter
{
Expand Down Expand Up @@ -35,5 +33,7 @@ public class MediaEntity : UrlEntity
/// Character positions of extracted media
/// </summary>
public List<int> Indices { get; set; }

public VideoInfo VideoInfo { get; set; }
}
}
22 changes: 22 additions & 0 deletions src/LinqToTwitter/LinqToTwitter.Shared/Common/Entities/Variant.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using LinqToTwitter.Common;
using LitJson;

namespace LinqToTwitter
{
public class Variant
{
public Variant() { }
public Variant(JsonData variant)
{
BitRate = variant.GetValue<int>("bitrate", defaultValue: 0);
ContentType = variant.GetValue<string>("content_type");
Url = variant.GetValue<string>("url");
}

public int BitRate { get; set; }

public string ContentType { get; set; }

public string Url { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
using LinqToTwitter.Common;
using LitJson;
using System.Collections.Generic;
using System.Linq;

namespace LinqToTwitter
{
public class VideoInfo
{
public VideoInfo() { }
public VideoInfo(JsonData videoInfo)
{
AspectRatio = new AspectRatio(videoInfo.GetValue<JsonData>("aspect_ratio"));
Duration = videoInfo.GetValue<int>("duration_millis");
JsonData variants = videoInfo.GetValue<JsonData>("variants");

if (variants != null && variants.Count > 0)
Variants =
(from JsonData variant in videoInfo.GetValue<JsonData>("variants")
select new Variant(variant))
.ToList();
}

/// <summary>
/// Width and Height
/// </summary>
public AspectRatio AspectRatio { get; set; }

/// <summary>
/// Duration in milliseconds
/// </summary>
public int Duration { get; set; }

/// <summary>
/// Available encodings/data streams
/// </summary>
public List<Variant> Variants { get; set; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,16 @@
<Compile Include="$(MSBuildThisFileDirectory)Common\BannerSize.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Culture.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Cursors.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Entities\Variant.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Entities\Entities.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Entities\EntityBase.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Entities\HashTagEntity.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Entities\MediaEntity.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Entities\SymbolEntity.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Entities\UrlEntity.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Entities\UserMentionEntity.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Entities\AspectRatio.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Entities\VideoInfo.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\Evaluator.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\ExpressionTreeHelpers.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Common\ExpressionTreeModifier.cs" />
Expand Down
10 changes: 5 additions & 5 deletions src/LinqToTwitter/LinqToTwitter.Shared/Status/Status.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,14 @@ public Status(JsonData status)
RetweetedStatus = new Status(status.GetValue<JsonData>("retweeted_status"));
QuotedStatusID = status.GetValue<ulong>("quoted_status_id");
QuotedStatus = new Status(status.GetValue<JsonData>("quoted_status"));
var contributors = status.GetValue<JsonData>("contributors");
JsonData contributors = status.GetValue<JsonData>("contributors");
Contributors =
contributors == null ?
new List<Contributor>() :
(from JsonData contributor in contributors
select new Contributor(contributor))
.ToList();
var coords = status.GetValue<JsonData>("coordinates");
JsonData coords = status.GetValue<JsonData>("coordinates");
if (coords != null)
{
Coordinates = new Coordinate(coords.GetValue<JsonData>("coordinates"));
Expand All @@ -62,12 +62,12 @@ public Status(JsonData status)
Annotation = new Annotation(status.GetValue<JsonData>("annotation"));
Entities = new Entities(status.GetValue<JsonData>("entities"));
ExtendedEntities = new Entities(status.GetValue<JsonData>("extended_entities"));
var currentUserRetweet = status.GetValue<JsonData>("current_user_retweet");
JsonData currentUserRetweet = status.GetValue<JsonData>("current_user_retweet");
if (currentUserRetweet != null)
{
CurrentUserRetweet = currentUserRetweet.GetValue<ulong>("id");
}
var scopes = status.GetValue<JsonData>("scopes");
JsonData scopes = status.GetValue<JsonData>("scopes");
Scopes =
scopes == null ? new Dictionary<string, string>() :
(from key in (scopes as IDictionary<string, JsonData>).Keys as List<string>
Expand All @@ -80,7 +80,7 @@ select new
key => key.Key,
val => val.Value);
WithheldCopyright = status.GetValue<bool>("withheld_copyright");
var withheldCountries = status.GetValue<JsonData>("withheld_in_countries");
JsonData withheldCountries = status.GetValue<JsonData>("withheld_in_countries");
WithheldInCountries =
withheldCountries == null ? new List<string>() :
(from JsonData country in status.GetValue<JsonData>("withheld_in_countries")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public void GetParametersTest()
search.IncludeEntities == true;
var lambdaExpression = expression as LambdaExpression;

var queryParams = target.GetParameters(lambdaExpression);
Dictionary<string, string> queryParams = target.GetParameters(lambdaExpression);

Assert.IsTrue(
queryParams.Contains(
Expand Down Expand Up @@ -360,9 +360,9 @@ public void ProcessResults_Handles_Response_With_No_Results()

Assert.IsNotNull(searches);
Assert.IsNotNull(searches.SingleOrDefault());
var search = searches.Single();
Search search = searches.Single();
Assert.IsNotNull(search);
var results = search.Statuses;
List<Status> results = search.Statuses;
Assert.IsNotNull(results);
Assert.IsFalse(results.Any());
}
Expand Down

0 comments on commit 8e6be51

Please sign in to comment.