import
tweepy
import
json
from
datetime
import
date, timedelta, datetime
from
pymongo
import
MongoClient
from
html.parser
import
HTMLParser
import
re
from
pyshorteners
import
Shortener
NewsArrayIndex
=
0
NewsArray
=
[
None
]
*
3
class
MyHTMLParser(HTMLParser):
def
handle_starttag(
self
, tag, attrs):
global
NewsArrayIndex
if
tag
=
=
"a"
:
for
name, value
in
attrs:
if
name
=
=
"href"
:
NewsArray[NewsArrayIndex]
=
value
NewsArrayIndex
+
=
1
def
tweetDailyNews():
try
:
cursor_P
=
db1.Coll_DailyNewsPlusReview.find({
"time"
: date_str})
p0
=
cursor_P[
0
]
News
=
p0.get(
'News'
)
sortedNews
=
sorted
(News, key
=
lambda
x:
int
(x[
1
]), reverse
=
True
)
print
(sortedNews[
0
][
0
]
+
"--"
+
sortedNews[
0
][
1
],
sortedNews[
1
][
0
]
+
".."
+
sortedNews[
1
][
1
],
sortedNews[
2
][
0
]
+
".."
+
sortedNews[
2
][
1
])
hyperlink_format
=
'<a href ="{link}">{text}</a>'
parser
=
MyHTMLParser()
dailyNews
=
"Impactful News of the Day"
+
"\n"
News0
=
sortedNews[
0
][
2
]
parser.feed(hyperlink_format.
format
(link
=
News0, text
=
News0))
News1
=
sortedNews[
1
][
2
]
print
(
"News1"
, News1)
parser.feed(hyperlink_format.
format
(link
=
News1, text
=
News1))
News2
=
sortedNews[
2
][
2
]
print
(News2)
parser.feed(hyperlink_format.
format
(link
=
News2, text
=
News2))
BITLY_ACCESS_TOKEN
=
"20dab258cc44c7d017bcd1c1f4b24484a37b8de9"
b
=
Shortener(api_key
=
ACCESS_TOKEN)
NewsArray[
0
]
=
re.sub(
'\n'
, '', NewsArray[
0
])
response1
=
b.bitly.short(NewsArray[
0
])
response1
=
response1[
'url'
]
NewsArray[
1
]
=
re.sub(
'\n'
, '', NewsArray[
1
])
response2
=
b.bitly.short(NewsArray[
1
])
response2
=
response2[
'url'
]
NewsArray[
2
]
=
re.sub(
'\n'
, '', NewsArray[
2
])
response3
=
b.bitly.short(NewsArray[
2
])
response3
=
response3[
'url'
]
news1FewWords
=
sortedNews[
0
][
0
].split()
dailyNews
+
=
news1FewWords[
0
]
+
" "
+
news1FewWords[
1
]
+
" "
+
news1FewWords[
2
]
+
"...."
+
response1
+
"\n"
news2FewWords
=
sortedNews[
1
][
0
].split()
dailyNews
+
=
news2FewWords[
0
]
+
" "
+
news2FewWords[
1
]
+
" "
+
news2FewWords[
2
]
+
"...."
+
response2
+
"\n"
news3FewWords
=
sortedNews[
2
][
0
].split()
dailyNews
+
=
news3FewWords[
0
]
+
" "
+
news3FewWords[
1
]
+
" "
+
news3FewWords[
2
]
+
"...."
+
response3
+
"\n"
+
"
print
(dailyNews)
status
=
api.update_status(status
=
dailyNews)
if
status:
for
i
in
range
(
3
):
datas
=
{}
datas[
'time'
]
=
str
(date.today())
datas[
'posted_as'
]
=
i
datas[
'news'
]
=
sortedNews[i][
0
]
datas[
'shortenedlink'
]
=
NewsArray[i]
datas[
'reviewcount'
]
=
sortedNews[i][
1
]
datas[
'link'
]
=
sortedNews[i][
2
]
db1.Collection_tweeted_news.insert(datas)
except
Exception as e:
print
(e)
print
(
"Error in getting today news data"
,
str
(date_str))
News1
=
' '
News2
=
' '
date_str
=
str
(date.today())
print
(
"today"
, date_str)
db1
=
client.xxxx
consumer_key
=
"xxxx"
consumer_secret
=
"xxxx"
access_token
=
"xxxx"
access_token_secret
=
"xxxx"
auth
=
tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api
=
tweepy.API(auth,
wait_on_rate_limit
=
True
,
wait_on_rate_limit_notify
=
True
)
tweetDailyNews()