Advertisement
chino

pastebin.py

Mar 14th, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.95 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. # coding: utf-8
  3. #
  4. # https://np.ir1s.com/
  5. #
  6.  
  7. import os
  8. from getpass import getpass
  9. import requests
  10. import sys
  11.  
  12. base_url = 'https://pastebin.com/api/api_post.php'
  13. dev_key = 'Your Unique Developer API Key. See here https://pastebin.com/api'
  14. login_base_url = 'https://pastebin.com/api/api_login.php'
  15.  
  16. __doc__ = """
  17. Usage:
  18.    {file} <file> If you don't use options, the file will be uploaded as gest.
  19.    {file} [-f | --file] [-t | --title] [-s | --syntax] [-e | --expire] [-l | --login] [-p | --private]
  20.    {file} [-h | --help]
  21.  
  22. Options:
  23.    -f --file <file>        File you want to paste to Pastebin.com
  24.    -t --title <string>     The name or title of your paste
  25.    -s --syntax <string>    Your paste format.
  26.    -e --expire <string>    The expiration date of your paste.
  27.                            N = Never, 10M = 10 mins, 1H = 1 hour, 1D = 1 day, 2W = 2 weeks,
  28.                            1M = 1 month, 6M = 6 months, 1Y = 1 year.
  29.    -l --login <int>        You login and your paste belongs to your account.
  30.    -p --private <int>      1 -> Private, 2 -> Unlisted, 0 -> Public. (Default:0)
  31.  
  32. Examples:
  33.    {file} test.php
  34.    {file} -f ~/test.php -t test.php -s php -e 10M -l -p 1
  35. """.format(file=__file__)
  36.  
  37.  
  38. def Login():
  39.     info = {'api_dev_key': dev_key, 'api_user_name': '', 'api_user_password':''}
  40.  
  41.     info['api_user_name'] = input('User Name: ')
  42.     info['api_user_password'] = getpass()
  43.  
  44.     raw_resp = requests.post(login_base_url, info)
  45.     resp = raw_resp.text
  46.  
  47.     if resp.find('Bad') != -1 :
  48.         print(resp)
  49.         exit()
  50.    
  51.     # User Key
  52.     return resp
  53.  
  54. def parse():
  55.     argv = sys.argv
  56.     argc = len(argv)
  57.  
  58.     info = {'api_dev_key':dev_key}
  59.  
  60.     if(argc < 2):
  61.         print(__doc__)
  62.         exit()
  63.  
  64.     # did the user input -h?
  65.     if(argc == 2):
  66.         if('-h' in argv or '--help' in argv):
  67.             print(__doc__)
  68.             exit()
  69.         else: # Paste
  70.             if(os.path.exists(argv[1]) == False): # ファイルが存在しない
  71.                 print('{} doesn\'nt exist.'.format(argv[1]))
  72.                 print(__doc__)
  73.                 exit()
  74.  
  75.     # Get paste text when user didn't use option -h
  76.     for i in argv:
  77.         if(os.path.exists(i) == True):
  78.             with open(i, 'r') as f:
  79.                 info['api_paste_code'] = f.read()
  80.  
  81.     # Paste text
  82.     if('-f' in argv or '--file' in argv):
  83.         index = 0
  84.         if('-f' in argv):
  85.             index = argv.index('-f') + 1
  86.         if('--file' in argv):
  87.             index = argv.index('--file') + 1
  88.         with open(argv[index], 'r') as f:
  89.             info['api_paste_code'] = f.read()
  90.  
  91.     q = (lambda c: argv.index(c) + 1)
  92.     # Paste title
  93.     if('-t' in argv or '--title' in argv):
  94.         if('-t' in argv):
  95.             info['api_paste_name'] = argv[q('-t')]
  96.         if('--title' in argv):
  97.             info['api_paste_name'] = argv[q('--title')]
  98.  
  99.     # Paste format
  100.     if('-s' in argv or '--syntax' in argv):
  101.         if('-s' in argv):
  102.             info['api_paste_format'] = argv[q('-s')]
  103.         if('--syntax' in argv):
  104.             info['api_paste_format'] = argv[q('--syntax')]
  105.  
  106.     # Paste expire
  107.     if('-e' in argv or '--expire' in argv):
  108.         if('-e' in argv):
  109.             info['api_paste_expire_date'] = argv[q('-e')]
  110.         if('--expire' in argv):
  111.             info['api_paste_expire_date'] = argv[q('--expire')]
  112.  
  113.     # login
  114.     if('-l' in argv or '--login' in argv):
  115.         info['api_user_key'] = Login()
  116.    
  117.     # Private, unlisted or listed
  118.     if('-p' in argv or '--private' in argv):
  119.         if('-p' in argv):
  120.             info['api_paste_private'] = int(argv[q('-p')])
  121.         if('--private' in argv):
  122.             info['api_paste_private'] = int(argv[q('--private')])
  123.  
  124.     info['api_option'] = 'paste'
  125.  
  126.     return info
  127.  
  128. if __name__ == '__main__':
  129.     info = parse()
  130.    
  131.     raw_resp = requests.post(base_url, info)
  132.     resp = raw_resp.text
  133.  
  134.     print(resp)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement