Je suis tombé ici вконтакте sur un groupe assez intéressant : ”Soviétique психоделические les dessins animés”) eh bien, et car chez moi анлим il faut balancer, a décidé de balancer tous les dessins animés du groupe)) a commencé à penser Proprement comme cela faire, manger en ligne les services, il y a aussi un plug-in pour Firefox et userjs pour Opera, mais il y a un grand mais dans chacun de ces moyens il faut balancer selon un fichier, et en plus ручами passer copier et т.д etc.,Наткнулся я тут вконтакте на довольно интересную группу:”Советские психоделические мультики”) ну и т.к. у меня анлим и надо что-то качать, решил качнуть все мультфильмы из группы)) Собственно начал думать как это сделать, есть онлайн сервисы, также есть плагин для Firefox и userjs для Opera, но есть одно большое но в любом из этих способов нужно качать по одному файлу, да и к тому же ручами заходить копировать и т.д и т.п.,
Comme il y a quelque софт sous винду, mais le raifort avec lui, sous линукс n'a pas commencé à chercher les couples даж. Tout прелесь dans la programmation : si est absent tendre à toi софта, écris) Voulait au début écrire скрипт sur bash’е, mais a changé d'avis ensuite et a décidé d'écrire sur python. Proprement voici qu'a résulté : вроде есть какой-то софт под винду, но хрен с ним, под линукс чёт даж искать не стал. Вся прелесь в программировании: если нет нежного тебе софта, напиши) Хотел в начале написать скрипт на bash’е, но потом передумал и решил написать на python. Собственно вот, что получилось:

11
22
33
44
55
66
77
88
99
1010
1111
1212
1313
1414
1515
1616
1717
1818
1919
2020
2121
2222
2323
2424
2525
2626
2727
2828
2929
3030
3131
3232
3333
3434
3535
3636
3737
3838
3939
4040
4141
4242
4343
4444
4545
4646
4747
4848
4949
5050
5151
5252
5353
5454
5555
5656
5757
5858
5959
6060
6161
6262
6363
6464
6565
6666
6767
6868
6969
7070
7171
7272
7373
7474
7575
7676
7777
7878
7979
8080
8181
8282
8383
8484
8585
8686
8787
8888
8989
9090
9191
9292
9393
9494
9595
9696
9797
9898
9999
100100
101101
102102
103103
104104
105105
106106
107107
108108
109109
110110
111111
112112
# - * - coding : utf8 - * -# -*- coding: utf8 -*-
import httplib import httplib
import re import re
import os import os

#param #param
url = ' линк jusqu'à la liste de vidéos' url = 'линк до списка с видео'
email = ' le savon' email = 'мыло'
id = ' айди' id = 'айди'
hash = ' хэш du mot d'ordre' hash = 'хэш пароля'
#

def pb_str (prc, ch, width) : def pb_str(prc, ch, width) :
  return ch * int ((prc * width) / 100)   return ch * int((prc * width) / 100)

plinks = re.compile (' <div class = "aname"> <a href = "(VIDEO - [0-9] * _ [0-9] *)"> ') plinks = re.compile('<div class="aname"><a href="(video-[0-9]*_[0-9]*)">')
phost = re.compile (' http:// (. *)/assets/videos / [a-f0-9] *\.vk.flv ') phost = re.compile('http://(.*)/assets/videos/[a-f0-9]*\.vk.flv')
pvtag = re.compile (' so\.addVariable \(\'vtag \', \' (. * ?) \' \); ') pvtag = re.compile('so\.addVariable\(\'vtag\',\'(.*?)\'\);')
pvkid = re.compile (' so\.addVariable \(\'vkid \', \' (. * ?) \' \); ') pvkid = re.compile('so\.addVariable\(\'vkid\',\'(.*?)\'\);')
pname = re.compile (' <h1>. * ET raquo; (. *) </h1> ') pname = re.compile('<h1>.*&raquo; (.*)</h1>')
width = 60 width = 60
print ' Skatchivanie de la liste des vidéofichiers...' print 'Скачивание списка видеофайлов...'
conn = httplib. HTTP (' vkontakte.ru ') conn = httplib.HTTP('vkontakte.ru')
conn.putrequest (' GET ', url) conn.putrequest('GET', url)
conn.putheader (' Host ', ' vkontakte.ru ') conn.putheader('Host', 'vkontakte.ru')
conn.putheader (' Cookie ', ' remixemail = ' + email + '; remixmid = ' + id + '; remixpass = ' + hash) conn.putheader('Cookie', 'remixemail='+email+';remixmid='+id+';remixpass='+hash)
conn.endheaders () conn.endheaders()
conn.getreply () conn.getreply()
content = conn.getfile ().read () content = conn.getfile().read()
conn.close () conn.close()
all = plinks.findall (content) all = plinks.findall(content)
print ' Est prêt' print 'Готово'
print str (len (all)) + ' des fichiers pour les courses' print str(len(all))+' файлов для скачки'
count = 0 count = 0
for i in all : for i in all:
  count + = 1   count += 1
  conn.connect (' vkontakte.ru ', 80)   conn.connect('vkontakte.ru',80)
  conn.putrequest (' GET ', ' http://vk ontakte.ru/ ' +i)   conn.putrequest('GET', 'http://vkontakte.ru/'+i)
  conn.putheader (' Host ', ' vkontakte.ru ')   conn.putheader('Host', 'vkontakte.ru')
  conn.putheader (' Cookie ', ' remixemail = ' + email + '; remixmid = ' + id + '; remixpass = ' + hash)   conn.putheader('Cookie', 'remixemail='+email+';remixmid='+id+';remixpass='+hash)
  conn.endheaders ()   conn.endheaders()
  conn.getreply ()   conn.getreply()
  content = conn.getfile ().read ()   content = conn.getfile().read()
  conn.close ()   conn.close()
  vtag = pvtag.search (content).group (1)   vtag = pvtag.search(content).group(1)
  vkid = pvkid.search (content).group (1)   vkid = pvkid.search(content).group(1)
  name = unicode (pname.search (content).group (1), ' cp1251 ')   name = unicode(pname.search(content).group(1), 'cp1251')
  print str (count) + ' : ' +name   print str(count)+' : '+name
  filename = name + '.flv'   filename = name +'.flv'
  conn.connect (' vkadre.ru ', 80)   conn.connect('vkadre.ru',80)
  conn.putrequest (' GET ', ' http://vkadre.ru/get_vide o ? vkid = ' + vkid + ' ET vtag = ' + vtag)   conn.putrequest('GET', 'http://vkadre.ru/get_video?vkid='+vkid+'&vtag='+vtag)
  conn.putheader (' Host ', ' vkadre.ru ')   conn.putheader('Host', 'vkadre.ru')
  conn.endheaders ()   conn.endheaders()
  link = conn.getreply () [2] [' Location ']   link = conn.getreply()[2]['Location']
  host = phost.search (link).group (1)   host = phost.search(link).group(1)
  conn.close ()   conn.close()
  if os.path.isfile (filename) :   if os.path.isfile(filename):
    fstat = os.stat (filename)     fstat = os.stat(filename)
    conn.connect (host, 80)     conn.connect(host,80)
    conn.putrequest (' GET ', link)     conn.putrequest('GET', link)
    conn.putheader (' Host ', host)     conn.putheader('Host', host)
    conn.endheaders ()     conn.endheaders()
    size = conn.getreply () [2] [' Content-Length ']     size = conn.getreply()[2]['Content-Length']
    conn.close ()     conn.close()
    if fstat.st_size <int (size) :     if fstat.st_size < int(size):
      conn.connect (host, 80)       conn.connect(host,80)
      conn.putrequest (' GET ', link)       conn.putrequest('GET', link)
      conn.putheader (' Host ', host)       conn.putheader('Host', host)
      conn.putheader (' Range ', ' bytes = ' + str (fstat.st_size) + ' - ')       conn.putheader('Range', 'bytes='+str(fstat.st_size)+'-')
      conn.endheaders ()       conn.endheaders()
      conn.getreply ()       conn.getreply()
      flv_file = open (filename, ' ab ')       flv_file = open(filename, 'ab')
      src_flv = conn.getfile ()       src_flv = conn.getfile()
      get = fstat.st_size       get = fstat.st_size
      while True :       while True:
        kb = src_flv.read (1024)         kb = src_flv.read(1024)
        get + = 1024         get += 1024
        if not kb :         if not kb:
          break           break
        flv_file.write (kb)         flv_file.write(kb)
        perc = round (get / (float (size)) *100,3)         perc = round(get/(float(size))*100,3)
        if perc> 100 :         if perc > 100:
          perc = 100.0           perc = 100.0
        print '\r ' + str (perc).rjust (7) + ' DU % [' + \         print '\r' + str(perc).rjust(7) + '% [' + \
          pb_str (perc, ' * ', width).ljust (width, ' ') + '] ',           pb_str(perc, '*', width).ljust(width, ' ') + ']',
      flv_file.close ()       flv_file.close()
      conn.close ()       conn.close()
      print ' Ok'       print ' Ok'
    else :     else:
      print ' Ok'       print ' Ok'
  else :   else:
    conn.connect (host, 80)     conn.connect(host,80)
    conn.putrequest (' GET ', link)     conn.putrequest('GET', link)
    conn.putheader (' Host ', host)     conn.putheader('Host', host)
    conn.endheaders ()     conn.endheaders()
    size = conn.getreply () [2] [' Content-Length ']     size = conn.getreply()[2]['Content-Length']
    flv_file = open (filename, ' wb ')     flv_file = open(filename, 'wb')
    src_flv = conn.getfile ()     src_flv = conn.getfile()
    get = 0     get = 0
    while True :     while True:
      kb = src_flv.read (1024)       kb = src_flv.read(1024)
      get + = 1024       get += 1024
      if not kb :       if not kb:
        break         break
      flv_file.write (kb)       flv_file.write(kb)
      perc = round (get / (float (size)) *100,3)       perc = round(get/(float(size))*100,3)
      print '\r ' + str (perc).rjust (7) + ' DU % [' + \       print '\r' + str(perc).rjust(7) + '% [' + \
        pb_str (perc, ' * ', width).ljust (width, ' ') + '] ',         pb_str(perc, '*', width).ljust(width, ' ') + ']',
    flv_file.close ()     flv_file.close()
    conn.close ()     conn.close()
    print ' Ok'     print ' Ok'
print ' tous les fichiers sont transférés' print 'Все файлы скачаны'

Собстенно le craquement tire страничку avec la liste de vidéo sort, линки sur eux et transfère selon un nom du fichier se met du nom de vidéo. Car je n'ai pas encore orienté la vitesse анлима chez moi non ah et нат sur фряхе dans la conséquence de quoi инет il faut parfois couper sur ноуте, au craquement a ajouté la possibilité докачки du fichier. I.e. après la mise en marche il contrôle si le fichier avec un tel nom existe déjà son montant moins nécessaire cela докачивает иначае passe au fichier suivant. À винде il y aura probablement des problèmes avec les codages, mais à moi quelque peu пофиг, passer sur винду je ne me réunis pas)Собстенно скрип тянет страничку со списком видео вытаскивает, линки на них и скачивает по одному название файла берётся из названия видео. Т.к. скорость анлима у меня не ахти и нат на фряхе я ещё не настроил в следствии чего инет нужно иногда отрубать на ноуте, в скрип добавил возможность докачки файла. Т.е. после запуска он проверяет если файл с таким именем уже существует и его размер меньше необходимого то докачивает иначае переходит к следующему файлу. В винде скорее всего будут проблемы с кодировками, но мне как-то пока пофиг, переходить на винду не собираюсь)
Une plus nouvelle version скрипта est ici более новая версия скрипта лежит тут