Skracacz SMSów.
09 kwietnia, 2008
Ludziom zdarza się wysyłać SMSy. Założenie jest takie, by w możliwie małej objętościowo formie (koszt, limity wysłanych przez bramkę, łatwość odczytu przez odbierającego) przekazać maksimum informacji. Szczególnie przy okazji awarii takich, jak wczorajsza w Szczecinie warto minimalizować objętość. ;) Poniższy skrypt przedstawia sposób na skrócenie długości wiadomości w SMSach wysyłanych za pomocą polecenia sms z pakietu sms-pl (wersje na inne dystrybucje i systemy do znalezienia we własnym zakresie, ale opisany niżej algorytm jest uniwersalny i można go z powodzeniem stosować do wszystkich SMSów.
Oryginalnie algorytm (podejrzany u jednej ze znajomych) polega na usunięciu spacji i zastąpieniu następujących po nich liter na wielkie. Poniżej zaimplementowana jest wersja rozwinięta - spacja jest usuwana, jeśli po niej następują 2 małe litery (zakładam nie używanie polskich znaków diakrytycznych w treści - wielkość SMS przy ich użyciu drastycznie puchnie). Pierwsza z liter zamieniana jest na wielką. Czytelność nie ulega znacznego pogorszeniu - odbiorca wie, gdzie kończą się wyrazy. Przykład przetworzonego tekstu: OryginalnieAlgorytm (podejrzany uJednejZeZnajomychPolegaNaUsunieciuSpacji iZastapieniuNastepujPoNichLiterNaWielkie PoniżejZaimplementowanaJestWersjaRozwinieta -SpacjaJestUsuwanaJesliPoNiejNastepuja 2MaleLitery Pierwsza zLiterZamienianaJestNaWielka Z 291 znaków do 249, czyli ok. 15% zredukowany rozmiar.
A oto i sam skrypt:
#!/usr/bin/perl -w # Script to shorten SMS message by removing spaces if they're followed by lowercase letter followed by given number of lowercase characters. # The first letter is made uppercase to make message readible. # Required installed && configured sms from sms-pl package (Debian) # Author: Paweł 'Róża' Różański; JID: rozie@jabber.wp.pl # Usage: ./shortsms.pl <number> "message body" use strict; my $minlower=1; # here define how may lowercase characters must be after [a-z] to uppercase first character my $sms=`which sms`; if ($#ARGV != 1){ die 'Usage: ./shortsms.pl <number> "message body"'; } my $number=shift @ARGV; chomp $sms; my $body='"'; foreach (@ARGV){ my @nospace=split/\s/; foreach(@nospace){ if (/^([a-z])([a-z]{$minlower,})/){ $body.= uc($1).$2 } else{ $body.= " ".$_; } } } $body.='"'; print "Will send SMS to: $number\n"; print "Body will be:\n"; print "$body\n"; system ("$sms $number $body"); if ($? == 0){ print "Send OK\n"; } else{ print "Error occured while sending.\n" }
Skrypt nie jest idiotoodporny. Zakłada brak pl-znaków, podanie poprawneg numeru jako pierwszego argumentu, ujęcie treści w cudzysłów i skonfigurowany pakiet sms-pl (ja ślę tym tylko do plusa, wtedy nie wymaga konfiguracji). Można łatwo dopisać, ale... ;) Aby sobie potestować pez wysyłania wystarczy zakomentować linię z system. Have fun.
1. BTM napisał(a):
09 kwietnia 2008, 08:29:36
Short SMS? Short Short Message System?
Prawie jak Dance Dance Revolution ;-)
2. rozie napisał(a):
09 kwietnia 2008, 08:35:32
Shortened Short Message System oraz SuperShortened Short Message System (wyciac wszystkie spacje i znaki przestankowe). ;-) A DDR też dobre jest. Ech, gdzież moja mata i stepmania? ;/
3. btm napisał(a):
09 kwietnia 2008, 08:36:35
Za szafą, a druga – metalowa – w drugim pokoju. A nie, wróć, to u mnie ;p
<reklama type=„chamska” url=„http://ddrpl.com” /> :P
4. rozie napisał(a):
09 kwietnia 2008, 08:42:29
btm: Niestety nie za szafą, tylko > 200 km dalej. Ale już niedługo się spotkamy… Ten link jest kompatybilny ze stepmanią? Przydałaby się opcja offtopic do komentarzy. ;) Albo może popełnij wpis o stepowaniu z przeglądem źródeł programów, dodatków i piosenek i tam się przeniesiemy z dyskusją? Ja nie czuję się wystarczająco w temacie by taki wpis robić.
5. btm napisał(a):
09 kwietnia 2008, 08:45:15
Bojkotuje pisanie na na J. od czasu jak mi admin zabrał poziom 0 ;p
Link jest kompatybilny, bo de-facto na stronie nie ma piosenek do popbrania – propagujemy legalność i skupiamy się raczej na społeczeństwie, automatach, turniejach. Z rzeczy stepmaniowych – możesz wgrać swój profil online i pochwalić się / zobaczyć jak grają inni ;-)
Może któregoś dnia popełnie wpis, to dam znać ;p
6. suchy napisał(a):
09 kwietnia 2008, 08:56:04
widze ze sporo osob ddruje :D
7. Grzegorz napisał(a):
09 kwietnia 2008, 10:01:47
Rewelacja! Dzięki za podzielenie się pomysłem.
8. Refresh napisał(a):
09 kwietnia 2008, 10:25:32
<OT>O właśnie, trzebaby było się znowu spotkać z ludźmi i ‘potańczyć’ bo własnej maty nie mam xP
a już niedługo simfile.pl ^^</OT>
Programik ciekawy, ale ja szczerze nie przepadam za brakiem spacji w smsach, jakoś mnie to odpycha.
9. Phisikus napisał(a):
09 kwietnia 2008, 13:58:45
hmm… dziwne by było dostać jedno słowo:
nastawwodęnaherbatę
:>
10. Grzegorz | grzglo.jogger.pl napisał(a):
09 kwietnia 2008, 13:59:57
@Phisikus: To kwestia przyzwyczajenia, tak czy owak dostałbyś „NastawWodęNaHerbatę”.
11. luktom napisał(a):
09 kwietnia 2008, 14:02:31
Mj klga swg czs psł p, jk t n mwł „trck” (mój kolega swego czasu pisał po, jak to on mówił „turecku”, czyli miało to polegać na wywalaniu zbędnych samogłosek, lub – w wersji turecki extreme, której przykład powyżej – wywalaniu wszystkich samogłosek :D)
12. Chris Trynkiewicz napisał(a):
09 kwietnia 2008, 19:35:59
Osobiscie sadze, ze dla 50 znakow nie warto utrudniac komus zycia… Ale pomysl ciekawy :)
13. rozie napisał(a):
09 kwietnia 2008, 19:40:00
Utrudnienie jest minimalne – SMS jest nadal czytelny bez problemu. Poza tym, jeśli komuś zależy, to może dopisać sprawdzanie czy/ile warto ścinać i ścinać tylko minimalną ilość... Jak dla mnietekst rozbity na 2 SMSy jest mniej czytelny, niż takie coś w 1, szczególnie, że telefon wyświetla mi drugiego jako nowszego, co zaburza naturalny sposób czytania (z góry na dół).
14. deschek napisał(a):
02 maja 2008, 10:41:48
W siemensie SL45i bylo takie cos juz dobre kilka lat temu i BYLO idiotoodporne :)
15. Pomiędzy bitami napisał(a):
28 sierpnia 2011, 10:40:36
Smssender 0.7
Nowa wersja 0.7 skryptu SMSsender.pl . Wszystkie komunikaty po angielsku, przy okazji wyeliminowana litrówka w polskiej wersji. Nie zaimplementowany podział na wiele wiadomości, ale za to eksperymentalnie wdrożona kompresja , czyli skracanie [...]