Maybe if I showed some of the scripts where the data is used, maybe some pointers can be given on where my mind should be if I decide to try again with OO for the data.
list_links.pl
list_links sends HTML list items <li> to the clip board so I can paste them into a Tumblr post I update every once in a while to get more people to subscribe.
#!/usr/bin/perl
use strict;
use warnings FATAL => qw( all );
use Lingua::EN::Inflect qw(NO);
use Win32::Clipboard;
use lib '../files/perl/lib';
use Twitter::ListSort qw(list_compare);
use Twitter::Data;
my %lists = Twitter::Data::all_lists; # This is all of the lists I kee
+p across all my accounts.
my $board;
for my $list (sort { list_compare($a,$b) } values %lists) { # Starting
+ the loop.
next if !grep(/owner/,@{$list->{status}});
my $targ = $list->{target};
my $link = $list->{link};
my $name = length($list->{long_name}) ? $list->{long_name} : $list->
+{name};
my $targ_text = $targ > 0 ? " (".NO('subscriber',$targ)." 'til targe
+t met)" : '';
my $asterisk = $list->{user} eq "Lady_Aleena" ? '*' : '';
$board .= qq(<li><a href="$link">$name</a>$asterisk$targ_text</li>\n
+);
}
my $clip = Win32::Clipboard();
$clip->Set($board);
list_people.pl
list_people does three things.
- It tells me who I have not made members of my List subscribers list. Anyone who subscribes to one of my lists becomes a member of List subscribers. I take this group and add them to List subscribers with another script. Sometimes removed or suspended Twitter accounts remain as subscribers of a list for months or even years. I check to make sure the account exists before trying to add it (or readd it) to the List subscribers list.
- It tells me who is no longer subscribed to my lists who still remains on the List subscribers list. There is a way with Net::Twitter::Lite to remove people from the list programmatically, I just have not added it to the script yet.
- Since most of my accounts (not my main Lady_Aleena account) were created to house lists, most (if not all) of the people followed by the account is either a member or subscriber to a list. This section checks to see if the account is following someone who is neither a list member or list subscriber. The first time I ran the script with this section, I ended up creating about eight new lists.
#!/usr/bin/perl
use strict;
use warnings FATAL => qw( all );
use Lingua::EN::Inflect qw(WORDLIST);
use Text::Table;
use Win32::Clipboard;
use lib '../files/perl/lib';
use Twitter::Data;
my @accounts = Twitter::Data::accounts;
my %lists = Twitter::Data::all_lists;
my %lists_people = Twitter::Data::lists_people;
my @subscribers = @{$lists{'72710881'}{members}};
local $\ = "\n";
# 1 above.
print 'Subscribers not on the list';
for my $subscriber (keys %{$lists_people{subscribers}}) {
my $s_lists = WORDLIST(@{$lists_people{subscribers}{$subscriber}}, {
+conj=>''});
print "$subscriber - $s_lists" if !grep($_ eq $subscriber,@subscribe
+rs);
}
print "\n";
# 2 above.
print 'Non-subscribers on the list';
for my $subscriber (@subscribers) {
print $subscriber if !$lists_people{subscribers}{$subscriber};
}
print "\n";
# 3 above
print 'People followed but not listed (by account)';
for my $account (@accounts) {
next if $account =~ /^(LadyAleena_(?:eros|test))$/;
my %account_people = Twitter::Data::acct_data($account,'people');
my @not_members;
for my $person (values %account_people) {
my $name = $person->{screen_name};
push @not_members, $name if ($person->{friends} == 1 && !$lists_pe
+ople{members}{$name});
}
local $\ = "\n";
if (scalar(@not_members) > 0) {
print "$account";
for (sort {lc $a cmp lc $b} @not_members) {
$board .= "\t$_\n";
print "\t$_";
}
}
}
If you see anything in there where OO would come in handy, let me know. These two scripts are probably the shortest of those I have written where I need the data.
Have a cookie and a very nice day!
Lady Aleena
|