Jump to content

Músicas da RFM


softklin
 Share

Recommended Posts

Título do Projecto: Músicas da RFM

Última Versão: 1.0.2 (P@P special edition)

Líder do Projecto: softclean

Ultimamente tenho me fartado das músicas que tinha disponíveis na minha biblioteca, e como tal dediquei-me a rádio. Sem motivo especial, escolhi a RFM.

Como sou um bocado "desligado" do mundo da música, há muitas que gosto, porque as ouvia em pequeno, ou simplesmente porque gosto da música em si, mas não sei o nome. Ora estar a abrir uma tab e ir ao site da RFM sempre que quero saber o nome de uma música, torna-se chato, e quero automatizar essa tarefa, porque sou preguiçoso  😛 . Como tal, este pequeno utilitário, em principio para ser feito em VB.net, ficaria na tray, e bastava passar o rato por cima para saber a música actual.

O meu problema é o de vasculhar as páginas para encontrar o que quero, e de passagem aproveito para dizer que detesto estas soluções sem flexibilidade (criar um código para vasculhar a página, basta mudarem uma coisinha, tenho de fazer tudo novamente), mas tem que ser...

A página em questão é http://www.rfm.pt/p_quemusicaera.aspx. Este tópico é também um compromisso para mim próprio diante o público de ter de desenvolver isto  😛

A ver no que dá. Já deu 😛

Actualizações:

v 1.0.3 (18/03/09)

- Adicionada opção de copiar o título e o autor das músicas para o clipboard

v 1.0.2 (23/02/09)

- Código fonte melhor organizado para possibilitar um melhor estudo do programa

- Referência a este tópico e à participação no 1º concurso de projectos de programação do P@P

v 1.0.1 (19/09/08)

- Possibilidade de pesquisa das letras da música ao clicar no balão informativo

- Algumas optimizações de código

v 1.0.0

- Release pública inicial do programa

Download do EXE: http://www.mediafire.com/?ttjyzwyoxmz

Download o source (VB.net): http://www.mediafire.com/?qdt22zdyryi

(links actualizados v1.0.3)

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Com a preguiça que tenho e com o tempo que tenho disponível, acho que qualquer um acaba antes de mim  😛

Mas desta vez é algo que me é útil, continua a sê-lo, e mais importante, tenho vontade de o fazer, por isso espero não desistir tão facilmente.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

fnds, obrigado pela tua ajuda, mas se experimentares e confirmares no site, o resultado apresentado é o artista da musica mais recente, e o titulo da ultima musica (que tocou à mais tempo, ultima da lista).

Mas por acaso tinha experimentado fazer com expressões regulares, só que não sabia por onde começar.  😛

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Não seria mais robusto utilizar um parser de XML?

Funciona com o HTML? É que é a única maneira de aceder à informação que pretendo, não há RSS nem coisa que lhe valha... Se por acaso der com HTML, dá para "navegar" pelas tags como por exemplo, com javascript?

Nota: Estamos a falar de VB.net

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

fnds, obrigado pela tua ajuda, mas se experimentares e confirmares no site, o resultado apresentado é o artista da musica mais recente, e o titulo da ultima musica (que tocou à mais tempo, ultima da lista).

Tens razão... vou corrigir. Já tá.

Não seria mais robusto utilizar um parser de XML?

Era, e este problemas não acontecia... Este foi o metodo mais simples que arranjei...
Link to comment
Share on other sites

Ícone = http://ubuntu.jasonwhutchinson.com/images/MenuIcons/music.gif

(Colocar na mesma directoria o ficheiro .py e o ficheiro music.gif)

# SysTray RFM Music Announcer
# License: GPL v3
# Coded by Tharis

import wx
from thread import start_new_thread
from time import sleep
from urllib import urlopen

class RFM:
    def __init__(self):
        self.source=urlopen("http://www.rfm.pt/p_quemusicaera.aspx").read()
        self.to_find='<MARQUEE WIDTH="100%" scrolldelay="150" BEHAVIOR="SCROLL" ><span class="txtmarquee">A TOCAR AGORA :    '

    def getInterprete(self):
        ini=self.source.find(self.to_find)+len(self.to_find)
        i=ini+1
    
        while self.source[i:i+len('</span>')]!='</span>' and self.source[i:i+len(' ')]!=' ':
            i+=1
        
        interprete=self.source[ini:i]

        return interprete

class doIcon:
    def __init__(self):
        pass
        
    def doIt(self):
        ico=wx.Bitmap('/home/tharis/music.gif',wx.BITMAP_TYPE_ANY)
        icon=wx.EmptyIcon()
        icon.CopyFromBitmap(ico)
        
        return icon
        

class SysTrayCre(wx.TaskBarIcon):
    def __init__(self,frame):
        wx.TaskBarIcon.__init__(self)
        self.frame=frame
        self.Icon = doIcon()
        self.icone=self.Icon.doIt()
        self.rfm=RFM()
        start_new_thread(self.doLoop,())

    def doLoop(self):
        self.SetIcon(self.icone,self.rfm.getInterprete())
        sleep(5)
        self.doLoop()

class SysTrayApp(wx.Frame):
    def __init__(self,parent,id,title):
        wx.Frame.__init__(self,parent, -1, title, size = (1, 1),
            style=wx.FRAME_NO_TASKBAR|wx.NO_FULL_REPAINT_ON_RESIZE)

        self.SysTrayIcon=SysTrayCre(self)

        self.Show(True)

class MyApp(wx.App):
    def OnInit(self):
        frame=SysTrayApp(None, -1, ' ')
        frame.Center(wx.BOTH)
        frame.Show(False)
        return True

if __name__=="__main__":
    app=MyApp(0)
    app.MainLoop()

E como sempre, os Pythonistas são sempre os primeiros! 😛

EDIT

Modifiquei porque o script não mudava de música...

Link to comment
Share on other sites

Gostava de ter eu feito o projecto desenvolvendo a solução, mas pelos vistos ninguém perdeu tempo a apresentar os programas já prontos.

Desculpem se isto vos pareceu um concurso, mas de facto não era, queria apenas criar este programa, e como compromisso para mim próprio, resolvi abrir o tópico, tal como disse lá em cima.

Sinceramente, depois de ver a solução, já não estou tão motivado a resolver o problema. Talvez ainda treine um bocado no VB.net, escolhido inicialmente para resolver isto de forma simples, se tiver algum avanço coloco aqui.

Nada vos impedia de criarem mil e um programas para obter as musicas da RFM, ou de outras rádios, mas que pelo menos dessem dicas em vez de códigos prontos.

/

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Pronto, tudo bem. Não fico ressentido.  😛

Tentarei na mesma explorar o VB.net, em busca da solução (que, ou se usa regexp ou se faz parsing ao HTML). Porém, também estou a tentar aprender Python, e a ideia não deixa de ser interessante. A seu tempo, pode ser que aprenda algo dos vossos programas.

Mas de momento, vou tentar fazer o que pretendia em VB.net.

Abraço a todos.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Bem, aqui está uma primeira versão da aplicação. Não consegui usar as expressões regulares, por isso tive de recorrer as funções de strings do VB.

Download do EXE: http://www.mediafire.com/?jjmjyjzjmwn

Download o source (VB.net): http://www.mediafire.com/?htmrdmsjstj

Testado em Windows XP, com .net Framework 2. Por favor, se alguém usar Vista, informe aqui se há algum problema. Aceito sugestões para o programa, desde que não fuja ao objectivo. Adicionar uma função de streaming é algo que não tenciono fazer.

EDIT:

esqueci-me, o modo de funcionamento. Para utilizar, basta fazer um clique no ícone que vos deve aparecer na tray, e aparece num balão o título da música. Para fechar a aplicação, devem fazer clique com o botão direito no ícone, e seleccionar a opção "Sair do programa".

Limitações: quando dá notícias, ao clicar no icone, ele diz que está a dar uma música. mas pronto, é a informação que me é fornecida 😛

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.