def main(): passage = get_market_alerts() # Send a message to a chat room (chat room ID retrieved from getUpdates) if (passage): #bot_sender.broadcast(passage) bot_sender.broadcast_list(passage, "telegram-fx")
def main(): passage = get_analysis("BABA") print(passage) print(get_analysis("BA1BA")) bot_sender.broadcast_list(passage)
def push_posts_list(plist, tg_group, excerpt=False): rkey = "HOMEBLOGGER:BLOGS" print(rkey) json_arr = redis_pool.getV(rkey) posts_list = [] messages_list = [] new_posts_list = [] if (json_arr): print("Posts Redis Cache exists for [%s]" % rkey) json_arr = json_arr.decode() posts_list = json.loads(json_arr) print("Loaded Posts List %s" % posts_list) get_count = GET_POSTS_COUNT else: get_count = NEW_POSTS_COUNT for post in plist[:get_count]: purl = post[0] ptitle = "%s" % (post[1]) pid = purl.split("=")[-1] #print("pid %s" % pid) if (pid in posts_list): print("Post ID [%s] is OLD! Skip sending...." % (pid)) else: print("Post ID [%s] is NEW! Prepare for sending...." % (pid)) new_posts_list.append(pid) message = ptitle + DEL message = message + purl #print(message) messages_list.append(message) print("BEFORE Post List %s" % posts_list) posts_list = new_posts_list + posts_list print("AFTER Posts List %s" % posts_list) print("AFTER Posts List (Limited) %s" % posts_list[:NEW_POSTS_COUNT]) new_json_arr = json.dumps(posts_list[:NEW_POSTS_COUNT]) redis_pool.setV(rkey, new_json_arr) send_count = 1 for msg in messages_list: if (send_count == 1): msg = u'\U0001F4F0' + " <b>HomeBlogger Posts Updates</b>" + DEL + msg print("Msg sent: [%s]" % msg) bot_sender.broadcast_list(msg, tg_group) send_count = send_count + 1
def push_posts_list(group, pdict, tg_group, excerpt=False): rkey = "FB:" + group json_arr = redis_pool.getV(rkey) posts_list = [] messages_list = [] new_posts_list = [] if (json_arr): print("Posts Redis Cache exists for [%s]" % rkey) json_arr = json_arr.decode() posts_list = json.loads(json_arr) print("Loaded Posts List %s" % posts_list) get_count = GET_POSTS_COUNT else: get_count = NEW_POSTS_COUNT for key in pdict: #'https://m.facebook.com/story.php?story_fbid=4210050162362435&id=223783954322429' pid = key.split('=')[-2].split('&')[0] if (pid in posts_list): print("Post ID [%s] is OLD! Skip sending...." % (pid)) else: print("Post ID [%s] is NEW! Prepare for sending...." % (pid)) new_posts_list.append(pid) url = key if (excerpt): message = pdict[key] + DEL message = message + url else: message = url messages_list.append(message) #print("BEFORE Post List %s" % posts_list) posts_list = new_posts_list + posts_list #print("AFTER Posts List %s" % posts_list) #print("AFTER Posts List (Limited) %s" % posts_list[:NEW_POSTS_COUNT]) new_json_arr = json.dumps(posts_list[:NEW_POSTS_COUNT]) redis_pool.setV(rkey, new_json_arr) send_count = 1 for msg in messages_list: if (send_count == 1): msg = u'\U0001F4F0' + " <b>Latest Posts Updates</b>" + DEL + msg print("Msg sent: [%s]" % msg) bot_sender.broadcast_list(msg, tg_group) send_count = send_count + 1
def push_rss(repo_list, tg_group): for rss in repo_list: passage = get_rss_alerts_with_redis(rss) if (passage): print(passage) #if 'lpt' in tg_group or 'zerohedge' in tg_group: if 'lpt' in tg_group: bot_sender.broadcast_list(passage, tg_group, False) else: bot_sender.broadcast_list(passage, tg_group)
def push_posts_list(group, plist, tg_group, excerpt=False): rkey = "FB:" + group json_arr = redis_pool.getV(rkey) posts_list = [] messages_list = [] new_posts_list = [] if (json_arr): print("Posts Redis Cache exists for [%s]" % rkey) json_arr = json_arr.decode() posts_list = json.loads(json_arr) print("Loaded Posts List %s" % posts_list) get_count = GET_POSTS_COUNT else: get_count = NEW_POSTS_COUNT for pid in plist[:get_count]: if (pid in posts_list): print("Post ID [%s] is OLD! Skip sending...." % (pid)) else: print("Post ID [%s] is NEW! Prepare for sending...." % (pid)) new_posts_list.append(pid) url = "https://www.facebook.com/%s/posts/%s" % (group, pid) if (excerpt): message = get_post_content(url) + DEL message = message + url else: message = url messages_list.append(message) #print("BEFORE Post List %s" % posts_list) posts_list = new_posts_list + posts_list #print("AFTER Posts List %s" % posts_list) #print("AFTER Posts List (Limited) %s" % posts_list[:NEW_POSTS_COUNT]) new_json_arr = json.dumps(posts_list[:NEW_POSTS_COUNT]) redis_pool.setV(rkey, new_json_arr) send_count = 1 for msg in messages_list: if (send_count == 1): msg = u'\U0001F4F0' + " <b>Latest Posts Updates</b>" + DEL + msg print("Msg sent: [%s]" % msg) bot_sender.broadcast_list(msg, tg_group) send_count = send_count + 1
def push_posts_list(group, btitle, plist, tlist, tg_group): rkey = "WB:" + group json_arr = redis_pool.getV(rkey) posts_list = [] messages_list = [] new_posts_list = [] if (json_arr): print("Posts Redis Cache exists for [%s]" % rkey) json_arr = json_arr.decode() posts_list = json.loads(json_arr) print("Loaded Posts List %s" % posts_list) get_count = GET_POSTS_COUNT else: get_count = NEW_POSTS_COUNT #get_count = 1 for idx, pid in enumerate(plist[:get_count]): if (pid in posts_list): print("Post ID [%s] is OLD! Skip sending...." % (pid)) else: print("Post ID [%s] is NEW! Prepare for sending...." % (pid)) new_posts_list.append(pid) url = "https://m.weibo.cn/status/%s" % (pid) message = tlist[idx] + DEL message = message + url messages_list.append(message) #print("BEFORE Post List %s" % posts_list) posts_list = new_posts_list + posts_list #print("AFTER Posts List %s" % posts_list) #print("AFTER Posts List (Limited) %s" % posts_list[:NEW_POSTS_COUNT]) new_json_arr = json.dumps(posts_list[:NEW_POSTS_COUNT]) redis_pool.setV(rkey, new_json_arr) send_count = 1 for msg in messages_list: if (send_count == 1): msg = u'\U0001F4F0' + (" <b>Latest Weibo for</b> %s" % btitle) + DEL + msg print("Msg sent: [%s]" % msg) bot_sender.broadcast_list(msg, tg_group) send_count = send_count + 1
def main(args): if (len(args) > 1): if (args[1] == "gen_daily"): passage = "Major Market Events for today" + "\n\n" + get_fx_calendar( ) bot_sender.broadcast_list(passage, "telegram-chart") elif (args[1] == "gen_hourly"): passage = get_fx_calendar_notice() if (passage): passage = u'\U0001F514' + "Market Events Alerts" + u'\U0001F514' + "\n\n" + passage bot_sender.broadcast_list(passage, "telegram-fx") else: print("OPTS: gen_daily | gen_hourly")
def push_posts_list(group, plist, tg_group): rkey = "ZH:" + group json_arr = redis_pool.getV(rkey) posts_list = [] messages_list = [] new_posts_list = [] if (json_arr): print("Posts Redis Cache exists for [%s]" % rkey) json_arr = json_arr.decode() posts_list = json.loads(json_arr) print("Loaded Posts List %s" % posts_list) get_count = GET_POSTS_COUNT else: get_count = NEW_POSTS_COUNT for post in plist[:get_count]: pid = post['url'].split("/")[-1] if (pid in posts_list): print("Post ID [%s] is OLD! Skip sending...." % (pid)) else: print("Post ID [%s] is NEW! Prepare for sending...." % (pid)) new_posts_list.append(pid) message = "%s\n%s" % (post['title'], post['url']) messages_list.append(message) print("BEFORE Post List %s" % posts_list) posts_list = new_posts_list + posts_list print("AFTER Posts List %s" % posts_list) print("AFTER Posts List (Limited) %s" % posts_list[:NEW_POSTS_COUNT]) new_json_arr = json.dumps(posts_list[:NEW_POSTS_COUNT]) redis_pool.setV(rkey, new_json_arr) send_count = 1 for msg in messages_list: if (send_count == 1): msg = u'\U0001F4F0' + " <b>Latest Zhihu Updates</b>" + DEL + msg print("Msg sent: [%s]" % msg) bot_sender.broadcast_list(msg, tg_group) send_count = send_count + 1
def send_news(cat): passages = news(cat) #print(passages) #return rkey = "NEWS:NOWTV:%s" % cat json_arr = redis_pool.getV(rkey) posts_list = [] messages_list = [] new_posts_list = [] if (json_arr): print("Posts Redis Cache exists for [%s]" % rkey) json_arr = json_arr.decode() posts_list = json.loads(json_arr) print("Loaded Posts List %s" % posts_list) get_count = GET_POSTS_COUNT else: get_count = NEW_POSTS_COUNT for passage in passages[:get_count]: pid = passage[0] purl = passage[1] if (pid in posts_list): print("Post ID [%s] is OLD! Skip sending...." % (pid)) else: print("Post ID [%s] is NEW! Prepare for sending...." % (pid)) [subject, content, dtime] = news_detail(purl) #print(subject) #print(content) hashtag = "#%s" % cat ptext = " <a href='%s'>%s</a>" % (purl, subject) ptext = ptext + DEL + hashtag + " " + content.replace(EL, DEL) + DEL + dtime new_posts_list.append(pid) #bot_sender.broadcast_list(ptext, url_preview=False) bot_sender.broadcast_list(ptext, "telegram-channel", url_preview=False) #print("BEFORE Post List %s" % posts_list) posts_list = new_posts_list + posts_list #print("AFTER Posts List %s" % posts_list) #print("AFTER Posts List (Limited) %s" % posts_list[:NEW_POSTS_COUNT]) new_json_arr = json.dumps(posts_list[:NEW_POSTS_COUNT]) redis_pool.setV(rkey, new_json_arr)
def main(args): passages = news() #print(passages) #return rkey = "NEWS:MGELONGHUI" #rkey = "NEWS:MGELONGHUI:TEST" json_arr = redis_pool.getV(rkey) posts_list = [] messages_list = [] new_posts_list = [] if (json_arr): print("Posts Redis Cache exists for [%s]" % rkey) json_arr = json_arr.decode() posts_list = json.loads(json_arr) print("Loaded Posts List %s" % posts_list) get_count = GET_POSTS_COUNT else: get_count = NEW_POSTS_COUNT for passage in passages[:get_count]: pid = passage[0] purl = passage[1] if (pid in posts_list): print("Post ID [%s] is OLD! Skip sending...." % (pid)) else: print("Post ID [%s] is NEW! Prepare for sending...." % (pid)) subject = news_subject(purl) ptext = u'\U0001F3E0' + " <a href='%s'>%s</a>" % (purl, subject) new_posts_list.append(pid) #bot_sender.broadcast_list(ptext, url_preview=False) bot_sender.broadcast_list(ptext, "telegram-zerohedge", url_preview=False) #print("BEFORE Post List %s" % posts_list) posts_list = new_posts_list + posts_list #print("AFTER Posts List %s" % posts_list) #print("AFTER Posts List (Limited) %s" % posts_list[:NEW_POSTS_COUNT]) new_json_arr = json.dumps(posts_list[:NEW_POSTS_COUNT]) redis_pool.setV(rkey, new_json_arr)
def main(args): passages = news() #print(passages) rkey = "NEWS:GELONGHUI" json_arr = redis_pool.getV(rkey) posts_list = [] messages_list = [] new_posts_list = [] if (json_arr): print("Posts Redis Cache exists for [%s]" % rkey) json_arr = json_arr.decode() posts_list = json.loads(json_arr) print("Loaded Posts List %s" % posts_list) get_count = GET_POSTS_COUNT else: get_count = NEW_POSTS_COUNT for passage in passages[:get_count]: pid = passage[0] ptext = passage[1] if (pid in posts_list): print("Post ID [%s] is OLD! Skip sending...." % (pid)) else: print("Post ID [%s] is NEW! Prepare for sending...." % (pid)) print(ptext) new_posts_list.append(pid) #bot_sender.broadcast_list(ptext) bot_sender.broadcast_list(ptext, "telegram-zerohedge") #print("BEFORE Post List %s" % posts_list) posts_list = new_posts_list + posts_list #print("AFTER Posts List %s" % posts_list) #print("AFTER Posts List (Limited) %s" % posts_list[:NEW_POSTS_COUNT]) new_json_arr = json.dumps(posts_list[:NEW_POSTS_COUNT]) redis_pool.setV(rkey, new_json_arr)
def main(args): #return rkey = "BLOG:SKYCHEUNG" lasthash = redis_pool.getV(rkey) if (lasthash): print("Last Redis Cache exists for [%s]" % rkey) print("Loaded Last Hash: %s" % lasthash) else: lasthash = b"" newhash, content = news() if (newhash == lasthash.decode()): print("Post ID [%s] is OLD! Skip sending...." % (newhash)) else: print("Post ID [%s] is NEW! Prepare for sending...." % (newhash)) #bot_sender.broadcast(content, is_test=False, url_preview=True) bot_sender.broadcast_list(content, "telegram-ptgroup", True) redis_pool.setV(rkey, newhash)
def main(): #print(get_gem_ipo_list()) #bot_sender.broadcast_list(get_gem_ipo_list()) bot_sender.broadcast_list(get_gem_ipo_list(), "telegram-excel")
def main(): passage = get_latest_news_by_code("MDB") print(passage) bot_sender.broadcast_list(passage)
def main(): """Shows basic usage of the Gmail API. Lists the user's Gmail labels. """ creds = None # The file token.pickle stores the user's access and refresh tokens, and is # created automatically when the authorization flow completes for the first # time. if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) # If there are no (valid) credentials available, let the user log in. if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( '/root/google/credentials.json', SCOPES) creds = flow.run_local_server(port=0) # Save the credentials for the next run with open('token.pickle', 'wb') as token: pickle.dump(creds, token) service = build('gmail', 'v1', credentials=creds) # Call the Gmail API result = service.users().messages().list(userId='me', labelIds=[ 'Label_1352622790776435189' ], maxResults=10).execute() #print(result) msgid_list = [] for message in result['messages']: #print(message) print("message id - %s" % message['id']) msgid_list.append(message['id']) print("message list [%s]" % msgid_list) redis_key = 'GMAIL:TRADEPA' #redis_key = 'GMAIL:TRADEPA:TEST' msgid_list = redis_helper.get_new_key_list(redis_key, msgid_list, 20, dryrun=False) print("message list - only new [%s]" % msgid_list) for msgid in msgid_list: content = service.users().messages().get(userId='me', id=msgid).execute() headers = content['payload']['headers'] subject = "" for header in headers: if header['name'] == 'Subject': subject = header['value'] #pp.pprint(content) if 'parts' in content['payload']: pp.pprint("I am in!!!") parts = content['payload']['parts'] part = parts[0] body = part['body'] txt = base64.b64decode(body['data'], '-_') soup = BeautifulSoup(txt) txt = ''.join(soup.findAll(text=True)) txt = txt.replace("\n", " ") while " " in txt: txt = txt.replace(" ", " ") txt = txt.replace("html ", "").replace(" end post-item 1", "") pp.pprint(txt) print("subject [%s], content [%s]" % (subject, txt)) ptext = u'\U0001F4E3' + " %s\n\n" % subject + txt bot_sender.broadcast_list(ptext, 'telegram-ptgroup') #print(ptext) bot_sender.broadcast_list(ptext, 'telegram-mm') #bot_sender.broadcast_list(ptext) # # only one body, no parts elif 'body' in content['payload']: body = content['payload']['body'] txt = base64.b64decode(body['data'], '-_') soup = BeautifulSoup(txt) txt = ''.join(soup.findAll(text=True)) txt = txt.replace("\n", " ") while " " in txt: txt = txt.replace(" ", " ") txt = txt.replace("html ", "").replace(" end post-item 1", "") #txt = content['snippet'] print("msgid[%s] subject [%s], content [%s]" % (msgid, subject, txt)) #print("subject [%s], content [%s]" % (subject, content.decode('utf-8'))) ptext = u'\U0001F4E3' + " PriceAlerts \n[%s]\n\n" % subject + txt #pp.pprint(ptext) bot_sender.broadcast_list(ptext, 'telegram-ptgroup') bot_sender.broadcast_list(ptext, 'telegram-mm')
def push_tweet(name, tcount=1, test=False, group="telegram-twitter"): sname = '@%s' % name rkey = "Twitter:" + name.lower() json_arr = redis_pool.getV(rkey) tweet_list = [] if (json_arr): print("Twitter Redis Cache exists for [%s]" % name) json_arr = json_arr.decode() tweet_list = json.loads(json_arr) print("Loaded Tweet List %s" % tweet_list) get_count = GET_TWEET_COUNT else: get_count = NEW_TWEET_COUNT try: statuses = API.GetUserTimeline(screen_name=sname, include_rts=False, exclude_replies=False, count=get_count) except: print("User Timeline Error: [%s]" % name) return messages_list = [] new_tweet_list = [] for s in reversed(statuses): if (str(s.id) in tweet_list): print("%s created at %s is OLD! Skip sending...." % (s.id, s.created_at)) else: source = (re.sub('<[^<]+?>', '', s.source)).strip() #if source == "IFTTT" and not ("Facebook" in s.full_text): # continue print("%s created at %s is NEW! Prepare for sending...." % (s.id, s.created_at)) new_tweet_list.append(str(s.id)) url = ('https://mobile.twitter.com/i/web/status/%s' % s.id) created = str(s.created_at) text = re.sub(r"\$([A-Za-z]+)", r"/qd\1", s.full_text) analysis = get_sentiment(s.full_text) message = "[%s] %s\n(<a href='%s'>%s</a>)" % ( analysis, text, url, created.split('+')[0] + "GMT") #message = "[%s] %s\n(%s)" % (analysis, text, created.split('+')[0] + "GMT") messages_list.append(message) print("BEFORE Tweet List %s" % tweet_list) tweet_list = list(reversed(new_tweet_list)) + tweet_list print("AFTER Tweet List %s" % tweet_list) print("AFTER Tweet List (LIMIT) %s" % tweet_list[:NEW_TWEET_COUNT]) new_json_arr = json.dumps(tweet_list[:NEW_TWEET_COUNT]) redis_pool.setV(rkey, new_json_arr) if messages_list: surl = "https://mobile.twitter.com/%s" % name smsg = "<pre>\n</pre>" + random.choice(LOADING) + ( "<a href='%s'>@%s</a> is Tweeting..." % (surl, name)) bot_sender.broadcast_list(smsg, group, url_preview=False) #messages_list.insert(0, "<pre>\n</pre>" + random.choice(LOADING) + "<b>@%s is Tweeting...</b>" % name) # zerohedge summary if name in ("zerohedge", "barronsonline", "xhnews"): #full_message = DEL.join(messages_list) #bot_sender.broadcast_list(full_message, group) #return up = False else: up = True #test=True for msg in messages_list: if (test): bot_sender.broadcast_list(msg) else: bot_sender.broadcast_list(msg, group, url_preview=up)
def main(): # us stock news for report in get_latest_reports(): print(report) bot_sender.broadcast_list(report, "telegram-notice")