Дата: 2010-09-22 18:35:45
Комментариев: 0
После установки мыла и пароля от вашего аккаунта и запуска на 127.0.0.1:8080 откроется примитивнейший однопоточный веб-сервер, стримящий музыку с вконтакта. Использовать так: 127.0.0.1 (добавить в плеер или просто в браузере слушать). Можно использовать пробелы, браузер их заменит на %20, что не отразится на работоспособности.
Сам скрипт:
$cat vkmp3
#!/usr/bin/env python
# coding: utf-8
 
import time
import urllib, urllib2
import re
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
 
vk_acc = ("vkontakte_login@mail.ru", "vkontakte_pass")
 
class VkHandler(BaseHTTPRequestHandler):
 
    def do_GET(self):
 
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
 
        req = urllib2.Request("http://vkontakte.ru/login.php?email=%s&pass=%s" % vk_acc)
        handle = opener.open(req)
 
        req_args = "q=%s&section=audio" % self.path[1:]
 
        req = urllib2.Request("http://vkontakte.ru/gsearch.php?" + req_args)
 
        handle = opener.open(req)
        result = handle.read().decode("cp1251")
 
        match = re.search(ur"onclick=\"return operate\((\d+),(\d+),(\d+),'([^']+)'", result)
        if match:
            link = "http://cs%s.vkontakte.ru/u%s/audio/%s.mp3" % (match.group(2), match.group(3), match.group(4))
            self.send_response(200)
            self.send_header('Content-type', 'audio/mp3')
            self.end_headers()
            mp3_handle = urllib2.urlopen(link)
 
            while True:
                chunk = mp3_handle.read(16 * 1024)
                if not chunk:
                    break
                self.wfile.write(chunk)
            mp3_handle.close()
 
        else:
            self.send_response(404)
            return
 
server = HTTPServer(('127.0.0.1', 8080), VkHandler)
server.serve_forever()

Файлы:
vkmp3.tar.gz
vkmp3
теги: vkontakte, python

0 комментариев

Оставить комментарий: