Added image feature for Twitter notification.
This commit is contained in:
parent
64dbe8bcf3
commit
67891cd40f
@ -36,6 +36,7 @@ irc.channel=#april-test
|
||||
notify.at15.cron=0 45 11 ? * *
|
||||
notify.at15.irc=Revue hebdomadaire dans 15 minutes
|
||||
notify.at15.twitter=Revue hebdomadaire !april dans 15 minutes sur irc://irc.freenode.org/april ou http://apr1.org/8l
|
||||
notify.at5.image=/srv/foo/photo-pizza.jpg
|
||||
|
||||
#notify.at30.cron=0 30 11 ? * *
|
||||
#notify.at30.irc=Revue hebdomadaire dans 30 minutes
|
||||
|
@ -93,7 +93,18 @@ public class HebdobotConfigFile extends Properties
|
||||
String notifyIrcMessage = getNotifyIrcMessage(notifyName);
|
||||
String notifyTwitterMessage = getNotifyTwitterMessage(notifyName);
|
||||
|
||||
CronValue cronValue = new CronValue(notifyName, notifyCron, notifyIrcMessage, notifyTwitterMessage);
|
||||
String notifyImageFileName = getNotifyImage(notifyName);
|
||||
File notifyImageFile;
|
||||
if (notifyImageFileName == null)
|
||||
{
|
||||
notifyImageFile = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
notifyImageFile = new File(notifyImageFileName);
|
||||
}
|
||||
|
||||
CronValue cronValue = new CronValue(notifyName, notifyCron, notifyIrcMessage, notifyTwitterMessage, notifyImageFile);
|
||||
|
||||
result.add(cronValue);
|
||||
}
|
||||
@ -211,6 +222,23 @@ public class HebdobotConfigFile extends Properties
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the notify image file.
|
||||
*
|
||||
* @param notifyName
|
||||
* the notify name
|
||||
* @return the notify image file
|
||||
*/
|
||||
public String getNotifyImage(final String notifyName)
|
||||
{
|
||||
String result;
|
||||
|
||||
result = getProperty("notify." + notifyName + ".image");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the notify irc message.
|
||||
*
|
||||
|
@ -103,7 +103,7 @@ public class CronListener implements TriggerListener
|
||||
}
|
||||
else
|
||||
{
|
||||
this.bot.notifyTwitter(this.cron.getTwitterMessage());
|
||||
this.bot.notifyTwitter(this.cron.getTwitterMessage(), this.cron.getImageFile());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,8 @@
|
||||
*/
|
||||
package org.april.hebdobot.cron;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* The Class CronValue.
|
||||
*/
|
||||
@ -27,6 +29,7 @@ public class CronValue
|
||||
private String cron;
|
||||
private String ircMessage;
|
||||
private String twitterMessage;
|
||||
private File imageFile;
|
||||
|
||||
/**
|
||||
* Instantiates a new cron value.
|
||||
@ -40,12 +43,13 @@ public class CronValue
|
||||
* @param twitterMessage
|
||||
* the twitter message
|
||||
*/
|
||||
public CronValue(final String name, final String cron, final String ircMessage, final String twitterMessage)
|
||||
public CronValue(final String name, final String cron, final String ircMessage, final String twitterMessage, final File imageFile)
|
||||
{
|
||||
this.name = name;
|
||||
this.cron = cron;
|
||||
this.ircMessage = ircMessage;
|
||||
this.twitterMessage = twitterMessage;
|
||||
this.imageFile = imageFile;
|
||||
}
|
||||
|
||||
public String getCron()
|
||||
@ -53,6 +57,11 @@ public class CronValue
|
||||
return this.cron;
|
||||
}
|
||||
|
||||
public File getImageFile()
|
||||
{
|
||||
return this.imageFile;
|
||||
}
|
||||
|
||||
public String getIrcMessage()
|
||||
{
|
||||
return this.ircMessage;
|
||||
@ -73,6 +82,11 @@ public class CronValue
|
||||
this.cron = value;
|
||||
}
|
||||
|
||||
public void setImageFile(final File imageFile)
|
||||
{
|
||||
this.imageFile = imageFile;
|
||||
}
|
||||
|
||||
public void setIrcMessage(final String ircMessage)
|
||||
{
|
||||
this.ircMessage = ircMessage;
|
||||
|
@ -226,6 +226,19 @@ public class Hebdobot extends PircBot
|
||||
* the message
|
||||
*/
|
||||
public void notifyTwitter(final String message)
|
||||
{
|
||||
notifyTwitter(message, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify twitter.
|
||||
*
|
||||
* @param message
|
||||
* the message
|
||||
* @param imageFile
|
||||
* the image file
|
||||
*/
|
||||
public void notifyTwitter(final String message, final File imageFile)
|
||||
{
|
||||
if ((this.twitterSettings.isValid()) && (StringUtils.isNotBlank(message)))
|
||||
{
|
||||
@ -233,7 +246,8 @@ public class Hebdobot extends PircBot
|
||||
{
|
||||
TwitterClient twitter = new TwitterClient(this.twitterSettings.getConsumerKey(), this.twitterSettings.getConsumerSecret(),
|
||||
this.twitterSettings.getAccessToken(), this.twitterSettings.getAccessTokenSecret());
|
||||
twitter.tweet(message);
|
||||
|
||||
twitter.tweet(message, imageFile);
|
||||
}
|
||||
catch (TwitterException exception)
|
||||
{
|
||||
@ -605,6 +619,8 @@ public class Hebdobot extends PircBot
|
||||
{
|
||||
logger.info("!stats caught.");
|
||||
|
||||
notifyTwitter("yooooooooooooo", null);
|
||||
|
||||
// Display statistics. This feature has to not break
|
||||
// Hebdobot.
|
||||
try
|
||||
|
@ -106,14 +106,12 @@ public class ReviewStatsReporter
|
||||
IntegerStat stat = board.get(currentDuration);
|
||||
int total = board.getCountSum();
|
||||
|
||||
/*
|
||||
logger.debug("1 {}", stat.getValue());
|
||||
logger.debug("2 {}", board.getPositionOf(stat.getValue()));
|
||||
logger.debug("3 {}", board.getMinValue());
|
||||
logger.debug("4 {}", board.getAverage());
|
||||
logger.debug("5 {}", board.getMaxValue());
|
||||
logger.debug("6 {}", stat.getCount());
|
||||
*/
|
||||
|
||||
result = String.format(
|
||||
"Statistiques sur la durée de la revue (%d mn) : position %d (min=%d mn,moy=%.1f mn,max=%d mn), fréquence %d/%d (%.0f %%)",
|
||||
|
@ -25,10 +25,10 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import twitter4j.Status;
|
||||
import twitter4j.StatusUpdate;
|
||||
import twitter4j.Twitter;
|
||||
import twitter4j.TwitterException;
|
||||
import twitter4j.TwitterFactory;
|
||||
import twitter4j.UploadedMedia;
|
||||
import twitter4j.conf.ConfigurationBuilder;
|
||||
|
||||
/**
|
||||
@ -94,31 +94,24 @@ public class TwitterClient
|
||||
{
|
||||
Status result;
|
||||
|
||||
if (StringUtils.isBlank(message))
|
||||
{
|
||||
logger.info("Empty message => tweet aborted.");
|
||||
result = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
ConfigurationBuilder config = new ConfigurationBuilder();
|
||||
config.setDebugEnabled(true);
|
||||
config.setOAuthConsumerKey(this.consumerKey);
|
||||
config.setOAuthConsumerSecret(this.consumerSecret);
|
||||
config.setOAuthAccessToken(this.accessToken);
|
||||
config.setOAuthAccessTokenSecret(this.accessTokenSecret);
|
||||
|
||||
Twitter twitter = new TwitterFactory(config.build()).getInstance();
|
||||
|
||||
result = twitter.updateStatus(message);
|
||||
logger.info("Tweet result [" + result.getText() + "].");
|
||||
}
|
||||
result = tweet(message, null);
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
public Status tweet(final String message, final File image) throws TwitterException
|
||||
/**
|
||||
* Tweet.
|
||||
*
|
||||
* @param message
|
||||
* the message
|
||||
* @param image
|
||||
* the image
|
||||
* @return the status
|
||||
* @throws TwitterException
|
||||
* the twitter exception
|
||||
*/
|
||||
public Status tweet(final String message, final File imageFile) throws TwitterException
|
||||
{
|
||||
Status result;
|
||||
|
||||
@ -137,18 +130,15 @@ public class TwitterClient
|
||||
config.setOAuthAccessTokenSecret(this.accessTokenSecret);
|
||||
|
||||
Twitter twitter = new TwitterFactory(config.build()).getInstance();
|
||||
|
||||
result = twitter.updateStatus("Test 1");
|
||||
UploadedMedia um = twitter.uploadMedia(new File("/home/cpm/C/Hebdobot/TestConf/revue-hebdomadaire.png"));
|
||||
result = twitter.updateStatus("Test 2");
|
||||
result = twitter.updateStatus("Test 3");
|
||||
StatusUpdate status = new StatusUpdate(message);
|
||||
if ((imageFile != null) && (imageFile.exists()))
|
||||
{
|
||||
status.setMedia(imageFile);
|
||||
}
|
||||
result = twitter.updateStatus(status);
|
||||
|
||||
logger.info("Tweet result [" + result.getText() + "].");
|
||||
}
|
||||
// if ((imageFile != null) && (imageFile.exists()))
|
||||
// {
|
||||
// twitter
|
||||
// }
|
||||
|
||||
//
|
||||
return result;
|
||||
|
Loading…
Reference in New Issue
Block a user