Advertisement
Guest User

Untitled

a guest
Nov 21st, 2020
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.57 KB | None | 0 0
  1. import requests
  2. import urllib.request
  3. import re
  4. import threading
  5. import math
  6. from pathlib import Path
  7.  
  8. START_FOLDER = 35
  9.  
  10.  
  11. def partition(data, partitions):
  12.     indexes = []
  13.     ans = []
  14.     for i in range(0, partitions):
  15.         indexes.append(i * math.ceil((len(data) / (partitions))))
  16.     indexes.append(len(data))
  17.     for i in range(1, len(indexes)):
  18.         ans.append(data[indexes[i - 1]:indexes[i]])
  19.     return ans
  20.  
  21.  
  22. def threadnames(partitions):
  23.     return ['Thread-' + str(x) for x in range(1, partitions + 1)]
  24.  
  25.  
  26. def GetThreads(data, partitions):
  27.     ans = {}
  28.     names = threadnames(partitions)
  29.     dataset = partition(data, partitions)
  30.     for i in range(len(names)):
  31.         ans[names[i]] = dataset[i]
  32.     return ans
  33.  
  34.  
  35. class myThread(threading.Thread):
  36.     def __init__(self, threadID, name, data, ans):
  37.         threading.Thread.__init__(self)
  38.         self.threadID = threadID
  39.         self.name = name
  40.         self.data = data
  41.         self.ans = ans
  42.  
  43.     def run(self):
  44.         print("Starting " + self.name)
  45.         process_data(self.data, self.ans)
  46.         print("Exiting " + self.name)
  47.  
  48.  
  49. def process_data(data, ans):
  50.     return ans.append(Parse(data))
  51.  
  52.  
  53. def starting_threads(dataset, n):
  54.     threadList = threadnames(n)
  55.     threads = []
  56.     threadID = 1
  57.     ans = []
  58.  
  59.     # Create new threads
  60.     for name, data in GetThreads(dataset, n).items():
  61.         thread = myThread(threadID, name, data, ans)
  62.         thread.start()
  63.         threads.append(thread)
  64.         threadID += 1
  65.  
  66.     # Wait for all threads to complete
  67.     for t in threads:
  68.         t.join()
  69.  
  70.     ans1 = []
  71.  
  72.     return ans1
  73.  
  74.  
  75. def work(num):
  76.  
  77.     path = folder + str(num)
  78.     result = requests.get(url=f'http://gs.3g.cn/D/{path}/w')
  79.     pic_url = result.url
  80.     pic_url = re.sub('&t=image/jpeg&w=100&h=200', "", pic_url)
  81.     pic_url = re.sub(
  82.         "/mms/v14/index.html\?u=http%3A%2F%2Fgosms.gomocdn.com%2F", "/",
  83.         pic_url)
  84.     if 'jpg' in pic_url:
  85.         urllib.request.urlretrieve(pic_url, f'{folder}\\photo_{path}.jpg')
  86.         print(num, pic_url)
  87.  
  88.  
  89. def Parse(data):
  90.     global folder
  91.     counter = 0
  92.     loss = 0
  93.     for num in data:
  94.         try:
  95.             work(num)
  96.         except Exception:
  97.             try:
  98.                 num_hex = hex(num1).split('x')[-1]
  99.                 work(num_hex)
  100.             except:
  101.                 pass
  102.  
  103.  
  104. for num1 in range(START_FOLDER, 16 * 16):
  105.     num1_hex = hex(num1).split('x')[-1]
  106.     folder = f'ad{num1_hex}'
  107.     Path(folder).mkdir(parents=True, exist_ok=True)
  108.     starting_threads(range(16, 100), 5)
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement