View unanswered posts    View active topics

All times are UTC - 6 hours





Post new topic Reply to topic  [ 32 posts ] 
Go to page 1, 2, 3  Next

Print view Previous topic   Next topic  
Author Message
Search for:
 Post subject: OSD email notify
PostPosted: Thu Jan 19, 2006 5:30 pm 
Offline
Joined: Wed Aug 24, 2005 3:44 am
Posts: 210
I've knocked together a quick perl script to use mythtvosd to notify of new emails.

It's very raw, but it works so far.

Code:
#!/usr/bin/perl

# Popcheck.pl - Declan Higgins
# Version 0.1 Jan 2006

use Net::POP3;


sub do_account  ()

{
  my $unwanted = shift ;
  my $mail_server = shift ;
  my $username = shift ;
  my $password = shift ;
  my $maxmess = shift ;

  $pop = Net::POP3->new($mail_server)
      or die "Can't open connection to $mail_server : $!\n";
  defined ($pop->login($username, $password))
      or die "Can't authenticate: $!\n";
  $messages = $pop->list
      or die "Can't get list of undeleted messages: $!\n";
  $mc = keys %$messages;
  return if $mc==0;
  $nmc="$username has $mc emails";
  $x=`/usr/bin/mythtvosd --template=alert --alert_text="$nmc"`;
  sleep 3;
 foreach $msgid (keys %$messages) {
      $message = $pop->get($msgid);
      unless (defined $message) {
          warn "Couldn't fetch $msgid from server: $!\n";
          next;
      }
      $messno++;
      $q=0;
      $t="[$messno";
      foreach $z (@$message)
       {
         if ($z=~m/^From: (.*?)$/)
         {$t.=",f=$1";}
         if ($z=~m/^Subject: (.*?)$/)
         { $t.=",s=$1"; }
         if ($z=~m/^To: (.*?)$/)
         {$t.=",t=$1";}
         #last if $q++ > 18;
       }
      $t.="]";
      $t=~s/<//g;
      $t=~s/>//g;
      $t=~s/\[//g;
      $t=~s/\]//g;
      $x=`/usr/bin/mythtvosd --template=alert --alert_text="$t"`;
      sleep 3;
      return if $messno >= $maxmess;
      # $message is a reference to an array of lines
  }

}

open CONFIG,"</popcheck/popcheck.rc";
while (<CONFIG>)
{
 chomp;
 @b=split /,/;
 next unless $b[0] eq "account";
 &do_account (@b);
}
1


you also need a file in /popcheck/popcheck.rc

with entries of the following form
Code:
account,popserver,mbox1,password,5
account,popserver,mbox2,password,5
account,popserver,mbox3,password,5

account is a literal - dont edit it ...
replace popserver with you pop server host
replace mbox1 with the mailbox you want polled
replace password with you mailbox

the last numeric field is used to limit the number of emails notified....

in this case it will only show the first 5 - useful if your mailbox has 500 emails.

I have this CRONed to run every 15 mins.

comments,thoughts,suggestions -

is there a better way to do this ?


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jan 19, 2006 10:04 pm 
Offline
Joined: Fri Sep 19, 2003 7:05 pm
Posts: 5088
Location: Fontana, Ca
:)

_________________
cesman

When the source is open, the possibilities are endless!


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jan 23, 2006 1:39 pm 
Offline
Joined: Fri Sep 30, 2005 10:41 am
Posts: 17
Fantastic :)

I'm wondering what changes I'd need to make to have it check my Gmail account? That doesn't run on the std pop3 port.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jan 23, 2006 3:13 pm 
Offline
Joined: Sun Jun 12, 2005 2:39 pm
Posts: 464
Location: UK
With some quick googling i think you could just change the line:

Code:
$pop = Net::POP3->new($mail_server)


to

Code:
$pop = Net::POP3->new($mail_server,<gmailport>)


Change <gmailport> to whatever port gmail uses for pop3. Would probably be better to make a variable and have it read the port from the same file as the accounts...


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 01, 2006 6:27 pm 
Offline
Joined: Wed Aug 24, 2005 3:44 am
Posts: 210
Here is a tiny update

a)fixed a typo with message counts
b)and added non reporting of messages if their subject contains the word SPAM

b) is useful if you use a spam filter (like spampal) which prefilters your emails - I run spampal on my main pc and have configured popcheck.rc to fetches from it ... doing this avoids spam emails disrupting my viewing...


Code:
#!/usr/bin/perl

# Popcheck.pl - Declan Higgins
# Version 0.1b Jan 2006

use Net::POP3;


sub do_account  ()

{
  my $unwanted = shift ;
  my $mail_server = shift ;
  my $username = shift ;
  my $password = shift ;
  my $maxmess = shift ;


  my $messno = 0;

  $pop = Net::POP3->new($mail_server)
      or die "Can't open connection to $mail_server : $!\n";
  defined ($pop->login($username, $password))
      or die "Can't authenticate: $!\n";
  $messages = $pop->list
      or die "Can't get list of undeleted messages: $!\n";
  $mc = keys %$messages;
  return if $mc==0;
  $nmc="$username has $mc emails";
  $x=`/usr/bin/mythtvosd --template=alert --alert_text="$nmc"`;
  sleep 3;
  foreach $msgid (keys %$messages) {
      $message = $pop->get($msgid);
      unless (defined $message) {
          warn "Couldn't fetch $msgid from server: $!\n";
          next;
      }
      $messno++;
      $q=0;
      $t="[$messno";
      foreach $z (@$message)
       {
         if ($z=~m/^From: (.*?)$/)
         {$t.=",f=$1";}
         if ($z=~m/^Subject: (.*?)$/)
         { $t.=",s=$1";
           next if $z=~m/SPAM/;
         }
         if ($z=~m/^To: (.*?)$/)
         {$t.=",t=$1";}
         #last if $q++ > 18;
       }
      $t.="]";
      $t=~s/<//g;
      $t=~s/>//g;
      $t=~s/\[//g;
      $t=~s/\]//g;
      $x=`/usr/bin/mythtvosd --template=alert --alert_text="$t"`;
      sleep 3;
      return if $messno >= $maxmess;
      # $message is a reference to an array of lines
  }

}

open CONFIG,"</usr/declan/popcheck.rc";
while (<CONFIG>)
{
 chomp;
 @b=split /,/;
 next unless $b[0] eq "account";
 &do_account (@b);
}
1



Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 27, 2008 7:38 am 
Offline
Joined: Fri Feb 24, 2006 9:46 am
Posts: 65
Hi,

I tried to install this on my system, but I retrieve the following errors:
Code:
root@mythtv:/myth/emailnotify# sh Popcheck.pl
: command not found:
: command not found:
Popcheck.pl: line 6: use: command not found
: command not found:
: command not found:
: command not found:
Popcheck.pl: line 9: syntax error near unexpected token `('
'opcheck.pl: line 9: `sub do_account  ()
root@mythtv:/myth/emailnotify#


Do I need to install something else to make this script work?

Regards,
Victor


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 27, 2008 8:00 am 
Offline
Joined: Wed Nov 16, 2005 8:55 pm
Posts: 1381
Location: Farmington, MI USA
victor97 wrote:
Hi,

I tried to install this on my system, but I retrieve the following errors:
Code:
root@mythtv:/myth/emailnotify# sh Popcheck.pl
: command not found:
: command not found:
Popcheck.pl: line 6: use: command not found
: command not found:
: command not found:
: command not found:
Popcheck.pl: line 9: syntax error near unexpected token `('
'opcheck.pl: line 9: `sub do_account  ()
root@mythtv:/myth/emailnotify#


Do I need to install something else to make this script work?

Regards,
Victor
Remove the blank line at the top of your script - The very first line should be #!/usr/bin/perl.


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 27, 2008 8:54 am 
Offline
Joined: Fri Feb 24, 2006 9:46 am
Posts: 65
The first line is as mentioned in the script, no blank line. (I copied and past the script from the forum into a new file and checked if the first line is #!urs/bin/perl)

Still get the same errors.

Any ideas? Must be something small I think.

Victor


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 27, 2008 9:22 am 
Offline
Joined: Wed Nov 16, 2005 8:55 pm
Posts: 1381
Location: Farmington, MI USA
victor97 wrote:
The first line is as mentioned in the script, no blank line. (I copied and past the script from the forum into a new file and checked if the first line is #!urs/bin/perl)

Still get the same errors.

Any ideas? Must be something small I think.

Victor
Did you copy/paste from a Windoze machine? If so you'll need to run it through dos2unix - man dos2unix for details.

Just re-read your post, you need to make the file executable and call it directly (eg. ./Popcheck.pl or /path/to/Popcheck.pl). Perl should be the command interpreter, not bash (which is what your sh Popcheck.pl is using)


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 27, 2008 12:03 pm 
Offline
Joined: Mon Jul 31, 2006 10:41 pm
Posts: 149
If I understand this correctly, a message could pop up during a movie or during some other activity. Correct? That could be quite bothersome. Maybe assigning the script to a button on the remote is an alternative.


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 27, 2008 2:26 pm 
Offline
Joined: Wed Aug 24, 2005 3:44 am
Posts: 210
victor97 wrote:
The first line is as mentioned in the script, no blank line. (I copied and past the script from the forum into a new file and checked if the first line is #!urs/bin/perl)

Still get the same errors.

Any ideas? Must be something small I think.

Victor

first line must be
Code:
#!/usr/bin/perl

exactly as shown

this only works if you have perl located in /usr/bin

you can check this by typing

Code:
which perl

note that the exclamation mark is essential

typing

Code:
sh popcheck.pl

will tell the session to run the script using /bin/sh which wont work.

you should also be able to do
Code:
perl popcheck.pl

which should work


Last edited by declanh on Sun Jan 27, 2008 2:39 pm, edited 1 time in total.


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 27, 2008 2:28 pm 
Offline
Joined: Wed Aug 24, 2005 3:44 am
Posts: 210
mythedoff wrote:
If I understand this correctly, a message could pop up during a movie or during some other activity. Correct? That could be quite bothersome. Maybe assigning the script to a button on the remote is an alternative.


depends on your needs - i have mine croned to run every 15 mins and the messages are not that intrusive to me - but then again i tend to read alot of emails as they come in

To me the advange is not having to remember to press a key on the remote.


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 27, 2008 3:39 pm 
Offline
Joined: Fri Feb 24, 2006 9:46 am
Posts: 65
Ok, I got it working. I had to give executable permission and after that I could run the script. I'm learning every day! :wink:

But it is not working perfect. For most of my e-mails it won't show the subject of the message. Not sure why.

Also my gmail account is not working. I tried what has been raised earlier by mad_paddler, but that is not working for me.

Do you guys have the same behaviour? Besides this, I really loving it! Great feature!


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 27, 2008 9:28 pm 
Offline
Joined: Sun Jun 12, 2005 10:55 pm
Posts: 3161
Location: Warwick, RI
Hi,

Looks to be a rather cool "feature" :)

Only thing that may not have been clear is:
Code:
open CONFIG,"</usr/declan/popcheck.rc";

needs to be set for the individuals setup

You did hint to put popcheck.rc into popcheck/ folder which is a good location for both the popcheck.pl & popcheck.rc
ie,
/home/mythtv/popcheck/popcheck.rc

I think it does need a test message available in case there isn't any mail when you first run it as it just exits gracefully if nothing has arrived so one can only assume all is well.

Thank you :)
Mike
I do see this error if I add the #!/usr/bin/perl -w
Name "main::q" used only once: possible typo at popcheck.pl line 40.


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 27, 2008 11:17 pm 
Offline
Joined: Sun Jun 12, 2005 10:55 pm
Posts: 3161
Location: Warwick, RI
mjl wrote:
Hi,

Looks to be a rather cool "feature" :)

Only thing that may not have been clear is:
Code:
open CONFIG,"</usr/declan/popcheck.rc";

needs to be set for the individuals setup

You did hint to put popcheck.rc into popcheck/ folder which is a good location for both the popcheck.pl & popcheck.rc
ie,
/home/mythtv/popcheck/popcheck.rc

I think it does need a test message available in case there isn't any mail when you first run it as it just exits gracefully if nothing has arrived so one can only assume all is well.

Thank you :)
Mike
I do see this error if I add the #!/usr/bin/perl -w
Name "main::q" used only once: possible typo at popcheck.pl line 40.


Seems to run, however I see no osd on the tv... what did I mis.....


Top
 Profile  
 

Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 32 posts ] 
Go to page 1, 2, 3  Next



All times are UTC - 6 hours




Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group

Theme Created By ceyhansuyu