IT-инфраструктура для бизнеса и творчества

Энтузиаст запустил Spotify на роботе-пылесосе Xiaomi Vacuum Cleaner

Инструкция и демонстрация очень грязного звука.

Консультант по кибербезопасности из Сиднея Эдди Чжанг рассказал, о запуске музыки из стримингового сервиса Spotify на роботе-пылесосе Xiaomi Vacuum Cleaner. Для этого он использовал командную строку Curl и Raspotify — неофициальный клиент Spotify для устройств Raspberry Pi.

По словам Чжанга, процесс не требует больших технических знаний, так как «вся тяжелая работа уже была проделана умными людьми». Пользователю нужно:

  • По инструкции получить доступ к пылесосу через защищенный SSH-протокол.
  • Установить Curl командой:
apt-get install -y curl
curl -sL https://dtcooper.github.io/raspotify/install.sh | sh
  • Создать конфигурационный файл .config для запуска Spotify-приложения Librespot. Его содержимое уже подготовил Чжанг (rockrobo — название пылесоса):
root@rockrobo:~# chmod 644 /etc/init/librespot.conf root@rockrobo:~# cat /etc/init/librespot.conf description "Librespot" start on filesystem and net-device-up IFACE=wlan0 exec /usr/bin/librespot --name "rockrobo" --bitrate 320
  • Запустить Libresport командой:
service librespot start
{ "author_name": "Евгений Делюкин", "author_type": "editor", "tags": ["xiaomi","spotify","raspberrypi"], "comments": 3, "likes": 22, "favorites": 2, "is_advertisement": false, "subsite_label": "dev", "id": 82426, "is_wide": true, "is_ugc": false, "date": "Tue, 10 Sep 2019 11:57:41 +0300", "is_special": false }
(function () { let cdnUrl = `https://specialsf378ef5-a.akamaihd.net/SelectelBranding/images/` let previousArticleNumber = null let currentArticleNumber = 0 let platform = 'Desktop' let articles = [ // { // name: 'camera', // url: `${cdnUrl}CameraCat`, // text: 'умную камеру для\u00A0наблюдения за\u00A0котиками', // link: '1', // }, { name: 'chill', url: `${cdnUrl}ChillCat`, text: 'трекер, который подскажет, когда пора отдохнуть', link: 'https://vc.ru/promo/288561-eye-tracker', }, // { // name: 'cloud', // url: `${cdnUrl}CloudCat`, // text: 'котика: даёшь ему «пять», а\u00A0он делает бэкап в облако', // link: '3', // } ] let buttonCycle = document.querySelector('.button--cycle') let textField = document.querySelector('.selectel-footer-subtitle') let imageAgent = document.querySelector('.image--agent') let banner = document.querySelector('.selectel-footer') buttonCycle.addEventListener('click', cycleClick) let media = window.matchMedia("(max-width: 570px)") media.addEventListener('change', matchMedia) function matchMedia() { if (media.matches) { platform = 'Mobile' } else { platform = 'Desktop' } update() } matchMedia() function cycleClick(event) { if (event) { event.preventDefault() event.stopPropagation() } window.open('https://vc.ru/tag/selectelDIY', '_blank') //cycle(event) } function cycle(event) { // incrementArticleNumber() textField.innerHTML = generatedText() imageAgent.src = articles[currentArticleNumber].url + platform + '.svg?5' imageAgent.setAttribute("class", "") imageAgent.classList.add('image--agent', articles[currentArticleNumber].name) banner.href = articles[currentArticleNumber].link } function update() { banner.href = articles[currentArticleNumber].link imageAgent.src = articles[currentArticleNumber].url + platform + '.svg?5' textField.innerHTML = generatedText() } function incrementArticleNumber() { previousArticleNumber = currentArticleNumber if (currentArticleNumber >= articles.length - 1) { currentArticleNumber = 0 } else { currentArticleNumber++ } } function generatedText() { let defaultText if (platform === 'Desktop') { defaultText = `Мы тут собрали %text%. Хотите почитать?` } else { defaultText = `Мы тут собрали %text%.` } return defaultText.replace('%text%', articles[currentArticleNumber].text) } function getRandom(min, max) { min = Math.ceil(min) max = Math.floor(max) return Math.floor(Math.random() * (max - min + 1)) + min } (function create() { currentArticleNumber = getRandom(0, articles.length - 1) cycle() let page = document.querySelector('.page--entry') if (page) { function insertAfter() { let parents = page.querySelectorAll('[data-id="7"]') let referenceNode = parents[0] referenceNode.parentNode.insertBefore(banner, referenceNode.nextSibling); loaded() } setTimeout(() => insertAfter(), 0) } }()) function loaded() { banner.classList.add('loaded') } loadImages([ `${cdnUrl}CameraCatDesktop.svg`, `${cdnUrl}ChillCatDesktop.svg`, `${cdnUrl}CloudCatDesktop.svg`, `${cdnUrl}CameraCatMobile.svg`, `${cdnUrl}ChillCatMobile.svg`, `${cdnUrl}CloudCatMobile.svg`, ]) function loadImages(urls) { return Promise.all(urls.map(function (url) { return new Promise(function (resolve) { var img = document.createElement('img'); img.onload = resolve; img.onerror = resolve; img.src = url; }); })); } }())
0
3 комментария
Популярные
По порядку

Фигня. А вот слабо ему запустить Spotify в России?

11

VPN вам в помощь

–1

Опять кожаным ублюдкам заняться нечем.

0
Читать все 3 комментария
Как сделать карьеру из незакрытого со школы гештальта

История создания самого успешного в России университетского мобильного приложения

Старинный пруд в Москве очистят при помощи водной мяты

Систему природной очистки воды при поддержке крупного французского фитокосметического бренда презентовали в Ботаническом саду МГУ «Аптекарский огород». Рассказываем, как устроена технология и в чем выгода использования растений.

фото: пресс-служба "Аптекарского огорода"
Рецензия на книгу: «На крючке. Как создавать продукты, формирующие привычки»
Вторая часть пивозавро-стикеров для IT

Первая часть пивозавро-стикеров зашла очень хорошо. Мы попали на первую строчку в популярном, и видим, что вы их юзаете) Поэтому выкатываем вторую часть!

Банк России утвердил порядок тестирования неквалифицированных инвесторов

Банк России утвердил в новой редакции стандарт, который устанавливает порядок тестирования неквалифицированных инвесторов для допуска к совершению сделок со сложными финансовыми инструментами.

Готовимся к техническому собеседованию при помощи чат-бота: проект студентов SkillFactory

Если вы загуглите «как пройти техническое собеседование», найдёте статьи, инструкции, кейсы, а также анекдоты и мемы. И вряд ли отыщете «волшебную таблетку», которая поможет вам и даст все ответы. Мы тоже не нашли — и сделали чат-бота для подготовки к техническому собеседованию. Рассказываем, кто и как его создавал и что получилось в итоге.

Что такое сложный процент. Рассказывает персональный брокер

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

Еврокомиссия официально предложила сделать USB-C единым зарядным портом для смартфонов и других устройств Статьи редакции

Принятие проекта, вероятно, сильнее всего повлияет на Apple.

«Сбер» запустил первую в России наружную 3D-рекламу с CGI-персонажами Чебурашкой и крокодилом Геной Статьи редакции

Видео длиной семь минут создавали около четырёх тысяч часов.

3D-рекламу с CGI-персонажами «Сбер»
Предсказал будущее интернета в 90-ых и пропал, когда его прогнозы стали сбываться: история Филипа Агре Статьи редакции

Исследователь рассказал об опасности сбора данных ещё до запуска Google и Amazon, поставил под сомнение этичность работы над искусственным интеллектом и предсказал китайскую систему рейтинга.

Филип Агре NPR
90 самых полезных статей на vc.ru для предпринимателей

Привет, это команда Логомашины. За несколько лет мы прочитали тысячи материалов на vc.ru, а сегодня делимся подборкой из 90 статей, которые нам кажутся самыми полезными для тех, кто создаёт или развивает свой бизнес.

null