Пример #1
0
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")
Пример #2
0
def main():

    passage = get_analysis("BABA")
    print(passage)
    print(get_analysis("BA1BA"))

    bot_sender.broadcast_list(passage)
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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)
Пример #6
0
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
Пример #7
0
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
Пример #8
0
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")
Пример #9
0
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
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
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)
Пример #14
0
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")
Пример #15
0
def main():

    passage = get_latest_news_by_code("MDB")
    print(passage)

    bot_sender.broadcast_list(passage)
Пример #16
0
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')
Пример #17
0
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)
Пример #18
0
def main():

    # us stock news
    for report in get_latest_reports():
        print(report)
        bot_sender.broadcast_list(report, "telegram-notice")