Advertisement
Guest User

Untitled

a guest
Dec 26th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.65 KB | None | 0 0
  1. import requests
  2. import getpass
  3. from lxml import html
  4. from datetime import datetime
  5.  
  6. currentYear = datetime.now().strftime('%Y')
  7. currentMonth = datetime.now().strftime('%B')
  8.  
  9. login_url = "https://www.xda-developers.com/portal-login"
  10. template = "https://www.xda-developers.com/wp-admin/edit.php"
  11. body = "https://www.xda-developers.com/wp-admin/edit.php?s&post_status=all&post_type=post&author="
  12. month_datestamp = "&action=-1&m="
  13.  
  14. MONTHS = {
  15.     "0": "All",
  16.     "01": "January",
  17.     "02": "February",
  18.     "03": "March",
  19.     "04": "April",
  20.     "05": "May",
  21.     "06": "June",
  22.     "07": "July",
  23.     "08": "August",
  24.     "09": "September",
  25.     "10": "October",
  26.     "11": "November",
  27.     "12": "December"
  28. }
  29.  
  30. def get_count(session_requests, url, pattern):
  31.     result = session_requests.get(url, headers = dict(referer = url))
  32.     tree = html.fromstring(result.content)
  33.     return len(tree.xpath(pattern))
  34.  
  35. def main():
  36.     session_requests = requests.session()
  37.  
  38.     payload = {
  39.         "log": username,
  40.         "pwd": password
  41.     }
  42.  
  43.     result = session_requests.post(login_url, data = payload, headers = dict(referer = login_url))
  44.  
  45.     result = session_requests.get(template, headers = dict(referer = template))
  46.  
  47.     tree = html.fromstring(result.content)
  48.     author_name = tree.xpath("//span[@class='display-name']/text()")
  49.     author_id = tree.xpath("//div[@class='post_author']/text()")
  50.  
  51.     url = (body + author_id[0] + month_datestamp + currentYear + y)
  52.  
  53.     result = session_requests.get(url, headers = dict(referer = url))
  54.     tree = html.fromstring(result.content)
  55.  
  56.     article_count = tree.xpath("//span[@class='displaying-num']/text()")
  57.     page_count = tree.xpath("//span[@class='total-pages']/text()")
  58.  
  59.     forumlink_count = sum([
  60.         get_count(session_requests, "{}/{}".format(url, i + 1), "//a[text()='Forum Links']")
  61.         for i in range(int(page_count[0]))
  62.     ])
  63.     minixda_count = sum([
  64.         get_count(session_requests, "{}/{}".format(url, i + 1), "//a[text()='Mini XDA']")
  65.         for i in range(int(page_count[0]))
  66.     ])
  67.     fullxda_count = sum([
  68.         get_count(session_requests, "{}/{}".format(url, i + 1), "//a[text()='Full XDA']")
  69.         for i in range(int(page_count[0]))
  70.     ])
  71.     minireview_count = sum([
  72.         get_count(session_requests, "{}/{}".format(url, i + 1), "//a[text()='XDA Mini Reviews']")
  73.         for i in range(int(page_count[0]))
  74.     ])
  75.     fullreview_count = sum([
  76.         get_count(session_requests, "{}/{}".format(url, i + 1), "//a[text()='XDA Full Review']")
  77.         for i in range(int(page_count[0]))
  78.     ])
  79.     drafts_count = sum([
  80.         get_count(session_requests, "{}/{}".format(url, i + 1), "//a[text()='Draft, ']")
  81.         for i in range(int(page_count[0]))
  82.     ])
  83.  
  84.     price = (forumlink_count * 6) + (minixda_count * 12) + (fullxda_count * 27) + (minireview_count * 60) + (fullreview_count * 100)
  85.  
  86.     print("Hello,", author_name[0])
  87.     print("Calculating payment for month:", MONTHS[y], currentYear)
  88.     print("Current date is:", currentMonth, currentYear)
  89.     print("You have", article_count[0][0:3], "articles over", page_count[0], "pages.")
  90.     print("You wrote", forumlink_count, "Forum Links,", minixda_count, "Mini XDAs,", fullxda_count, "Full XDAs,", minireview_count, "Mini Reviews, and", fullreview_count, "Full Reviews.")
  91.     print("You have", drafts_count, "drafts.")
  92.     print("You deserve $" + str(price), "for your work in", MONTHS[y] + ", good job!")
  93.  
  94. y = input("Select date: ")
  95.  
  96. username = input("Username: ")
  97. password = getpass.getpass("Password: ")
  98.  
  99. def checkDate():
  100.     if y in MONTHS:
  101.         main()
  102.     else:
  103.         print("Wrong date")
  104.  
  105. checkDate()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement