рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдбреЗрдЯрд╛ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд░рд┐рдкреЙрд╕реНрдЯ рдЦрд╛рд▓реА рд╣реЛрдЧрд╛ рдпрджрд┐ рдореВрд▓ рдкреЛрд╕реНрдЯ рдХрд╛ рд▓реЗрдЦрдХ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рд╡реАрдХреЗ рдореЗрдВ рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╣рд╛рд▓ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЕрдВрддрд┐рдо рднреВрд╕реЗ рдереАрдВ, рдФрд░ рдореИрдВрдиреЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛
рдЬреЛ рдкрд░рдорд╛рдгреБ рдпреБрджреНрдз рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░реБрдЪрд┐ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬреЛ рдореБрдЭреЗ рд╕реВрдЯ рдХрд░реЗ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдкрдЯрдХрдерд╛ рд▓рд┐рдЦреА рдЧрдИред
рд▓рдХреНрд╖реНрдпреЛрдВ
рд╕рдм рдХреБрдЫ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╕рд╣реЗрдЬреЗрдВ: рдСрдбрд┐рдпреЛ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, рджреАрд╡рд╛рд░ред рдкреЛрд╕реНрдЯ рдХреЗ рд╕рднреА рдЕрдЯреИрдЪрдореЗрдВрдЯреНрд╕ рдХреЛ рджреАрд╡рд╛рд░ рд╕реЗ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╕рднреА рдЕрдЯреИрдЪрдореЗрдВрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рднреА рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рд╕рдВрдЧреАрдд рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рдкреЛрд╕реНрдЯ рд╕рдВрд░рдХреНрд╖рд┐рдд рд░рд╣реЗрдВ, рдЬрд╣рд╛рдВ рджреЛрд╕реНрдд рдЕрдЪреНрдЫреЗ рдЯреНрд░реИрдХ
рдпрд╛ рд╕реАрд▓ рднреЗрдЬрддреЗ рд╣реИрдВред рдореБрдЭреЗ рддреБрд░рдВрдд рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореЗрд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА (рдкрд╕рдВрдж, рд░рд┐рдХреЙрд░реНрдб рдирд┐рд░реНрдорд╛рдг рд╕рдордп, рдЖрджрд┐) рдХрд╛ рдХреЛрдИ рдкрдардиреАрдп рдмреИрдХрдЕрдк рдирд╣реАрдВ рдерд╛ред
рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП!
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рд▓реЗ
рд╕реЗ рд╣реА рд╣рдм рдкрд░
рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╡рд░реНрдгрд┐рдд рдХреА рдЧрдИ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛, рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛, рдФрд░ рдореИрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рднреА рдХрд╣реВрдВрдЧрд╛ред рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдХреЛ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдВрдд рдореЗрдВ рдЧрд┐рдЯрдм рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛ред
рд╡рд┐рдХрд╛рд╕ рд╕рдВрдмрдВрдзреА рдмрд╛рддреЗрдВ
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рдЖрд╡реЗрджрди рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд╣реИ , рдЕрдиреНрдпрдерд╛ рдХреБрдЫ vk api рд╡рд┐рдзрд┐рдпрд╛рдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдВрдЧреАред
- рдЕрднреА рднреА рдЙрд╕ рдпреВрдЬрд░ рдХреА рдЖрдИрдбреА рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬрд┐рд╕рдХрд╛ рдбреЗрдЯрд╛ рд╣рдо рд╕реЗрд╡ рдХрд░реЗрдВрдЧреЗред рдЖрдк рд╕реЗрдЯрд┐рдВрдЧ рдкреГрд╖реНрда рдкрд░ рдЕрдкрдирд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ
- рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЕрдиреБрдорддрд┐ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЯреЛрдХрди рддрдХ рдкрд╣реБрдВрдЪреЗрдВред рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рддреНрдпрдХреНрд╖ рдЧреИрд░-рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреГрд╖реНрда рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдФрд░ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ () рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ:
url = "https://oauth.vk.com/oauth/authorize?" + \ "redirect_uri=https://oauth.vk.com/blank.html&response_type=token&" + \ "client_id=%s&scope=%s&display=wap" % (args.app_id, ",".join(args.access_rights)) print("Please open this url:\n\n\t{}\n".format(url)) raw_url = raw_input("Grant access to your acc and copy resulting URL here: ") res = re.search('access_token=([0-9A-Fa-f]+)', raw_url, re.I)
- Vk рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕реАрдорд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдХреНрд╕рд░ рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЬрд╡рд╛рдм рджреЗрдЧрд╛ред рдпрд╣ рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ: рддреНрд░реБрдЯрд┐ рдХреЛрдб рд╕реЗ рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ, рдереЛрдбрд╝реА рджреЗрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдЕрдиреБрд░реЛрдз рджреЛрд╣рд░рд╛рдПрдВред
if result[u'error'][u'error_code'] == 6:
- рд╕рдордп-рд╕рдордп рдкрд░, рд╡реАрдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рдХреИрдкреНрдЪрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣ рд╕рдВрджреЗрд╣ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдПрдХ рдмреЙрдЯ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡рд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрджреЗрд╣ рдХрд░рддрд╛ рд╣реИред рддрд╛рдХрд┐ рдмрдЪрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╛рдзрд┐рдд рди рд╣реЛ, рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛ рд╣реЛрдЧрд╛, рдЬрд╡рд╛рдм рдореЗрдВ рдХреИрдкреНрдЪрд╛ рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рдбреНрд░рд╛рдЗрд╡ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕реАрдзрд╛ рдирд╛рдо рдХреИрдкреНрдЪрд╛ () рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
print("They want you to solve CAPTCHA. Please open this URL, and type here a captcha solution:") print("\n\t{}\n".format(data[u'error'][u'captcha_img'])) solution = raw_input("Solution = ").strip() return data[u'error'][u'captcha_sid'], solution
- рд▓рд┐рдВрдХ, JSON рдореЗрдВ рд▓рд╛рдЗрдХ рдФрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреИрд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗрд╡рд▓ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдЦреА рдЬрд╛рдПрдЧреАред
- рдХреБрдЫ рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдЧреАрдд рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИрдВ, рдЬреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
- рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рдкрд╛рддреНрд░реЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рддреИрдпрд╛рд░ "рд╕рд╣реА" рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рдорд┐рдиреА-рдмрд╛рдЗрдХ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛:
result = unicode(re.sub('[^+=\-()$!#%&,.\w\s]', '_', name, flags=re.UNICODE).strip())
- рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛: рд╡реЗ рдореЗрд▓ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореЗрдВ (n) рдЬреЛрдбрд╝реЗрдВ, рдЬрд╣рд╛рдВ n рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рдирдВрдмрд░ рд╣реИред
рдЬрд╛рд░реА рд░рд╣реЗрдЧрд╛
рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЛрдб рдХреЛ рд╣рдмреНрд░рд╛рдпреБрдЬрд╝рд░
рдЬрд┐рдпреЛрд╡ рдХреЗ
рд▓реЗрдЦ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рджреАрд╡рд╛рд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ), рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдкрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
рдЕрдЧрд▓рд╛, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд╕реНрдЯ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ
for x in xrange(args.wall_start, args.wall_end): (post, json_stuff) = call_api("wall.get", [("owner_id", args.id), ("count", 1), ("offset", x)], args) process_post(("wall post", x), post, post_parser, json_stuff)
рдЕрдиреБрд░реЛрдз рдХрд╛ рдкрд░рд┐рдгрд╛рдо JSON рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ json.loads () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдЬрдЧрд░ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реИрд╢ рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рдлрд╝реАрд▓реНрдб (рдХреБрдВрдЬреА-рдореВрд▓реНрдп) рдПрдХ рдкреЗрд▓реЛрдб рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдмрд╛рдХреА рд╣рдореЗрдВ рдмреНрдпрд╛рдЬ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╣реИ, рд╣рдо рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: рд╣рдо рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдмреНрдпрд╛рдЬ рдХреА рдХреБрдВрдЬреА рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
for k in raw_data.keys(): try: f = getattr(self, k) keys.append(k) funcs.append(f) except AttributeError: logging.warning("Not implemented: {}".format(k)) logging.info("Saving: {} for {}".format(', '.join(keys), raw_data['id'])) for (f, k) in zip(funcs, keys): f(k, raw_data)
рдкрд╛рд░рд╕реА
рдЕрдм рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрд▓рдЧреНрдирдХ, рдкрд╛рда, рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВред рд╕рдВрд▓рдЧреНрдирдХ рдкреЛрд╕реНрдЯ (рдСрдбрд┐рдпреЛ, рдЪрд┐рддреНрд░, рджрд╕реНрддрд╛рд╡реЗрдЬ, рдиреЛрдЯреНрд╕) рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд▓рдЧреНрдирдХ рдХреЛ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рд╡рд┐рдзрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рдЕрдиреБрд▓рдЧреНрдирдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ, рд╣рдо рдПрдХ рдЙрдкрдпреБрдХреНрдд рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдСрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП "рд░реЙрдХрд┐рдВрдЧ рдЪреЗрдпрд░" рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
def dl_audio(self, data): aid = data["aid"] owner = data["owner_id"] request = "{}_{}".format(owner, aid) (audio_data, json_stuff) = call_api("audio.getById", [("audios", request), ], self.args) try: data = audio_data[0] name = u"{artist} - {title}.mp3".format(**data) self.save_url(data["url"], name) except IndexError:
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреЙрдкреАрд░рд╛рдЗрдЯ рдзрд╛рд░рдХреЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдЬрдмреНрдд рдХреА рдЧрдИ рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдЕрдм рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рд▓реА рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмрд╛рдХреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдЪрд┐рддреНрд░, рдкрд╛рда, рдиреЛрдЯреНрд╕, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ рдФрд░ рдмрд╛рдХреА -
рдЬреАрдердм рдореЗрдВ ред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рднреА рд╣реИрдВ, рдЗрд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╡рд░рдг
readme рдореЗрдВ рд╣реИрдВ ред
рдпрд╣ рдХрд░реЗрдВ
рдореИрдВрдиреЗ рдлреЛрдЯреЛ рдПрд▓реНрдмрдо рдХреЛ рдирд╣реАрдВ рд╕рд╣реЗрдЬрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдВ рдХреБрдЫ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реИ, рдФрд░
рдЙрдирдХреЗ рд▓реЗрдЦ рдХрд╛
рдХрд┐рд▓рдиреЗрдЯ рдХреЛрдб рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡реАрдбрд┐рдпреЛ рдФрд░ рдиреЛрдЯреНрд╕ рдЕрднреА рднреА рд╕рд╣реЗрдЬреЗ рдирд╣реАрдВ рдЧрдП рд╣реИрдВ, рдпрд╣ рдореБрдЭреЗ рдмрд╣реБрдд рдЬрд░реВрд░реА рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред
рдЕрдиреНрдд рдореЗрдВ
рдХреЛрдб рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ рдФрд░ рдмреИрд╕рд╛рдЦреА рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЕрдкрдиреЗ рдиреЛрдЯреНрд╕ / рджрд╕реНрддрд╛рд╡реЗрдЬ / рд╕рдВрдЧреАрдд рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдХрд╛рдо рдЙрдкрдпреЛрдЧреА рд╕рдордЭреЗрдЧрд╛ред
UPD 12/18/2016
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдиреЗ рдХрд╣рд╛ рдХрд┐ 16 рджрд┐рд╕рдВрдмрд░,
2016 рд╕реЗ vk рдиреЗ рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЖрдк рдореВрд▓ vk рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде "рджрд┐рдЦрд╛рд╡рд╛" рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдВрдбреНрд░реЙрдЗрдб рд╡рд░реНрдЬрди, рдпрд╛ рдХреЗрдЯ рдореЛрдмрд╛рдЗрд▓ред рдЙрдирдХреЗ рд▓рд┐рдП, рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рддрд░реАрдХреЗ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред