четверг, 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

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


воскресенье, 4 ноября 2012 г.

Говорим погоду с помощью festival.

Гугл закрыл свой сервис iGoogle и вслед за этим и API к погоде, а так было удобно. И поэтому этот скрипт стал не актуален. Решил написать новый.

На этот раз погоду брать будем с http://www.worldweatheronline.com/, там достаточно зарегистрироваться, выбрать формат CSV (именно на него расчитан мой скрипт) и получить ссылку вида:

http://free.worldweatheronline.com/feed/weather.ashx?q=Город,Страна&format=(CSV или XML)&num_of_days=2(кол-во дней)&key=(персональный код)

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

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

четверг, 28 июня 2012 г.

Рабочий стол в стиле Pip-Boy 3000

Если кто не знает что такое Pip-Boy 3000 можно почитать тут.
Видео, как это работает:

Делал я это давно, месяца три назад. В голове уже все перемешалось и конфиги не прокомментированны, поэтому буду описывать в общих чертах, как это работает.
Все изображения и иконки, включая обои, которые используются, здесь.
Кнопки STATS, ITEMS и DATA это idesk иконки, их можно скачать тут.

На каждую повешан скрипт который удаляет из папки ~/.idesktop/ не нужные иконки(скрипты для иконок idesk).

Если нажать на кнопку STATS, из папки ~/.idesktop/ удаляется все лишнее кроме самих кнопок STATS, ITEMS и DATA, и еще кнопки OFF, которая в левом нижнем углу экрана (она отключает радио). Также перезапускаются conky с другим конфигом (все конфиги conky тут).

Кнопка ITEMS.
Из папки ~/.idesktop/ удаляется все иконки. Остаются: кнопки ITEMS, DATA, STATS, иконки приложений и кнопка OFF. Conky запускаются с другим конфигом. Кнопка DATA работает аналогично предыдущим. Лишнее удаляется лишнее копируется то, что надо. Не вижу смысла расписывать.

Ну и все скрипты можно скачать тут.
Чуть не забыл. Для того чтобы каждый раз не запускать кучу скриптов по нажатию на кнопку ITEMS, таких, как прогноз, почта, температура. Есть главный скрипт который запускает все скрипты через cron каждые 10 минут и записывает все данные в файл. Conky, в свою очередь, считывает построчно все данные и выводит. Координаты изображений, иконок, кнопок придется подбирать под свой экран.

Когда все это писал, не думал, что будет такой ажиотаж и многим захочется это заиметь. Не думал о читабельности конфигов и не расставлял комментарии, поэтому стороннему человеку будет сложно разобраться. Если кто-то разберется и сделает у себя, обязательно отписывайтесь в комментариях, вам надо медаль дать. В самом пип бое не задействованы некоторые крутилки, идеи по использованию пишите в комменты, а так же желательно способы реализации. Удачи.

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

воскресенье, 17 июня 2012 г.

Бэкап базы данных MySQL

mysqldump

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

mysqldump -u [username] -p [password] [database] > [dump_name.sql]

[username] – имя пользователя который имеет доступ к базе данных.
[password] – пароль пользователя.
[database] – имя базы данных.
[dump_name.sql] – имя файла, дампа на выходе.
Пример как получить дамп базы данных mydb_forum на MySQL сервере:

mysqldump -uadmin -pSuperPassword mydb_forum > mydb_forum.sql

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

mysql -uadmin -pSuperPassword mydb_forum < mydb_forum.sql

Что бы сделать дамп всех БД которые находятся у вас на MySQL сервере воспользуйтесь след. примером:

mysqldump -uAdmin -pMyPass --all-databases > all_databases.sql

Для больших баз ее лучше не использовать, а подыскать что-нибудь другое.

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

Установка CMS Open Cart.



Скачиваем:

wget http://myopencart.googlecode.com/files/ocstore_v1.5.3.1.zip
unzip ocstore_v1.5.3.1.zip

Копируем в /var/www/

cp -r upload/* /var/www/

Теперь в браузере открываем http://Адрес_сервера/install/
откроется окно установки Opencart.
Соглашаемся с лицензией.
У меня не был установлен  cURl, поэтому устанавливаем:

aptitude install php5-curl

Эти файлы должны иметь разрешение на запись
/var/www/config.php
/var/www/admin/config.php
Делаем так:
chmod 666 /var/www/admin/config.php /var/www/config.php

Эти каталоги, а также все их подкаталоги и файлы в них должны иметь разрешение на запись.
/var/www/system/cache/
/var/www/system/logs/
/var/www/image/
/var/www/image/cache/
/var/www/image/data/
/var/www/download/
Делаем так:
chmod 777 -R /var/www/system/cache/ /var/www/system/logs/ /var/www/image/ /var/www/image/cache/ /var/www/image/data/ /var/www/download/

На следующей странице указываем все необходимое.
Все, opencart установлен.

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