| |
1 # FORTUNE PROFILE |
| |
2 # |
| |
3 # Sets your AIM profile to a fortune (with a header and footer of your |
| |
4 # choice). |
| |
5 # |
| |
6 |
| |
7 # By Sean Egan |
| |
8 # seanegan@gmail.com |
| |
9 # AIM: SeanEgn |
| |
10 # |
| |
11 # Updated by Nathan Conrad, 31 January 2002 |
| |
12 # Changes: |
| |
13 # * Fortunes have HTML tabs and newlines |
| |
14 # AIM: t98502 |
| |
15 # ICQ: 16106363 |
| |
16 # |
| |
17 # Updated by Mark Doliner, 15 October 2002 |
| |
18 # Changes: |
| |
19 # * Modified to work with the changed perl interface of gaim 0.60 |
| |
20 # * Fixed a bug where your info would be set to nothing if you had |
| |
21 # no pre and no post message |
| |
22 # AIM: lbdash |
| |
23 # |
| |
24 # Updated by Christian Hammond, 20 August 2003 |
| |
25 # Changes: |
| |
26 # * Modified to work with the changed perl interface of gaim 0.68 |
| |
27 # AIM: ChipX86 |
| |
28 |
| |
29 # Copyright (C) 2001 Sean Egan |
| |
30 |
| |
31 # This program is free software; you can redistribute it and/or modify |
| |
32 # it under the terms of the GNU General Public License as published by |
| |
33 # the Free Software Foundation; either version 2 of the License, or |
| |
34 # (at your option) any later version. |
| |
35 # |
| |
36 # This program is distributed in the hope that it will be useful, |
| |
37 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| |
38 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| |
39 # GNU General Public License for more details. |
| |
40 # |
| |
41 # You should have received a copy of the GNU General Public License |
| |
42 # along with this program; if not, write to the Free Software |
| |
43 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| |
44 |
| |
45 use Gaim; |
| |
46 |
| |
47 %PLUGIN_INFO = ( |
| |
48 perl_api_version => 2, |
| |
49 name => "Fortune Profile", |
| |
50 version => "3.4", |
| |
51 summary => "Sets your AIM profile to a fortune (with a header and footer of your choice).", |
| |
52 description => "Sets your AIM profile to a fortune (with a header and footer of your choice).", |
| |
53 author => "Sean Egan <seanegan\@gmail.com>", |
| |
54 url => "http://gaim.sf.net/", |
| |
55 |
| |
56 load => "plugin_load" |
| |
57 ); |
| |
58 |
| |
59 sub plugin_init { |
| |
60 return %PLUGIN_INFO; |
| |
61 } |
| |
62 |
| |
63 sub plugin_load { |
| |
64 $plugin = shift; |
| |
65 |
| |
66 $tab = " "; |
| |
67 $tab = $tab . $tab . $tab . $tab; |
| |
68 $nl = "<BR>"; |
| |
69 |
| |
70 $seconds = 30; # Delay before updating away messages. |
| |
71 $max = 1020; # Max length of an profile. It should be |
| |
72 # 1024, but I am being safe |
| |
73 $pre_message = ""; # This gets added before the fortune |
| |
74 |
| |
75 $post_message =""; |
| |
76 |
| |
77 $len = 0; |
| |
78 if ($pre_message ne "") { |
| |
79 $len += length( $pre_message . "---$nl" ); |
| |
80 } |
| |
81 if ($post_message ne "") { |
| |
82 $len += length("---$nl" . $post_message); |
| |
83 } |
| |
84 |
| |
85 # Command to get dynamic message from |
| |
86 $command = "fortune -sn " . ($max - $len); |
| |
87 |
| |
88 # output the first message and start the timers... |
| |
89 # This is done as a timeout to prevent attempts to set the |
| |
90 # profile before logging in. |
| |
91 Gaim::timeout_add($plugin, $seconds, \&update_away, 0); |
| |
92 } |
| |
93 |
| |
94 sub update_away { |
| |
95 # The fortunes are expanded into HTML (the tabs and newlines) which |
| |
96 # causes the -s option of fortune to be a little bit meaningless. This |
| |
97 # will loop until it gets a fortune of a good size (after expansion). |
| |
98 |
| |
99 do { |
| |
100 do { #It's a while loop because it doesn't always work for some reason |
| |
101 $fortune = `$command`; |
| |
102 if ($? == -1) { |
| |
103 return; |
| |
104 } |
| |
105 } while ($fortune eq ""); |
| |
106 $fortune =~ s/\n/$nl/g; |
| |
107 $fortune =~ s/\t/$tab/g; |
| |
108 } while ((length($fortune) + $len ) > $max); |
| |
109 |
| |
110 $message = $fortune; |
| |
111 if ($pre_message ne "") { |
| |
112 $message = $pre_message . "---$nl" . $message; |
| |
113 } |
| |
114 if ($post_message ne "") { |
| |
115 $message = $message . "---$nl" . $post_message ; |
| |
116 } |
| |
117 |
| |
118 foreach $account (Gaim::accounts()) { |
| |
119 if ($account->is_connected()) { |
| |
120 $account->set_user_info($message); |
| |
121 } |
| |
122 } |
| |
123 |
| |
124 Gaim::timeout_add($plugin, $seconds, \&update_away, 0); |
| |
125 } |