summaryrefslogtreecommitdiff
path: root/Content
diff options
context:
space:
mode:
authorNavan Chauhan <navanchauhan@gmail.com>2021-06-25 02:25:43 +0530
committerNavan Chauhan <navanchauhan@gmail.com>2021-06-25 02:25:43 +0530
commiteced1cf2687682e9c0216d9fc92c1d05990f8d5a (patch)
tree4b5c0d331ebb9722ccbb4d40785b75ceac77a2ff /Content
parentb2545899a4170409733bf2757de8d0a878ae20f4 (diff)
added blog32twitter
Diffstat (limited to 'Content')
-rw-r--r--Content/posts/2021-06-25-Blog2Twitter-P1.md98
1 files changed, 98 insertions, 0 deletions
diff --git a/Content/posts/2021-06-25-Blog2Twitter-P1.md b/Content/posts/2021-06-25-Blog2Twitter-P1.md
new file mode 100644
index 0000000..3c9bb83
--- /dev/null
+++ b/Content/posts/2021-06-25-Blog2Twitter-P1.md
@@ -0,0 +1,98 @@
+---
+date: 2021-06-25 00:08
+description: Converting Posts to Twitter Threads
+tags: Python, Twitter, Eh
+---
+
+# Posting Blog Posts as Twitter Threads Part 1/n
+
+Why? Eh, no good reason, but should be fun.
+
+## Plan of Action
+
+I recently shifted my website to a static site generator I wrote specifically for myself.
+Thus, it should be easy to just add a feature into it to check for new posts, split the text into chunks for Twitter threads and post them on Twitter.
+I am not handling lists or images right now.
+
+## Time to Code
+
+First, the dependency: tweepy for tweeting.
+
+`pip install tweepy`
+
+```python
+import os
+import tweepy
+
+consumer_key = os.environ["consumer_key"]
+consumer_secret = os.environ["consumer_secret"]
+
+access_token = os.environ["access_token"]
+access_token_secret = os.environ["access_token_secret"]
+
+auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
+auth.set_access_token(access_token, access_token_secret)
+
+api = tweepy.API(auth)
+```
+
+The program need to convert the blog post into text fragments.
+
+It reads the markdown file, removes the top YAML content, checks for headers and splits the content.
+
+```python
+tweets = []
+
+first___n = 0
+
+with open(sample_markdown_file) as f:
+ for line in f.readlines():
+ if first___n <= 1:
+ if line == "---\n":
+ first___n += 1
+ continue
+ line = line.strip()
+ line += " "
+ if "#" in line:
+ line = line.replace("#","")
+ line.strip()
+ line = "\n" + line
+ line += "\n\n"
+ try:
+ if len(tweets[-1]) < 260 and (len(tweets[-1]) + len(line)) <= 260:
+ tweets[-1] += line
+ else:
+ tweets.append(line)
+ except IndexError:
+ if len(line) > 260:
+ print("ERROR")
+ else:
+ tweets.append(line)
+```
+
+Every status update using tweepy has an id attached to it, for the next tweet in the thread, it add that ID while calling the function.
+
+For every tweet fragment, it also append 1/n.
+
+```python
+for idx, tweet in enumerate(tweets):
+ tweet += " {}/{}".format(idx+1,len(tweets))
+ if idx == 0:
+ a = None
+ a = api.update_status(tweet)
+ else:
+ a = api.update_status(tweet,in_reply_to_status_id=a.id)
+ print(len(tweet),end=" ")
+ print("{}/{}\n".format(idx+1,len(tweets)))
+```
+
+Finally, it replies to the last tweet in the thread with the link of the post.
+
+```python
+api.update_status("Web Version: {}".format(post_link))
+```
+
+## What's Next?
+
+For the next part, I will try to append the code as well.
+I actually added the code to this post after running the program. \ No newline at end of file