ORI IN        https://rentry.co/bwn_SRF-SCY-proxy/          alisa-i-36518-2-phixr-edge.png https://postimg.cc/delete/rbzzmTN5/ee2976d0 more bgs: https://rentry.co/fwh7q

PCS CMD RENTRY.CO


Nur der Rentry.co Python Code. ENDE

#!/usr/bin/env python3

import getopt
import http.cookiejar
import sys
import urllib.parse
import urllib.request
from http.cookies import SimpleCookie
from json import loads as json_loads
from os import environ

_headers = {"Referer": 'https://rentry.co'}


class UrllibClient:
    """Simple HTTP Session Client, keeps cookies."""

    def __init__(self):
        self.cookie_jar = http.cookiejar.CookieJar()
        self.opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(self.cookie_jar))
        urllib.request.install_opener(self.opener)

    def get(self, url, headers={}):
        request = urllib.request.Request(url, headers=headers)
        return self._request(request)

    def post(self, url, data=None, headers={}):
        postdata = urllib.parse.urlencode(data).encode()
        request = urllib.request.Request(url, postdata, headers)
        return self._request(request)

    def _request(self, request):
        response = self.opener.open(request)
        response.status_code = response.getcode()
        response.data = response.read().decode('utf-8')
        return response


def raw(url):
    client = UrllibClient()
    return json_loads(client.get('https://rentry.co/api/raw/{}'.format(url)).data)


def new(url, edit_code, text):
    client, cookie = UrllibClient(), SimpleCookie()

    cookie.load(vars(client.get('https://rentry.co'))['headers']['Set-Cookie'])
    csrftoken = cookie['csrftoken'].value

    payload = {
        'csrfmiddlewaretoken': csrftoken,
        'url': url,
        'edit_code': edit_code,
        'text': text
    }

    return json_loads(client.post('https://rentry.co/api/new', payload, headers=_headers).data)


def edit(url, edit_code, text):
    client, cookie = UrllibClient(), SimpleCookie()

    cookie.load(vars(client.get('https://rentry.co'))['headers']['Set-Cookie'])
    csrftoken = cookie['csrftoken'].value

    payload = {
        'csrfmiddlewaretoken': csrftoken,
        'edit_code': edit_code,
        'text': text
    }

    return json_loads(client.post('https://rentry.co/api/edit/{}'.format(url), payload, headers=_headers).data)


def usage():
    print('''
Verwendung: 
  rentry {new | edit | raw} {-h | --help} {-u | --url} {-p | --edit-code} 'Mein TEXT'

Kommandos:
  new   Erzeuge  Deine rentry.co Seite.
  edit  Editiere Deine existierende rentry.co Seite.
  raw   Erhalte den Markdown Quelltext (D)einer rentry.co Seite.

Optionen:
  -h, --help                 Gibt nur den Hilfetext aus.
  -u, --url URL              Deine selbstgewählte URL ist der Name Deiner Seite. 
  -p, --edit-code PASSWORT   Dein selbstgewähltes Passwort, um Deine Seite jederzeit zu &aum;ndern. 
                             Werden URL bzw. PASSWORT nicht angegeben, erzeugt rentry automatisch zufällige.

Beispiele: 
  rentry new 'Mein Markdown Text'                                  # Neue Seite. URL + PASSWORT zufällig.
  rentry new  -p PASSWORT       -u SEITENNAME 'Mein Markdown Text' # mit eigenem PASSWORT und SEITENNAME.
  rentry edit -p PASSWORT       -u SEITENNAME 'Mein Markdown Text' # Ändere Deine Seite.
  rentry edit -p PASSWORT       -u SEITENNAME < TEXT.txt           # Ersetze Deine Seite durch den Inhalt Deiner Datei.
  rentry raw                    -u SEITENNAME                      # Zeigt den Markdown Quelltext von SEITENNAME.
  rentry raw  -u https://rentry.co/SEITENNAME                      # -u mit absoluten und relativen URLs.
    ''')


if __name__ == '__main__':
    try:
        environ.pop('POSIXLY_CORRECT', None)
        opts, args = getopt.gnu_getopt(sys.argv[1:], "hu:p:", ["help", "url=", "edit-code="])
    except getopt.GetoptError as e:
        sys.exit("error: {}".format(e))

    command, url, edit_code, text = None, '', '', None

    for o, a in opts:
        if o in ("-h", "--help"):
            usage()
            sys.exit()
        elif o in ("-u", "--url"):
            url = urllib.parse.urlparse(a).path.strip('/')
        elif o in ("-p", "--edit-code"):
            edit_code = a

    command = (args[0:1] or [None])[0]
    command or sys.exit(usage())
    command in ['new', 'edit', 'raw'] or sys.exit('error: command must be new, edit or raw')

    text = (args[1:2] or [None])[0]
    if not text and command != 'raw':
        text = sys.stdin.read().strip()
        text or sys.exit('error: text is required')

    if command == 'new':
        response = new(url, edit_code, text)
        if response['status'] != '200':
            print('error: {}'.format(response['content']))
            try:
                for i in response['errors'].split('.'):
                    i and print(i)
                sys.exit(1)
            except:
                sys.exit(1)
        else:
            print('Url:        {}\nEdit code:  {}'.format(response['url'], response['edit_code']))

    elif command == 'edit':
        url or sys.exit('error: url is required')
        edit_code or sys.exit('error: edit code is required')

        response = edit(url, edit_code, text)
        if response['status'] != '200':
            print('error: {}'.format(response['content']))
            try:
                for i in response['errors'].split('.'):
                    i and print(i)
                sys.exit(1)
            except:
                sys.exit(1)
        else:
            print('Ok')

    elif command == 'raw':
        url or sys.exit('error: url is required')
        response = raw(url)
        if response['status'] != '200':
            sys.exit('error: {}'.format(response['content']))
        print(response['content'])
Edit

Pub: 17 Apr 2019 19:48 UTC

Edit: 14 May 2020 13:02 UTC

Views: 67