rtorrent i powiadomienia sms

Oto krótki i szybki sposób na to, żeby nasz rtorrent informował nas sms’em o zakończeniu pobierania danego pliku ;-)

Najpierw musimy zaopatrzyć się w skrypt, przez który będziemy wysyłać sms’y za pomocą jednej z bramek sponosrowanych. Ja osobiście użyje do tego celu, skrypt napisany w pythonie obsługujący era-omnix.

#!/usr/bin/python2.4
# -*- coding: iso-8859-2 -*-
#
# Script: sms.eraomnix.py
# Version: 1.1
# Date: 06/12/2005
# Works ONLY with python 2.4.1
# Copyright 2005 Rodion rodion7(at)o2.pl
#

import cookielib, string, urllib, urllib2

debug = 0

login = 'login'
password = 'haslo'

def sendsms(sender, recipient, message):

    baseURL='http://www.eraomnix.pl'
    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

    request = urllib2.Request(baseURL + '/msg/user/sponsored/welcome.do')
    request.add_header('User-Agent', 'Opera/8.51 (Windows NT 5.0; U; en)')
    try:
        result = opener.open(request)
        if debug:
            print 'Connecting with',baseURL
    except IOError:
        print 'Connection with %s failed.' % baseURL

    request = urllib2.Request(baseURL + '/sso2/omnix_iframe/login.jsp')
    request.add_header('User-Agent', 'Opera/8.51 (Windows NT 5.0; U; en)')
    try:
        result = opener.open(request)
        if debug:
            print 'Connecting with login frame'
    except IOError:
        print 'Connection with login frame failed.'

    for line in result.readlines():
        if '"org.apache.struts.taglib.html.TOKEN"' in line:
            token = line.strip().split()[-2].split('"')[1]

    parmdicta = {'org.apache.struts.taglib.html.TOKEN' : token,
                 'login' : login,
                 'password' : password}

    request = urllib2.Request(baseURL + '/sso2/authenticate.do')
    postdata = urllib.unquote(urllib.urlencode(parmdicta))
    request.add_data(postdata)
    request.add_header('User-Agent', 'Opera/8.51 (Windows NT 5.0; U; en)')
    try:
        result = opener.open(request)
        if debug:
            print 'Login in',baseURL
    except IOError:
        print 'Connection with %s failed.' % baseURL

    for line in result.readlines():
        if '"org.apache.struts.taglib.html.TOKEN"' in line:
            token = line.strip().split()[-2].split('"')[1]

    parmdictb = {'org.apache.struts.taglib.html.TOKEN' : token,
                 'top.phoneReceiver' : recipient,
                 'top.text' : message,
                 'top.characterLimit' : '110',
                 'top.signature' : sender,
                 'send.x' : '0',
                 'send.y' : '0'}

    request = urllib2.Request(baseURL + '/msg/user/sponsored/sms.do')
    postdata = urllib.unquote(urllib.urlencode(parmdictb))
    request.add_data(postdata)
    request.add_header('User-Agent', 'Opera/8.51 (Windows NT 5.0; U; en)')
    try:
        result = opener.open(request)
        if debug:
            print 'Send SMS'
    except IOError:
        print 'Connection with %s failed.' % baseURL

# Main
if __name__ == '__main__':
    import sys
    if len(sys.argv) < 4:
        print 'Sposób użycia:', sys.argv[0], '  '
	print 'Przykład: ', sys.argv[0], 'inspektor 600123456 bardzo być może ale żaba pozostaje żabą'
	sys.exit(1)
    sender, recipient, message = sys.argv[1], sys.argv[2], ' '.join(sys.argv[3:])
    sendsms(sender, recipient, message)

Zapisujemy nasz skrypt pod nazwą sms-era i wpisujemy odpowiednie haslo i login w dane skryptu.
Nadajemy temuż skryptowi prawa do wykonywania:

chmod +x sms-era

I przenosimy do /usr/bin:

 mv sms-era /usr/bin/

Teraz zajmiemy się plikiem konfiguracyjnym rtorrenta. Otwieramy .rtorrent.rc i dopisujemy do końca pliku:

#Powiadomienie Sms
on_finished = sms_msg,"execute=sms-era,rTorrent,668774225,Pobrano:,$d.get_base_filename="

No i gotowe.Na naszą komórkę po zakończonym pobieraniu nadejdzie sms typu:

rTorrent:Pobrano: *Przykładowa_Nazwa_Torrenta*
//reklamy_bramki…

Oczywiście można zrobić powiadomienia innych zdarzeń rtorrenta. Istnieją jeszcze funkcje np. on_start, on_stop, on_erase. Zachęcam do eksperymentowania ;-)

Wyciąganie audio z pliku wideo

Chce zaprezentowac 2 szybkie sposoby na wyjęcie interesującej nas ściezki dźwiękowej z filmu wideo, używając przy tym mplayera ;-)

Przykład #1: Mamy film, i chcemy zgrać całą ścieżkę dźwiękową
Prosty kod:

mplayer film.avi -vc null -ac null -dumpaudio -dumpfile audio.mp3

Nawet nie ma co tłumaczyć ;-) To po prostu działa.

Przykład #2: Mamy film, i chcemy zgrać dźwięk z przedialu (02:38 /04:52) do postaci .mp3
Kod:

mplayer film.avi -ss 00:02:38 -endpos 00:02:14 -vc null -vo null -ao pcm:fast
lame audiodump.wav audio.mp3

Pierwsza linijka zrzuca nam dźwięk do pliku audiodump.wav. Ważna jest flaga -endpos. Jak widać nie ma ona wartości 04:52, ponieważ końcową pozycję liczy się od początku odtwarzania pliku tj. od -ss czyli 02:38. Potem konwertujemy wav na mp3 i koniec ;-)

Skrypt do konwersji mp3 [bash]

Nadszedł moment, w którym po raz pierwszy zgrywałem muzykę na mój odtwarzacz mp3 poprzez Linuxa. Jako że jest to stosunkowo mało pojemna „empetrójka” – 512 mb – zawsze wszystkim plikom mp3 przygotowanym do kopiowania, zmieniałem bitrate na 128kbps w celu zaoszczędzenia miejsca. Teoretycznie po takiej zmianie jest spadek jakości dźwięku, ale ja osobiście nie odróżniam 320kbps od 128kpbs ( http://mp3ornot.com/ ). Tak więc pogooglowałem i znalazłem pakiet lame, dzięki któremu taka konwersja jest możliwa, i właśnie na lame bazuje mój skrypt.

Całośc może wyglądać ( i ma prawo ^^ ) kulawo, ponieważ to mój pierwszy skrypt w bashu.

zewnętrzny link -> http://wklej.org/txt/3dd3d15532

#!/bin/bash
# Autor: Jarosław Zywert / www.inquistor.info/blog

if [ -x /usr/bin/lame ]
then
echo "Lame: OK"
else
echo "Nie masz zainstalowanego pakietu Lame
Zainstaluj pakiet za pomocą aptitude, apt-get lub innego managera pakietów"
exit
fi

bitrate="$2"
nazwa_pierwotna="$3"
nazwa_wyjsciowa="`basename $nazwa_pierwotna .mp3`[$bitrate kbps].mp3"

case $1 in
-h) echo "    POMOC:
Konwerter MP3
Opis: Skrypt do konwersji bitrate plików mp3

SKŁADNIA:
mp3bitrate [-OPCJA] [BITRATE] [PLIK]

-s -konwersja pojedynczego pliku, skonwertowany
plik ma nazwę nazwa_pliku[BITRATE].mp3
-a -konwersja calego aktualnie otwartego folderu,
wyjscie zapisywane jest w podrzednym folderze
[BITRATE]. Domyślny bitrate to 128kbps.
" ;;

-s) lame --mp3input -b "$2" "$nazwa_pierwotna" "$nazwa_wyjsciowa" ;;

-a) mkdir "$2kbps"
for i in *.mp3
do lame --mp3input -b "$2" "$i" "$2kbps/$i"
done | echo "Konwersja zakończona pomyślnie.";;


*) echo "Brak odpowiednich argumentów
Pomoc jest dostepna pod: mp3bitrate -h" ;;
esac

Chyba wszystko jest w miare jasno wytłumaczone w samym skrypcie ;-) Ale jakby ktoś miał jakieś wątpliwości….

#Konwersja jednego pliku
mp3bitrate -s 128 nazwa_pliku.mp3
#Konwersja calego folderu
mp3bitrate -a       //wartość 128kbps jest wartością domyślną

Mile widziane komentarze ;-)