DJ BOOSTER 4 — версия 4.14

Автор: | 27.11.2018

Очень полезное обновление. Восстановлена накрутка на Soundcloud. Большое количество других изменений. Бесплатной версии больше нет (и не будет).

Пост большой, так что запаситесь чашечкой кофе, если вам интересно узнать подробности об обновлении.

Накрутка Soundcloud — Часть 1

О самом главном — Soundcloud изменил API для прослушиваний. Ранее для того, чтобы прослушивание отразилось в статистике необходимо было сначала загрузить страницу с треком, получить Cookies и извлечь необходимые данные, после чего отправить три запроса:

  1. GET https://api.soundcloud.com/i1/tracks/{Track ID}/streams?{данные доступа к API}
  2. POST https://api.soundcloud.com/tracks/{Track ID}/plays?{данные доступа к API}
  3. GET извлеченной ссылки на прослушивание

В новой версии API запросы изменились:

  1. GET https://api-v2.soundcloud.com/media/…
  2. GET https://api-v2.soundcloud.com/dashbox/…
  3. POST https://{…}.soundcloud.com/v1/events

При этом в последнем запросе передается большое количество данных в JSON формате:

Такие дела. Успехов всем тем, кто попытается разобраться в этом.

Возможно, изменения в API связаны с внедрением на сервисе монетизации за прослушивания. Недавно SoundCloud делал E-mail рассылку о новой возможности, также Вы можете найти информацию о ней на странице Try Pro.

P.S. Дам небольшую подсказку другим разработчикам — большинство данных можно вытащить из блоков JSON на страницах работ, но их сначала придется разобрать и отформатировать, потому все данные находятся в одном большом блоке и они не соответствуют общепринятому синтаксису; ключи ts — это timestamp’ы, о чем можно догадаться, но второй чуть хитрее; не все команды к API описаны в официальной документации и  не у всех приложений есть доступ к ним — попробуйте декомпилировать официальное приложение и вооружитесь каким-нибудь анализатором трафика. Удачи.

Накрутка Soundcloud — Часть 2

Предыдущая часть была написана для обновления 4.11, которое так и не было выпущено. Я восстановил накрутку на Soundcloud, проверил работу и начал писать пост о новой версии, а через некоторое время Soundcloud снова изменил API:

  1. После второго запроса (https://api-v2.soundcloud.com/media/…) необходимо извлечь ссылку из ответа сервера и перейти по ней
  2. Перед последним запросом (https://l9bjkkhaycw6f8f4.soundcloud.com/v1/events) добавился еще один запрос по тому же адресу, но с другими данными в теле POST запроса:

К счастью, на этот раз их гораздо меньше.

Накрутка Soundcloud — Другое

Кроме запросов к API изменилась и работа при загрузке ссылки с работой (первый запрос, где нужно извлекать данные). И раз уж началась такая пляска, я полностью переписал весь код для работы с SoundCloud и вынес его в отдельный класс.

Единственное, что практически не изменилось — код для выполнения скачиваний. Но было добавлена проверка выполнений (о чем далее).

Между делом — новый класс для работы с сетью

В программе используется одна известная библиотека для работы с сетевыми соединениями (я не скажу, что она мне очень нравится, но исходный код DJ Helper 3 основывался на ней, поэтому я оставил все как есть). Но работа с ней весьма неудобна.

Перед каждым запросом нужно вручную устанавливать все заголовки, а после запроса — обрабатывать все коды состояния HTTP, осуществлять переадресацию в случаях, если она есть, а также распаковывать полученные данные и конвертировать ее в необходимую кодировку. Из-за всего этого код увеличивается в разы, а читаемость пропорционально падает.

Уже долгое время я по чуть-чуть писал класс для работы с этой библиотекой, который бы облегчил бы работу, чтобы впоследствии заменить код в DJ BOOSTER 4. А раз уж я начал переписывать код для работы с Soundсloud, то решил делать это на его основе.

В процессе работы обнаружилось, что в готовом (как я думал изначально) классе не хватает некоторых важных вещей, например, работы с пользовательскими заголовками в запросе. Были внесены необходимые изменения.

После завершения работы над Soundcloud и потоком накрутки (см. ниже) я почистил старый код для работы с сетевыми соединениями в большинстве модулей и заменил его на новый.

Поток накрутки

После внесения изменений, о которых я рассказал выше, я принялся переписывать те части кода потока, которые отвечали за работу с SoundCloud.

И понеслось. Общая логика работы потока основывалась на коде DJ Helper 3, хоть и была написана с нуля. Я уже многократно отмечал для себя места, которые мне не нравились, и вносил некоторые исправления, но полностью исправить недостатки, не нарушая логики работы, было невозможно. Только переписав все целиком.

Я и переписал. О самом главном:

  1. Общий код сократился на треть (если точнее — на 33,19 %), а, например, код для выполнения прослушиваний — более, чем в три раза.
  2. Исправлено несколько потенциально уязвимых к возникновению ошибок мест.
  3. Режим посещений отделен от кода, выполняющего накрутку прослушиваний и скачиваний.
  4. Ранее потоки могли сообщить пользователю только о том, что именно они выполняют (из-за особенностей реализации и ограничения загрузки по размеру файла). Теперь же они могут с уверенностью сказать, выполнили ли они прослушивание или нет (увидеть это можно на скриншоте журнала работы чуть ниже).
  5. При переходе потока в режим ожидания в случае превышения скорости накрутки время «сна» рассчитывается правильнее. Это значит, что теперь потоки будут просыпаться быстрее, а текущая скорость накрутки будет стабилизироваться плавнее, без резких прыжков в меньшую или большую сторону от установленных в Планировщике значений.
  6. Удален чекер прокси. Вместо этого используется счетчик ошибок соединений для каждого прокси, и в случае превышения предела идущих подряд ошибок, он пропускается.

Реальных изменений гораздо больше, но писать обо всем… проще просто выложить весь код потока. Потому что он весь целиком и полностью — это одно большое изменение.

Например — когда я дошел до работы с прокси-листом, мне кое-что не понравилось в его реализации. Поэтому я переписал класс для работы с ним, взяв за основу TStringList. Для режима посещений теперь можно установить задержки в настройках программы. Прокси теперь отмечаются, как использованные в общем списке, даже если они не использовались для накрутки прослушиваний и скачиваний (но при этом они не добавляются в базу использованных прокси). Каждый поток содержит «маячок», по которому отслеживается возможное подвисание потока, в случае чего принудительно закрывается HTTP соединение. Переписан блок, который извлекает данные со страниц для ссылок PDJ — он работал хреново, я серьезно, и мог, например, не обработать страницы с файлами очень маленького (несколько сотен килобайт) или очень большого размера (несколько гигабайт). Сообщения потоков отделены от общих сообщений (см. раздел «Журнал» ниже), они стали более информативными, добавлены служебные сообщения для отладки (по-умолчанию — не отображаются). Внесены изменения в модуль, управляющий задачей, чтобы из потока иметь доступ к ссылкам по индексу. Исправлены баги, самый серьезный из которых — непропуск исключенной из накрутки ссылки. Уф…

Есть еще кое-что важное: вся работа с сайтами была переписана под класс для работы с сетью, о котором я сказал выше. После этого я вручную сравнил все запросы и их заголовки, отправляемые программой и браузером Google Chrome. В версии 4.14 они полностью совпадают.

Изменения интерфейса и Журнал

Интерфейс программы получил множество небольших изменений. В настройках появилась одна новая опция, а пара опций исчезла. В окне статистики добавлена приятная мелочь.

Но самое заметное изменение — Журнал.

Теперь сообщения программы и потоков разделены.

На вкладке «Общий» отображаются только основные сообщения программы (см. первый скриншот в начале страницы) — было очень неудобно, когда они терялись в огромной простыне сообщений потоков. Кроме того, лог очищался после определенного количества сообщений, теперь очищается только журнал потоков (но лимит сообщений увеличен).

Другие изменения

Все это объединено одним пунктом в истории версий — «Другие изменения и исправления».

Из полезных мелочей — обновлен список User-Agent’ов и dll библиотеки для работы с SSL соединениями.

И да, из программы удалена возможность получать новостные и рекламные сообщения.

Бесплатная версия — R.I.P.

Теперь есть только две версии — Unregistred и PRO.

Кроме того, уже в среду (28 ноября) изменится ценовая политика и цена увеличится, о чем я расскажу в одном из ближайших постов.

P.S.

А где версии 4.11, 4.12 и 4.13? После первого обновления Soundcloud я планировал выпустить версию 4.11, затем я внес дополнительные изменения и версия стала 4.12, затем я сделал все то, что сделал, но не все любят цифру 13.

P.P.S.

Пост был подготовлен 25.11, в день, когда вышло обновление. Я уже знаю про баг с завершением работы. Обновление 4.15 с исправлением этой ошибки (и дополнительными изменениями) уже сегодня.

DJ BOOSTER 4 — версия 4.14: 2 комментария

  1. Денис

    плохо, что эта версия (незарегистрированная глючит и вылетает), на данный момент использую с лицензийей на месяц на которой soundcloud не работает(
    Dj helper2 так же не починили,
    dj helper удобен по статистике, бюстер удобен что поставил и работает по кругу хоть сутки, но хотелось, чтобы было всё в одном флаконе и саундклауд и шоубиза(сайт не работал месяц вообще), и не тыкание постоянно в статистику, в этом плане эталон по интерфейсу именно 2 хелпер, а так это 2 разных приложения, можно было бы оба приложения допилить и продавать для разной аудитории, ещё про моб версию как-то я упоминал

    1. Admin Автор записи

      Все ошибки исправлены в последней версии. Надеюсь, что работа DJ Helper 2 будет восстановлена в течение недели. Работа со статистикой будет немного изменена в следующем обновлении DJ BOOSTER 4.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.