Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 472 сообщений
Cообщения с меткой

macos - Самое интересное в блогах

Следующие 30  »
Topbot

Семь причин НЕ ЕХАТЬ в Ирландию

Суббота, 23 Июля 2016 г. 23:01 (ссылка)

...Читать далее

источник - macosmacos 
[1 ссылок 146 комментариев 5770 посещений]
читать полный текст со всеми комментариями
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Workflow просмотра сериалов для Alfred

Воскресенье, 10 Июля 2016 г. 16:41 (ссылка)

В конце предыдущей своей статьи я начал рассказывать о том как у меня организован просмотр сериалов, но решил что это — тема для отдельной заметки.



Для тех кто не знает что такое Alfred

Alfred — это Spotlight на стероидах. Умеет чуть более чем всё что умеет Spotlight, плюс, начиная со второй версии, поддерживает написание, а так же использование написанных другими людьми, так называемых, workflows. То бишь, расширений функциональности самописными скриптами. Для их написания поддерживается несколько скриптовых языков:




  • bash

  • zsh

  • php

  • ruby

  • python

  • perl

  • osascript

  • javascript



Речь в этой статье пойдет об одном из таких расширений.



Немного забегая вперед, хочу показать, что же у нас есть в итоге…

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



Красота, не правда ли?



На деле, заголовок и подзаголовок берутся из имен директорий. Например, последняя строчка из списка выше — папка "Уэйуорд Пайнс[lostfilm]".



Когда выбираем интересующий пункт, запускается плеер (в моем случае — VLC) и начинает воспризводить первую непросмотренную серию из выбранного раздела. По окончании воспроизведения, он самостоятельно закрывается (у VLC есть параметр --play-and-exit). После чего скрипт предлагает удалить просмотренный эпизод, спрашивает насколько по пятибальной шкале он Вам понравился и отмечает оный просмотренным с соответствующим рейтингом на myshows.me. Уведомляет об успехе/неудаче. И, если уведомление гласит что все хорошо, кликом по нему можно попасть прямиком на страницу только что просмотренного эпизода.



Для уведомлений используется terminal-notifier, который включен в workflow.

Так же зависимостями являются пакеты requests и alfred-workflow для python. Оба тоже включены в workflow.



Перед использованием, workflow предложит указать:




  • Папку в которой лежат сериалы

  • Плеер который будет их воспроизводить

  • Логин и пароль с myshows.me



Бонусы



Помимио просмотра сериалов, сделал возможность посмотреть список уже вышедших, но еще не просмотренных по данным с аккуанта на myshows.me.



Unwatched



А так же, список тех что относительно скоро выйдут. Снова же используя api myshows.me и список подписок.



Mr. Robot



TBBT



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



Ссылка на workflow.

Реализовано автообновление, используя GitHub Releases.


Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/305346/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Cериалокачалка на python3 с поддержкой расширений

Пятница, 08 Июля 2016 г. 14:48 (ссылка)

В качестве вступления стоит сказать что я пользуюсь macOS и потому некоторые части:




  • Автозапуск (launchd)

  • Формат конфигурационных файлов (plist)

  • Программа, используемая для уведомлений (terminal-notifier)



будут специфичны для этой ОС. Однако, если Вас заинтересует проект, думаю, поменять пару путей и слегка поправить несколько функций, чтобы заставить этот код работать с Вашей системой уведомлений, yaml'ом и, допустим, кроном, не составит труда.



Итак, к делу.



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



Что же он содержит?




  1. Класс парсера в parser.py

  2. Класс загрузчика в core.py

  3. Плагины, наследующие класс загрузчика в директории pugins

  4. Файлы конфигурации плагинов в директории configs

  5. Директорию icons для иконок увдомлений

  6. Файл main.py, дергающий плагины

  7. Файл install.py



Класс парсинга



Так как почти на всех сайтах сериалов есть свои RSS-ленты, было решено для упрощения процесса написания плагинов слепить функцию парсинга, позволяющую автоматически распарсить rss по ссылке и выдать список пар (заголовок, ссылка) с возможностью указания кодировки.



Чуть позже пришла необходимость простого парсинга html, а потом подумалось что некоторые сайты могут отдавать ссылки и через api в формате json.



Так функция превратилась в класс, хранящий сессию (requests Session) для сайтов, требующих авторизации и возвращающий response-объект с методами html(), rss(), json() и auto(). Последний пытается угадать содержимое (xml, html или json) и кодировку по заголовку 'Content-Type'. По умолчанию — 'utf-8' и html.




  • Метод html() возвращает объект beautifulsoup всей страницы

  • Метод rss() вызвращает массив кортежей (заголовок, ссылка)

  • Метод json() возвращает объект, полученный методом json.loads текста страницы



Класс загрузчика



Предоставляет плагинам методы parse() и download().




  • Метод parse() предоставляет возможность передать ссылку и параметры url. Он же проверяет 'If-Modified-Since' если сайт предоставляет данные о последнем изменении. Возвращает response-объект из файла parse.py.

  • Метод download() принимает словарь с данными о названии сериала, эпизода, ссылкой и прочими мелочами, а так же http-заголовки и куки. А далее самостоятельно производит всю магию. Загружает файл в предварительно созданную им папку "Название_сериала[имя_класса_плагина]", где предполагается что имя класса плагина — название студии озвучания/сайта с которого происходит загрузка. Если файл — торрент, загружает эпизод с торрента и удаляет файл торрента. Загрузка производится с помощью aria2c, который должен быть установлен в системе и находиться в одной из директорий, прописанных в $PATH. После чего вызывается метод save(), который сохраняет ссылки в файл конфигурации для предотвращения повторной загрузки.

  • Метод __notify(), который вызывается при начале и окончании загрузки, если по пути /usr/local/bin/terminal-notifier обнаружено соответствующее приложение. Посмотреть как это выглядит можно чуть ниже.



Плагины



Классы, наследующие класс загрузчика, реализующие метод start() в котором надо произвести парсинг и вызвать метод download() с ожидаемыми параметрами.



Файлы конфигурации плагинов



*.plist



Содержат:




  • Интересующее качество

  • Список подписок

  • Список исключений ("полный сезон", например)

  • last_modified для сайтов, дающих информацию о последнем изменении

  • Сюда же будет записан список ссылок для предотвращения повторной загрузки



Директория icons



Папка в которую можно положить файлы иконок, которые будут использованы при уведомлении о загрузке/окончании загрузки эпизодов из соответствующих источников. Названия иконок должны соответствовать названиям плагинов, но с расширеним jpg/ico/png.



main.py



Дергает поочередно метод start() всех плагинов в директории plugins.



install.py




  • Установит зависимости

  • Переместит файлы проекта в ~/.NB-series-downloader

  • Создаст файл автозапуска

  • Удалит директорию склонированного репозитория



Автозагрузка



Файл install.py сделает это за Вас, но если Вы решили сделать все вручную, то...



Насколько мне известно, launchd ничего не знает о переменных окружения, посему Вам придется самостоятельно заменить в тексте ниже $HOME на путь до домашнего каталога вашего пользователя /Users/Username и, возможно, изменить путь до директории со скриптами, если вы положили их в другое место.







Disabled

EnvironmentVariables

PATH
/usr/local/bin

KeepAlive

SuccessfulExit


Label
series_downloader
ProgramArguments

/usr/local/bin/python3
$HOME/.NB-series-downloader/main.py

RunAtLoad

StartInterval
900
WorkingDirectory
$HOME/.NB-series-downloader



Сам файл с этим содержимым стоит назвать series_downloader.plist и положить в ~/Library/LaunchAgents/.

Загрузить описанные в этом файле задания сразу можно командой



launchctl load ~/Library/LaunchAgents/series_downloader.plist


Иначе задания активируются при следующей загрузке компьютера.

Эти действия заставят main.py, лежащий в директории $HOME/.NB-series-downloader/, запускаться каждые 900 секунд (15 минут).



Итого



Ссылка на github.



Честно говоря, первое что я туда выкладываю, так что мог напортачить. Подскажите, если что не так.



Уведомление о начале загрузки:



Уведомление о начале загрузки

После загрузки надпись "Загрузка начата" сменится на "Загрузка закончена".

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



Сериалы в моем случае складываются в Series в том же каталоге (можно указать иное место в self.series_dir класса downloader в core.py).



А для просмотра загруженных серий мною написан workflow для Alfred 3:

Список сериалов

После просмотра каждой серии он предлагает:




  • Удалить оную (я не храню архив, всё просмотренное отправляется в корзину)

  • Запрашивает оценку эпизода от 1 до 5, а так же отмечает только что просмотренную таковой в моем аккаунте на myshows.me и выставляет рейтинг эпизода используя их api

  • Выводит уведомление о том удачно ли все прошло

  • По клику на уведомление можно открыть страницу только что просмотренного эпизода на myshows



Но это всё — уже совсем другая история...


Original source: habrahabr.ru.

https://habrahabr.ru/post/304770/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Topbot

Игра Престолов. Мало им было по телевизору!

Понедельник, 04 Июля 2016 г. 19:01 (ссылка)

...Читать далее

источник - macosmacos 
[3 ссылок 124 комментариев 5181 посещений]
читать полный текст со всеми комментариями
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Topbot

Куда уходят путешественники

Пятница, 01 Июля 2016 г. 19:41 (ссылка)

...Читать далее

источник - macosmacos 
[1 ссылок 130 комментариев 4237 посещений]
читать полный текст со всеми комментариями
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Topbot

Порочная молодёжь свободной Ирландии

Среда, 29 Июня 2016 г. 05:01 (ссылка)

...Читать далее

источник - macosmacos 
[0 ссылок 185 комментариев 6115 посещений]
читать полный текст со всеми комментариями
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Topbot

ИРЛАНДИЯ. В ДУБЛИНЕ — ПИТЬ!

Пятница, 24 Июня 2016 г. 12:00 (ссылка)

...Читать далее

источник - macosmacos 
[0 ссылок 52 комментариев 5252 посещений]
читать полный текст со всеми комментариями
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<macos - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda