Automatizando tarefas com Python

4,207 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,207
On SlideShare
0
From Embeds
0
Number of Embeds
1,464
Actions
Shares
0
Downloads
25
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Automatizando tarefas com Python

  1. 1. Lightning TalkUsing Python to Automate Repetitive TasksAndré EricsonNovembro/2011, Pug-Pe
  2. 2. Using Python to AutomateRepetitive TasksRoteiro • Por que py? • Case of Study 1 • Motivação • Objetivos • Ferramentas • Case of Study 2 • Motivação • Objetivos • Resultados • Ferramentas • Code • Bonus
  3. 3. Por que Python? • Simplicidade • Legibilidade do Código • Tempo • Batteries Included • PyPI(17484 packages)
  4. 4. Por que Python? • Simplicidade • Legibilidade do Código • Tempo • Batteries Included • PyPI(17484 packages) • Não é Java
  5. 5. Case of Study: Unicap_br
  6. 6. Motivação
  7. 7. Unicap-brObjetivos • Fazer o login no site da católica • Receber dados dos livros emprestados • Renovar livros • Checar sucesso da renovação • Renovar automaticamente com frequência Crontab
  8. 8. Unicap-brObjetivos • Fazer o login no site da católica • Receber dados dos livros emprestados • Renovar livros • Checar sucesso da renovação • Renovar automaticamente com frequência Crontab
  9. 9. Unicap-brObjetivos • Fazer o login no site da católica • Receber dados dos livros emprestados • Renovar livros • Checar sucesso da renovação • Renovar automaticamente com frequência Crontab
  10. 10. Unicap-brObjetivos • Fazer o login no site da católica • Receber dados dos livros emprestados • Renovar livros • Checar sucesso da renovação • Renovar automaticamente com frequência Crontab
  11. 11. Unicap-brObjetivos • Fazer o login no site da católica • Receber dados dos livros emprestados • Renovar livros • Checar sucesso da renovação • Renovar automaticamente com frequência Crontab
  12. 12. Unicap-brFerramentas • BeautifulSoup: HTML/XML parser designed for quick turnaround projects like screen-scraping • Mechanize: Stateful programmatic web browsing in Python
  13. 13. Unicap-brFerramentas • BeautifulSoup: HTML/XML parser designed for quick turnaround projects like screen-scraping • Mechanize: Stateful programmatic web browsing in Python
  14. 14. Case of Study: CheckSubs
  15. 15. Motivação
  16. 16. Objetivo • Checar legendas novas para determinadas séries de TV • Notificar quando uma nova legenda estiver disponível.
  17. 17. Objetivo • Checar legendas novas para determinadas séries de TV • Notificar quando uma nova legenda estiver disponível.
  18. 18. Resultado
  19. 19. Ferramentas • Python-twitter: A Python wrapper around the Twitter API • bitlyapi: A very thin wrapper for the bit.ly API • pynotify: Python bindings for libnotify(Desktop Notification Library) • feedparser: Parse Atom and RSS feeds in Python
  20. 20. Ferramentas • Python-twitter: A Python wrapper around the Twitter API • bitlyapi: A very thin wrapper for the bit.ly API • pynotify: Python bindings for libnotify(Desktop Notification Library) • feedparser: Parse Atom and RSS feeds in Python
  21. 21. Ferramentas • Python-twitter: A Python wrapper around the Twitter API • bitlyapi: A very thin wrapper for the bit.ly API • pynotify: Python bindings for libnotify(Desktop Notification Library) • feedparser: Parse Atom and RSS feeds in Python
  22. 22. Ferramentas • Python-twitter: A Python wrapper around the Twitter API • bitlyapi: A very thin wrapper for the bit.ly API • pynotify: Python bindings for libnotify(Desktop Notification Library) • feedparser: Parse Atom and RSS feeds in Python
  23. 23. Talk is cheap.Show me the Code.
  24. 24. BeautifulSoup <tr class=’rel2’> <td nowrap><input type=’checkbox’ name=’check_2’ value=’99236167@#1’> </td> <td nowrap>99236167</td> soup = BeautifulSoup(request) <td nowrap> books = soup.findAll(’tr’, attrs={’class’: Introducao a administracao: re.compile(’rel.*’)}) edicao compacta.</td> return [Book(book) for book in books] <td nowrap>&nbsp;</td> ############################################ <td nowrap>Livros</td> class Book(object): <td nowrap>25/10/2011</td> def __init__(self, soup_tag): <td nowrap>09/11/2011</td> tds = soup_tag.findAll(’td’) <td nowrap>&nbsp;</td> self.check = str(tds[0].find(’input’) <td nowrap>&nbsp;</td> [’name’]) <td nowrap>Normal</td> self.title = tds[2].string.strip() <td nowrap>Biblioteca Central</td> <td nowrap>0</td> <td nowrap>15</td> </tr>
  25. 25. Mechanize browser = mechanize.Browser() cj = cookielib.LWPCookieJar() <form ... name="form1" ... > browser.set_cookiejar(cj) <input type="text" name="login"> browser.open(LOGIN_PAGE) <input type=’password’ name=’password’> browser.select_form(name=’form1’) </form> browser.form[’login’] = login browser.form[’password’] = password r = browser.submit()
  26. 26. Android(SL4A)
  27. 27. Android(SL4A)
  28. 28. Tasker
  29. 29. Dúvidas? André Ericson http://www.github.com/aericson de.ericson@gmail.com @_aericson

×