working xpost ML

This commit is contained in:
wassname
2020-01-23 07:39:32 +08:00
parent c379fa39d8
commit f81c100fbf
+68 -14
View File
@@ -1,10 +1,12 @@
import praw
import logging
import requests
import bs4
import html2text
import time, os
import bmemcached
import re
from prawcore import NotFound
# from https://github.com/arxiv-vanity/arxiv-vanity/blob/master/arxiv_vanity/scraper/arxiv_ids.py
ARXIV_ID_PATTERN = r'([a-z\-]+(?:\.[A-Z]{2})?/\d{7}|\d+\.\d+)(v\d+)?'
@@ -28,7 +30,10 @@ def get_bot():
r = get_bot()
subreddit = r.subreddit('machinelearning')
target_subreddit = r.subreddit('mlresearch')
if r.read_only == False:
print("Connected and running.")
# alreadydone = set()
@@ -55,29 +60,78 @@ def scrape_arxiv(arxiv_id):
def comment(cache):
print(time.asctime(), "searching")
# print(time.asctime(), "searching")
try:
all_posts = subreddit.new(limit=100)
for post in all_posts:
match = ARXIV_URL_RE.search(post.url)
if match:
arxiv_id = match.group(1)
if cache.get(post.id) and cache.get(post.id) is 'T':
print "Parsed this post already: %s"%(post.permalink)
continue
for comment in post.comments:
if str(comment.author) == 'arXiv_abstract_bot':
break
else:
response = scrape_arxiv(arxiv_id)
post.reply(response)
cache.set(post.id, 'T')
print "Parsed post: %s"%(post.permalink)
print(arxiv_id, response)
time.sleep(10)
# crosspost
print('found', arxiv_id)
xpost(['r/researchml'], post)
# if cache.get(post.id) and cache.get(post.id) is 'T':
# print "Parsed this post already: %s"%(post.permalink)
# continue
# for comment in post.comments:
# if str(comment.author) == 'arXiv_abstract_bot':
# break
# else:
# response = scrape_arxiv(arxiv_id)
# post.reply(response)
# cache.set(post.id, 'T')
# print "Parsed post: %s"%(post.permalink)
# print(arxiv_id, response)
# time.sleep(10)
except Exception as error:
print(error)
def xpost(subs, originalpost):
# originalpost = where.submission
newtitle = "(X-Post r/" + str(originalpost.subreddit.display_name) + ") " + originalpost.title
print("New post: " + str(newtitle))
link = "https://www.reddit.com" + str(originalpost.permalink)
workedsubs = []
failedsubs = []
wasError = False
for workingsub in subs:
exists = True
try:
r.subreddits.search_by_name(workingsub[2:], exact=True)
except NotFound:
logging.error("Failed to post")
exists = False
if exists == True:
subreddit = r.subreddit(workingsub[2:])
try:
subreddit.submit(newtitle, url=link, resubmit=True, send_replies=False)
workedsubs.append(str(workingsub))
print("Posting: " + str(newtitle) + " to " + str(workingsub))
except praw.exceptions.APIException:
logging.error("Failed to post")
wasError = True
break
else:
failedsubs.append(str(workingsub))
if not wasError:
print(workedsubs,failedsubs)
# reply(workedsubs,failedsubs,where)
pass
else:
response = ""
if workedsubs:
response = "I was able to crosspost in "
for i in workedsubs:
response = response + str(i) + " and "
response = response[:-5] + ", but I was rate-limited on the others."
print(response)
else:
response = "Sorry, I was rate-limited, and I couldn't post."
print(response)
# where.reply(str(response) + " Make sure to give me karma to prevent that in the future.")
def get_memcache_client():
# Store IDs of comments that the bot has already replied to.