Skip to content

Instantly share code, notes, and snippets.

@myshkin
Created April 12, 2015 19:58
Show Gist options
  • Save myshkin/5bfb2f5e795bc2cf2146 to your computer and use it in GitHub Desktop.
Save myshkin/5bfb2f5e795bc2cf2146 to your computer and use it in GitHub Desktop.
ttytter diff to expand tweets referring to other tweets or containing multiple images
--- ttytter.2.1.0.FCS 2015-04-11 16:17:32.000000000 -0700
+++ ttytter 2015-04-12 10:51:29.000000000 -0700
@@ -2837,7 +2837,7 @@
my $didprint = 0;
# Twitter puts entities in multiple fields.
foreach $w (qw(media urls)) {
- my $p = $hash->{'entities'}->{$w};
+ my $p = $hash->{'extended_entities'}->{$w};
next if (!defined($p) || ref($p) ne 'ARRAY');
foreach $v (@{ $p }) {
next if (!defined($v) || ref($v) ne 'HASH');
@@ -5333,6 +5333,19 @@
if (length($ref->{'tag'}->{'payload'}) &&
$ref->{'tag'}->{'type'} eq 'list');
$tweet = "<$sn> $tweet";
+
+ # Handle multiple entities
+ my $mediacount = scalar @{$ref->{'extended_entities'}->{'media'}};
+ if ($mediacount > 1) {
+ foreach my $v (@{$ref->{'extended_entities'}->{'media'}}[1..$mediacount-1]) {
+ next if (!defined($v) || ref($v) ne 'HASH');
+ my $url = $v->{'media_url_https'} ||
+ $v->{'media_url'} ||
+ $v->{'expanded_url'};
+ next if (!length($url));
+ $tweet .= " " . &descape($url);
+ }
+ }
# twitter doesn't always do this right.
$h = $ref->{'retweet_count'}; $h += 0; #$h = "${h}+" if ($h >= 100);
# twitter doesn't always handle single retweets right. good f'n grief.
@@ -5351,6 +5364,20 @@
$tweet =~ s/\n*$//;
$tweet .= ($nocolour) ? "\n" : "$OFF\n";
+ # handle embedded tweets
+ #my $appended_tweets = "";
+ #while ($tweet =~ m#\G.+?https://twitter.com/\S+/(\d+)#g) {
+ # my $embedded_tweet = standardtweet(get_tweet($1));
+ # $appended_tweets .= $embedded_tweet;
+ #}
+ #$tweet .= $appended_tweets;
+
+ my @appended_tweets = ();
+ while ($tweet =~ m#\G.*?https://twitter.com/\S+/(\d+)#sg) {
+ push @appended_tweets, get_tweet($1);
+ }
+ &tdisplay(\@appended_tweets);
+
# highlight anything that we have in track
if(scalar(@tracktags)) { # I'm paranoid
foreach $h (@tracktags) {
@@ -7027,20 +7054,22 @@
my $w;
# Twitter puts entities in multiple fields.
- foreach $w (qw(media urls)) {
- my $p = $hash->{'entities'}->{$w};
- next if (!defined($p) || ref($p) ne 'ARRAY');
- foreach $v (@{ $p }) {
- next if (!defined($v) || ref($v) ne 'HASH');
- next if (!length($v->{'url'}) ||
- (!length($v->{'expanded_url'}) &&
- !length($v->{'media_url'})));
- my $u1 = quotemeta($v->{'url'});
- my $u2 = $v->{'expanded_url'};
- my $u3 = $v->{'media_url'};
- my $u4 = $v->{'media_url_https'};
- $u2 = $u4 || $u3 || $u2;
- $hash->{'text'} =~ s/$u1/$u2/;
+ foreach my $field (qw(entities extended_entities)) {
+ foreach $w (qw(media urls)) {
+ my $p = $hash->{$field}->{$w};
+ next if (!defined($p) || ref($p) ne 'ARRAY');
+ foreach $v (@{ $p }) {
+ next if (!defined($v) || ref($v) ne 'HASH');
+ next if (!length($v->{'url'}) ||
+ (!length($v->{'expanded_url'}) &&
+ !length($v->{'media_url'})));
+ my $u1 = quotemeta($v->{'url'});
+ my $u2 = $v->{'expanded_url'};
+ my $u3 = $v->{'media_url'};
+ my $u4 = $v->{'media_url_https'};
+ $u2 = $u4 || $u3 || $u2;
+ $hash->{'text'} =~ s/$u1/$u2/;
+ }
}
}
return $hash;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment