четверг, 20 ноября 2014 г.

Google play music & vk.

     Эта заметка будет интересна в первую очередь владельцам платной подписки Google Play Music, у меня такая подписка есть. Тысячи треков доступны бесплатно только в браузере на дексктопе или на андроид устройстве, но что делать если хочется послушать музыку на простеньком mp3 плеере? Сначала я думал купить плеер на андроид, посмотрев цены на яндекс маркете, сразу откинул эту мысль, тем более проще купить дешевый смартфон, т.к. ничего кроме музыки мне на нем не надо. Вот казалось бы и выход - дешевый смартфон, но хочется же хардварные кнопки, а не сенсорное управление. Выход нашелся.

     Сначала смотрим, есть ли у Google Music официальный API, как оказалось его нет, но есть неофициальный. Также есть несколько проектов, использующие его. Мне больше понравился GMusicProxy. Так как скачать треки не получится даже при помощи неофициального API, план будет следующий. Получаем названия треков и ищем где их скачать. Названия мы получим при помощи GMusicProxy.
Установка сводится к паре команд:

# aptitude install python-pip
# pip install https://github.com/diraimondo/gmusicproxy/tarball/master

Перед первым запуском нужно узнать id одного из android устройств. Для этого запускаем:

$ GMusicProxy --email user@gmail.com --password SUpeRpa$$ -L

Выбираем наиболее понравившийся id и подставляем в следующую команду:

$ GMusicProxy --email user@gmail.com --password SUpeRpa$$ --device-id c11d222d333f444 --daemon

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

$ GMusicProxy --help

Допустим у вас есть плейлист который вы хотели бы скачать. Получаем список всех плейлистов:

$ curl -s 'http://localhost:9999/get_all_playlists'

У меня такой вывод:


#EXTM3U
#EXTINF:-1,Retro
http://192.168.0.62:9999/get_playlist?id=b697933f-8d3f-qwer-qwer-bddf785dcd67

#EXTINF:-1, 11.09.2014
http://192.168.0.62:9999/get_playlist?id=e672b381-qwer-4286-qwer-2ee60fd2b0a2
#EXTINF:-1,Roy Buchanan
http://192.168.0.62:9999/get_playlist?id=5947d71d-3c83-qwre-qwer-dd4f59ca4d92
#EXTINF:-1,Спид-метал/трэш-метал
http://192.168.0.62:9999/get_playlist?id=2d941d8f-qwer-4186-qwer-ce305da0813e

Если передать этот плейлист vlc он должен будет его проиграть, но у меня это не работает, хотя такой задачи и не стояло. Теперь чтобы получить список треков в плейлисте пишем:

$ curl -s 'http://192.168.0.62:9999/get_playlist?id=b437231f-qwer-1146-99b3-bddf785dcd67' | head

#EXTM3U
#EXTINF:144,Perry Como - Hot Diggity
http://192.168.0.62:9999/get_song?id=T3xqqwerbtoqobj3ftiwp6bnxl4
#EXTINF:177,Claude King - Wolverton Mountain
http://192.168.0.62:9999/get_song?id=Thmufuqwertyidmfvz2jq2i2fje
#EXTINF:177,Claude King - Wolverton Mountain
http://192.168.0.62:9999/get_song?id=Thmufuauy5qwermfvz2jq2i2fje
#EXTINF:111,Roger Miller - England Swings (Single Version)
http://192.168.0.62:9999/get_song?id=Tsijbqwerr2eomwq2yhvlw4p65q
#EXTINF:144,Ferlin Husky - Gone

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

$ curl -s 'http://192.168.0.62:9999/get_playlist?id=b437231f-qwer-1146-99b3-bddf785dcd67'  | egrep ^#.*  | sed 's/^#EXTINF:[0-9]*,//g' | sed '/^#.*/d' | head
Perry Como - Hot Diggity
Claude King - Wolverton Mountain
Claude King - Wolverton Mountain
Roger Miller - England Swings (Single Version)
Ferlin Husky - Gone
Vaughn Monroe - Riders In The Sky
Tennessee Ernie Ford - Sixteen Tons
Don Gibson - Oh, Lonesome Me
Lefty Frizzell - Saginaw, Michigan

Red Foley - Chattanoogie Shoe Shine Boy

Вот и все. Теперь думаем откуда их скачать. В vk пока у нас самый большой архив с музыкой. Опять после непродолжительного гуглинга находим этот скрипт. Он работает без авторизации и не запрашивает ваш логин и пароль. Сохраняем его:

$git clone https://github.com/snoopcatt/vksearch.git ~/.src/vksearch/

Чтобы каждый раз не писать ~/./.src/vksearch/vksearch для запуска, добавим алиас:

$ alias vksearch="/home/stas/.src/vksearch/vksearch"
$ echo 'alias vksearch="/home/stas/.src/vksearch/vksearch"' >> ~/.bashrc

Список опций можно посмотреть запуском без параметров:

$ vksearch

Для его работы нужно получить токен перейдя по этой ссылке, нажимаем "разрешить" и наc переводят на страницу в адресе которой указан токен. Копируем его в текст самого скрипта напротив vkapi_token=.

Теперь собираем все вместе в отдельном таком скриптике:

#!/bin/bash
curl -s "$1" | egrep ^#.* | sed 's/^#EXTINF:[0-9]*,//g' | sed '/^#.*/d' > /tmp/playlist
while read line
do
vksearch --count=1 --get-one --save-to=/home/stas/Музыка/ --search "$line"
done < /tmp/playlist

Скрипт (назовем его gmusic-vk.sh) сохраняет список треков и исполнителей в /tmp/playlist, построчно читает его и передает vksearch. Адрес плейлиста надо передать в первом параметре. Запускаем и ждем:

$ ./gmusic-vk.sh "http://192.168.0.62:9999/get_playlist?id=b437231f-qwer-1146-99b3-bddf785dcd67"

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


Чтобы поддержать автора, кликните на рекламу.

понедельник, 11 августа 2014 г.

GoogleCL. Инструменты google в терминале.

GoogleCL - это приложение позволяющее управлять из командной строки сервисами гугла, такими как Blogger, Picasa Web, YouTube, Google Docs и Google Calendar. Чтобы google calendar создавал мероприятия в нужной дате, надо сменить язык на английский.

Дату можно указывать так:
today - сегодня
tomorrow - завтра
15 august/любой другой месяц на английском или так:
ГГГГ.ММ.ДД
ГГГГ-ММ-ДД
ДД.ММ.ГГГГ
ДД-ММ-ГГГГ

Время в 12 или в 24 часовом формате:
11pm или 23:33 или через точку.
Если при добавлении события дату можно писать почти как угодно, то если нужен список событий за определенную дату, указывать надо именно так ГГГГ-ММ-ДД или через запятую написать несколько дат, без пробелов 2014-08-11,2014-08-12.

P.S. Я знаю, что проект существует уже давно. Ссылка на проект.

Чтобы поддержать автора, кликните на рекламу.

среда, 16 октября 2013 г.

Цветное приглашение командной строки.

Чтоб раскрасить приглашение командной строки используется переменная PS1. Если ей присвоить:

export PS1="\[$(tput bold)\]\[$(tput setaf 3)\]\u\[$(tput setaf 7)\]@\[$(tput setaf 5)\]\h:\[$(tput setaf 7)\]\w\[$(tput setaf 1)\]\\$ \[$(tput sgr0)\]"

То приглашение будет таким

user@hostname:~$

Чтобы оно осталось надо добавить строку приведенную выше в конец .bashrc.
Вот кстати неплохой генератор PS1.

Чтобы поддержать автора, кликните на рекламу.

Screen

У меня конфиг спертый отсюда, там же можно посмотреть скриншот.

$ cat .screenrc

# use visual bell
vbell on
# activity notice
activity "activity in %n (%t) [%w:%s]~"
# set a big scrolling buffer
defscrollback 50000
# auto-log
logfile $HOME/log/screen-logs/%Y%m%d-%n.log
deflog on
# Set the caption on the bottom line
caption always "%{= rw}%-w%{= BW}%n %t%{-}%+w %-="
hardstatus alwayslastline "%=%{kG}%C%A %D %M %d,%Y "
autodetach on
startup_message off
# Use below Crtl+B for prev & Crtl+N for next server title
bindkey "^B" prev
bindkey "^N" next


Чтобы он запускался при подключении к ssh, в конце .bashrc надо дописать следующее:


if [ -z "$STY" ]; then
    exec screen -dR
fi

Клавиши управления легко гуглятся и нет смыла их тут писать.

Чтобы поддержать автора, кликните на рекламу.

среда, 9 октября 2013 г.

Настройка красивостей.

Теперь можно приступить к настройке тем.
Т.к. пишу в основном для себя, поэтому будет кратко. Мне нравится эта тема http://gnome-look.org/content/show.php/Dyne?content=61936
Скачиваем и устанавливаем при помощи gtk-theme-switch.
Скачиваем это http://box-look.org/content/show.php/Dyne?content=61999 и распаковываем в /usr/share/fluxbox/styles.
Выбираем в меню по правой кнопке мыши.
Иконки распаковываем в ~/.icons/
в ~/.gtkrc-2.0 пишем
gtk-icon-theme-name = "Faenza-Elementary"

перезагружаем lightdm


Thunar

Чтобы в Thunar разделы монтировались по клику надо установить pmount и создать файл
/etc/polkit-1/localauthority/50-local.d/10-mount-internal-drives.pkla 
со следующим содержанием

[mount local fs]
Identity=unix-user:имя_пользователя
Action=org.freedesktop.udisks.filesystem-mount-system-internal
ResultAny=no
ResultInactive=no

ResultActive=yes

После перезагрузки все будет ОК

Чтобы поддержать автора, кликните на рекламу.

Первоначальная настройка

Установил Debian выбрав из компонентов только "Инструменты для ноутбука".
Настройка Wi-Fi

# wpa_passphrase имя_точки_доступа пароль > /etc/wpa_supplicant/master.conf
# iwconfig wlan0 essid точка_доступа
# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/master.conf
# dhclient wlan0

Wi-Fi работает
Чтобы wi-fi подключался при загрузке создаем скрипт со следующим содержанием. Я создаю сразу в /usr/bin/, чтобы при надобности его можно было вызвать.

#!/bin/sh
iwconfig wlan0 essid Master
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/Master.conf
dhclient wlan0

Master - имя моей точки доступа.
Делаем его исполняемым командой
# chmod +x /usr/bin/master
Пишем в /etc/rc.local  перед exit 0

master

Готово, теперь wi-fi будет подключаться автоматически при загрузке, чтобы не проделывать для каждой точки доступа все вышеописанное можно установить пакет wicd, это графическая утилита для управления вай-фаем.

Устанавливаем остальное

# aptitude install less tilda mc vim lightdm fluxbox thunar thunar-archive-plugin
# lightdm

Вводим учетные данные и попадаем во fluxbox, мой любимый WM.
Чтобы в mc для редактирования использовался vim делаем следующее, а для просмотра less делаем следующее

$ echo "export EDITOR=vim" >> ~/.bashrc
$ echo "export PAGER=less" >> ~/.bashrc

После перезагрузки все будет ОК, но чтобы не ждать
$ export EDITOR=vim
$ export PAGER=less

Первоначальная настройка закончена.