vk search

Список разделов foobar2000 Секреты foobar2000

Описание: Кнопочки, конфиги, секреты, советы.

Сообщение #1 panda » 28.02.2014, 01:50

Я связался с автором VkAudioSaver, спросил насчёт поддержки командной строки. В ответ он скинул мне пару пайтоновских скриптов для вконтакта.
Я их слегка подправил и прикрутил к фубару. Ниже описано, как заставить это всё работать.

Необходимо: foobar2000 + foo_run, VkAudioSaver, python.

  • вам нужно поставить VkAudioSaver (я пока не знаю другого способа получить токен).
  • запустите VkAudioSaver и пройдите процедуру авторизации.
  • найдите файл «c:\Users\[имя пользователя]AppData\Roaming\Bingo's Soft\VkAudioSaver.ini», найдите в нём строку «accessToken=куча_символов», это ваш токен, сохраните его куда-нибудь. После этого программа нам будет не нужна.
  • установите Python 2.7.
  • скачайте файлы из приложения
    ИЛИ
    создайте три файла:
    vkapi.py
    Код: Выделить всё
    #!/usr/bin/python

    import urllib2;
    import urllib;
    import json;

    class VkApi():
       authToken = "";

       def setAccessToken(self, accessToken):
          self.authToken = accessToken;
       
       def makeRequest(self, method, params = {}):
          while True:
             encodedParams = "";
             
             for key in params.keys():
                if (type(params[key]) == type(str())):
                   encodedParams += "&" + key + "=" + urllib.quote(params[key]);
                else:
                   encodedParams += "&" + key + "=" + urllib.quote(str(params[key]).encode("utf-8"));
             
             req = urllib2.Request("https://api.vk.com/method/" + method + "?access_token=" + self.authToken + encodedParams);
             response = urllib2.urlopen(req, timeout=4);
             jsonDecoder = json.JSONDecoder();
             data = jsonDecoder.decode(response.read());
             
             if "response" in data:
                return data["response"];
             elif "error" in data:
                return data;

       
       def audioSearch(self, query, count = 10, sort = 2, lyrics = 1):
          return self.makeRequest("audio.search", {"q": query, "count": count, "sort": sort, "lyrics": lyrics});
    vksearch.py
    Код: Выделить всё
    #!/usr/bin/python
    # -*- coding: utf-8 -*-

    from vkapi import *
    from settings import *
    import sys;
    import subprocess;

    vkApi = VkApi();
    vkApi.setAccessToken(accessToken);
    try:
       res = vkApi.audioSearch(sys.argv[1]);
    except IndexError:
       res = vkApi.audioSearch(raw_input("Search: "));

    for i in range(1, len(res) - 1):
       track = res[i];
       a = track["url"];
       subprocess.call([exepath, a], shell=True);
    settings.py
    Код: Выделить всё
    accessToken = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
    exepath = "c:\\Program Files (x86)\\foobar2000\\foobar2000.exe"
  • проставьте в файле settings.py путь к фубару и токен, полученный ранее.
  • foo_run vk search artist
    Код: Выделить всё
    c:\python27\pythonw.exe .\vk\vksearch.py %artist%
    foo_run vk search
    Код: Выделить всё
    c:\python27\python.exe .\vk\vksearch.py
  • подправьте пути в foo_run
  • в настройках «Preferences → Shell Integration» поставить галочку «Set "Enqueue" as the default action» (я так и не смог заставить фубар заработать с ключом «/add»)

Как-нибудь попозже я сделаю ввод строки поиска в модальном окне, а не в консоли и разберусь, почему ключ /add в фубаре не работает.
Вложения
vksearch.rar
(1.03 КБ) Скачиваний: 593
Последний раз редактировалось panda 11.03.2014, 04:47, всего редактировалось 2 раз(а).
panda M
Автор темы
Аватара
Репутация: 12
С нами: 17 лет 6 месяцев

Сообщение #2 misha » 09.03.2014, 04:36

Я первый раз в жизни открыл python! Проделал все до шага "foo_run vk search artist" . Дальше, включая этот шаг, не понимаю что делать, будьте добры, помогите
misha
Гость

Сообщение #3 panda » 09.03.2014, 05:40

misha:Я первый раз в жизни открыл python! Проделал все до шага "foo_run vk search artist" . Дальше, включая этот шаг, не понимаю что делать, будьте добры, помогите
Открывать ничего не надо. Эта строка прописывается в настройках плагина foo_run.
panda M
Автор темы
Аватара
Репутация: 12
С нами: 17 лет 6 месяцев

Сообщение #4 misha » 09.03.2014, 16:08

А где же его найти? В папке components его нет. И ещё, куда сохранять файлы созданные в питоне? Это вообще имеет значение? И что с ними делать?
misha
Гость

Сообщение #5 panda » 09.03.2014, 18:53

Строка «.\vk\vksearch.py» означает, что в папке, в которой находится foobar2000.exe, есть подпапка «vk», в которой лежат эти скрипты.
Где они лежат — не принципиально, главное — чтобы пути к ним были прописаны правильно.

По конфигам foo_run есть отдельная тема, там есть и ссылка на скачивание самого плагина.
foo_run настраивается в File → Preferences → Tools → Run Services.

Можно сделать импорт настроек из файла в приложении, но пути всё равно следует переправить на свои.

Добавлено спустя 9 минут 35 секунд:
Хотя там в этой теме какая-то старая ссылка.
Новая вот: http://www.foobar2000.org/components/view/foo_run
И вообще, смотреть некомплектные компоненты надо сперва тут: http://www.foobar2000.org/components
Вложения
vk.xml
(394 байт) Скачиваний: 666
panda M
Автор темы
Аватара
Репутация: 12
С нами: 17 лет 6 месяцев

Сообщение #6 misha » 10.03.2014, 01:25

то есть я должен был создать 2 сервиса в "run services" прописав пункте Lable "vk search artist", а в "path" - "c:\python27\pythonw.exe .\vk\vksearch.py %artist%" и так же с vk search ?

Добавлено спустя 1 минуту 44 секунды:
и что за у вас вложенный файл - "vk.xml" ?
misha
Гость

Сообщение #7 panda » 10.03.2014, 02:08

misha:и что за у вас вложенный файл - "vk.xml" ?
panda:Можно сделать импорт настроек из файла в приложении, но пути всё равно следует переправить на свои.
panda M
Автор темы
Аватара
Репутация: 12
С нами: 17 лет 6 месяцев

Сообщение #8 misha » 12.03.2014, 01:33

misha:то есть я должен был создать 2 сервиса в "run services" прописав пункте Lable "vk search artist", а в "path" - "c:\python27\pythonw.exe .\vk\vksearch.py %artist%" и так же с vk search ?
ок, а это я правильно написал?
misha
Гость

Сообщение #9 panda » 12.03.2014, 01:36

misha:ок, а это я правильно написал?
Да.
panda M
Автор темы
Аватара
Репутация: 12
С нами: 17 лет 6 месяцев

Сообщение #10 misha » 14.03.2014, 00:31

misha:то есть я должен был создать 2 сервиса в "run services" прописав пункте Lable "vk search artist", а в "path" - "c:\python27\pythonw.exe .\vk\vksearch.py %artist%" и так же с vk search ?
Я это прописал. Файлы в питоне тоже сделал, кинул в "новую папку" на рабочем столе. Все равно не заходит, когда ввожу свой ид при выборе "юзер" или "вк.ком" в приложении к фубару. Может есть какие-то рекомендации по переносу с вк?

Добавлено спустя 12 минут 35 секунд:
И ещё, извиняюсь за свою неотёсанность, но, я тут натворил вообщем делов в программе, и теперь то, что я воспроизвожу, накладывается поверх того, что я слышал раньше, с чем это может быть связанно? Подскажи, пожалуйста, что нужно сделать, чтобы всё что я воспроизвожу добавлялось в основной плей-лист по-новой?

Добавлено спустя 1 минуту 51 секунду:
и всё сохраняется по альбомам
misha
Гость

Сообщение #11 panda » 15.03.2014, 02:10

Я сейчас переписал скрипт на Python 3.3, выложу, когда сделаю что-то вроде инсталлятора.

misha:накладывается поверх того, что я слышал раньше
не понял

Возможно, поможет поменять состояние этой галочки:
panda:в настройках «Preferences → Shell Integration» поставить галочку «Set "Enqueue" as the default action»
panda M
Автор темы
Аватара
Репутация: 12
С нами: 17 лет 6 месяцев

Сообщение #12 misha » 19.03.2014, 19:17

ок, жду инсталятор. Как там дела с ним?
Даа, спасибо, там галочку поставил - помогло :)
misha
Гость

Сообщение #13 misha » 29.03.2014, 02:14

Так как там с инсталятором? :)
misha
Гость

Сообщение #14 naprimer » 06.04.2014, 13:18

Без установки этого мокрописечного vkaudiosaver какой есть другой способ получить токен?
naprimer
Гость

Сообщение #15 panda » 06.04.2014, 13:22

misha:Так как там с инсталятором? :)
Всё как-то некогда.

naprimer:есть другой способ получить токен?
Наверняка есть, но я его не знаю.
panda M
Автор темы
Аватара
Репутация: 12
С нами: 17 лет 6 месяцев

Сообщение #16 1borov1 » 09.04.2014, 22:05

panda, Спасибо! попробовал, вроде работает, жаль вместо тегов , белиберда получается
1borov1
Гость


Вернуться в Секреты foobar2000