This repository has been archived by the owner on Nov 30, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsocialmediabroadcaster.py
executable file
·112 lines (101 loc) · 5.32 KB
/
socialmediabroadcaster.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import configparser
import logging
import argparse
import mysql.connector
import modules.rssfeed
import time
import socialplugins.twitter
import socialplugins.gnusocial
def main():
args = parse()
level = getattr(logging, args.log.upper(), None)
if not isinstance(level, int):
raise ValueError('Invalid log level: %s' % args.log)
logging.basicConfig(filename='socialmediabroadcaster.log', filemode='a',
level=level,
format='%(asctime)s %(levelname)s:%(message)s')
logging.getLogger(__name__)
logging.debug('Starting SocialMediaBroadcaster.')
config = configparser.ConfigParser()
config.read('config.ini')
intervall = config.get('General', 'timer', fallback='0')
intervall = int(intervall)
mysql_user = config.get('MySQL', 'username')
mysql_pw = config.get('MySQL', 'password')
mysql_host = config.get('MySQL', 'host')
mysql_db = config.get('MySQL', 'database')
mysql_cn = mysql.connector.connect(user=mysql_user, password=mysql_pw,
host=mysql_host, database=mysql_db)
mysql_cr = mysql_cn.cursor()
for sections in config.sections():
if (config.has_option(sections, 'plugin') and
config.get(sections, 'plugin')):
if config.get(sections, 'plugin') == 'rssfeed':
url = config.get(sections, 'url')
rss = modules.rssfeed.RSSFeed(url)
section_name = sections.lower()
rss_entries = rss.check_article_update(section_name, intervall)
rss_tbl_name = 'rss_' + section_name
if rss_entries:
for rss_title, rss_entry in rss_entries.items():
insert_feed = ("""
INSERT INTO {0}
({0}.title, {0}.url, {0}.time)
VALUES (%s, %s, %s)
""").format(rss_tbl_name)
entry_time = time.strftime('%Y-%m-%d %H:%M:%S',
rss_entry[2])
mysql_cr.execute(insert_feed, (rss_title, rss_entry[0],
entry_time))
mysql_cn.commit()
rss_feed_id = mysql_cr.lastrowid
if config.has_section('Twitter'):
access_key = config.get('Twitter', 'ACCESS_KEY')
access_secret = config.get('Twitter',
'ACCESS_SECRET')
prefix = config.get('Twitter', 'prefixmsg',
fallback='')
suffix = config.get('Twitter', 'suffixmsg',
fallback='')
twitter = \
socialplugins.twitter.Twitter(access_key,
access_secret,
prefix,
suffix)
message = twitter.make_message(rss_title,
rss_entry[0])
twitter.send_message(message, rss_tbl_name,
rss_feed_id)
if config.has_section('GNUSocial'):
username = config.get('GNUSocial', 'username')
password = config.get('GNUSocial', 'password')
prefix = config.get('GNUSocial', 'prefixmsg',
fallback='')
suffix = config.get('GNUSocial', 'suffixmsg',
fallback='')
gnu_url = config.get('GNUSocial', 'url')
gnusocial = \
socialplugins.gnusocial.GNUSocial(gnu_url,
username,
password,
prefix,
suffix)
message = gnusocial.make_message(rss_title,
rss_entry[0])
gnusocial.send_message(message, rss_tbl_name,
rss_feed_id)
def parse():
parser = argparse.ArgumentParser()
parser.add_argument('-l', '--log', metavar='level', action='store',
default='INFO',
choices=['debug', 'info', 'warning',
'error', 'critical'],
help='Set the level of the logs. (%(choices)s)')
parser.add_argument('-s', '--stats', action='store_true',
help='Print some data statistics from the Database')
opts = parser.parse_args()
return opts
if __name__ == "__main__":
main()