Wie man viel Zeit mit einem kleinen Skript oder dem Verlauf einer Pull-Anfrage verbringt

Mit diesem Hinweis möchte ich noch einmal zeigen, dass das Schätzen der Zeit für eine Aufgabe ein nicht triviales Problem ist. Selbst die elementaren Aufgaben beim Schreiben eines 15-zeiligen Skripts können sich über mehrere Stunden erstrecken.


Ich musste Informationen aus Markdown-Notizen in einen Telegrammkanal duplizieren. Es schien etwas zu rassusolivat zu sein - Ctrl+Cund Ctrl+Vzu helfen. Es wurde jedoch eine kleine Nuance festgestellt: Der Abschlag im Warenkorb ist nicht vollständig und der [text](http://example.com) Client unterstützt keine Links in diesem Format . Okay, dachte ich, lass uns versuchen, etwas dagegen zu unternehmen.



Ich versuche Nahkampf zu schlagen



Bearbeiten Sie Links mit Ihren Händen, besonders wenn es mehrere gibt - ziemlich trostlos. Besonders angesichts des Fehlers des Desktop-Clients , aufgrund dessen es unmöglich ist, ausstehende Nachrichten zu bearbeiten. Es ist möglich, von einem Tablet zu übertragen, aber es ist noch stressiger.


, ? : . , .


xclip, . :


text/plain
UTF8_STRING
STRING
TEXT
application/x-td-field-text
application/x-td-field-tags

, Firefox:


text/html
text/_moz_htmlcontext
text/_moz_htmlinfo
UTF8_STRING
COMPOUND_TEXT
TEXT
STRING
text/plain;charset=utf-8
text/plain
text/x-moz-url-priv

- Libre Office Writer:


application/x-openoffice-embed-source-xml;windows_formatname="Star Embed Source (XML)"
text/rtf
text/richtext
text/html
text/plain;charset=utf-16
application/x-openoffice-objectdescriptor-xml;windows_formatname="Star Object Descriptor (XML)";classname="8BC6B165-B1B2-4EDD-aa47-dae2ee689dd6";typename="LibreOffice 6.0 Text Document";viewaspect="1";width="16999";height="2995";posx="0";posy="0"
text/plain;charset=utf-8
UTF8_STRING
STRING
application/x-libreoffice-internal-id-5387

, , . , , . , -, , - , Qt , , - . 5 , - .




-, , . , , , . . .


, , . ? PyPI 31 "telegram". Telethon — , , , , , , , MTProto .


, . , , , .


from telethon.sync import TelegramClient
import socks

api_id = 11111
api_hash = '...'
proxy=(socks.SOCKS4, '127.0.0.1', 9050)

with TelegramClient('anon', api_id, api_hash, proxy=proxy, timeout=60) as client:
    print(client.get_me().stringify())

… - , . , HACKERMAN, . , .



We need to do deeper


, , Tor, :


$ curl -XGET httpbin.org/ip --socks5 localhost:9050

, — . , , Telethon. ? PySocks. , -. , . ...


Traceback (most recent call last):
  File "test.py", line 110, in <module>
    print("HTTP: " + opener.open("http://httpbin.org/ip").read().decode())
  File "/usr/lib/python3.6/urllib/request.py", line 526, in open
    response = self._open(req, data)
  File "/usr/lib/python3.6/urllib/request.py", line 544, in _open
    '_open', req)
  File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "test.py", line 94, in http_open
    return self.do_open(build, req)
  File "/usr/lib/python3.6/urllib/request.py", line 1318, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/usr/lib/python3.6/http/client.py", line 1254, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1300, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1249, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1036, in _send_output
    self.send(msg)
  File "/usr/lib/python3.6/http/client.py", line 974, in send
    self.connect()
  File "test.py", line 55, in connect
    ((socket.IPPROTO_TCP, socket.TCP_NODELAY, 1),))
  File "/usr/lib/python3/dist-packages/socks.py", line 200, in create_connection
    proxy_username, proxy_password)
  File "/usr/lib/python3/dist-packages/socks.py", line 322, in set_proxy
    username.encode() if username else None,
AttributeError: 'int' object has no attribute 'encode'

… ? https , ! … 6 ? :(


15-20 - , — , . -c , . : , .


, , , . ? , - Telethon? , , . -:


DEBUG:telethon.network.mtprotosender:Connection attempt 2...
WARNING:telethon.network.mtprotosender:Attempt 2 at connecting failed: ProxyConnectionError: Error connecting to SOCKS4 proxy 127.0.0.1:9050: [Errno 115] Operation now in progress

? EINPROGRESS, connect. , , ( ) , . : Tor . , 10- , 5 , …


, , , , , -. — Telethon. Telethon PySocks.


-


: -. — , , . Telethon . : , . , , . : - Telethon.



, - , , : . , .


- s.setblocking(False)
+ s.settimeout(timeout)

, , , . , , PR.




, , ? - , , . , , , . - : , :



api_key api_hash, /, ? , Telethon — . , ? , ? - ?


( ) Vault, , , … , , . . :


?)

...



… keyring. plain-text, , . .



, , — , — , , . 50 , 10, — , . - .


, , - , . !


All Articles