File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change 1+ #!/usr/bin/env python3
2+ from curio import run , TaskGroup
3+ from curio .socket import getaddrinfo , gaierror
4+ from keyword import kwlist
5+
6+ MAX_KEYWORD_LEN = 4 # <1>
7+
8+
9+ async def probe (domain : str ) -> tuple [str , bool ]: # <2>
10+ try :
11+ await getaddrinfo (domain , None ) # <4>
12+ except gaierror :
13+ return (domain , False )
14+ return (domain , True )
15+
16+
17+ async def main () -> None : # <5>
18+ names = (kw for kw in kwlist if len (kw ) <= MAX_KEYWORD_LEN ) # <6>
19+ domains = (f'{ name } .dev' .lower () for name in names ) # <7>
20+ async with TaskGroup () as group :
21+ for domain in domains :
22+ await group .spawn (probe , domain )
23+ async for task in group : # <9>
24+ domain , found = task .result # <10>
25+ mark = '+' if found else ' '
26+ print (f'{ mark } { domain } ' )
27+
28+
29+ if __name__ == '__main__' :
30+ run (main ()) # <11>
Original file line number Diff line number Diff line change 1+ #!/usr/bin/env python3
2+ import curio
3+ import sys
4+ from keyword import kwlist
5+
6+ from domainlib import multi_probe
7+
8+
9+ async def main (tld : str ) -> None :
10+ tld = tld .strip ('.' )
11+ names = (kw for kw in kwlist if len (kw ) <= 4 )
12+ domains = (f'{ name } .{ tld } ' .lower () for name in names )
13+ print ('FOUND\t \t NOT FOUND' )
14+ print ('=====\t \t =========' )
15+ async for domain , found in multi_probe (domains ):
16+ indent = '' if found else '\t \t '
17+ print (f'{ indent } { domain } ' )
18+
19+
20+ if __name__ == '__main__' :
21+ if len (sys .argv ) == 2 :
22+ curio .run (main (sys .argv [1 ]))
23+ else :
24+ print ('Please provide a TLD.' , f'Example: { sys .argv [0 ]} COM.BR' )
Original file line number Diff line number Diff line change 1+ from curio import TaskGroup
2+ from curio .socket import getaddrinfo , gaierror
3+ from collections .abc import Iterable , AsyncIterator
4+ from typing import NamedTuple
5+
6+
7+ class Result (NamedTuple ):
8+ domain : str
9+ found : bool
10+
11+
12+ async def probe (domain : str ) -> Result :
13+ try :
14+ await getaddrinfo (domain , None )
15+ except gaierror :
16+ return Result (domain , False )
17+ return Result (domain , True )
18+
19+
20+ async def multi_probe (domains : Iterable [str ]) -> AsyncIterator [Result ]:
21+ async with TaskGroup () as group :
22+ for domain in domains :
23+ await group .spawn (probe , domain )
24+ async for task in group :
25+ yield task .result
Original file line number Diff line number Diff line change 1+ curio == 1.5
You can’t perform that action at this time.
0 commit comments