fpaste 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/env python
  2. import argparse
  3. import os.path
  4. import requests
  5. import sys
  6. parser = argparse.ArgumentParser(description='paste a file to paste.fedoraproject.org')
  7. parser.add_argument('filename', metavar='file', type=str, nargs='?',
  8. help='file to paste; if not specified, read from stdin')
  9. parser.add_argument('--language', '-l', dest='language',
  10. help='the language to use (default: Text if stdin, autodetect based on extension otherwise)')
  11. args = parser.parse_args()
  12. if args.filename is None:
  13. args.filename = ''
  14. f = sys.stdin
  15. if args.language is None:
  16. args.language = 'text'
  17. else:
  18. f = open(args.filename, 'r')
  19. args.filename = os.path.basename(args.filename)
  20. if args.language is None:
  21. r = requests.get('https://gist.github.com/detect_language',
  22. params={'filename': args.filename}, headers={'Accept': 'application/json'})
  23. language = r.json()['language']
  24. args.language = language.lower()
  25. content = f.read()
  26. data = {
  27. 'paste_data': content,
  28. 'paste_lang': args.language,
  29. 'paste_private': 'on',
  30. 'paste_expire': 2592000, # 30 days in seconds
  31. 'paste_submit': 'Paste',
  32. }
  33. url_base = 'https://paste.fedoraproject.org'
  34. r = requests.post(url_base + '/', data=data, allow_redirects=False)
  35. try:
  36. print url_base + r.headers['location']
  37. except:
  38. print r.headers
  39. print r.content
  40. raise