• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

softklin

Músicas da RFM

37 mensagens neste tópico

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  :P . 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  :P

A ver no que dá. Já deu :P

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não me parece mau, a vêr o que apresentas, se calhar tambem vou tentar fazêr algo, a vêr quem acaba primeiro, ou se alguem acaba.  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

Neste aspecto partimos então em pé de igualdade, de qualquer das formas se o fizer disponibilizo-te o source, assim sempre podes melhorar/adaptar e/ou adicionar funcionalidades.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Voluntários já há bastantes, vamos vêr o que sai daqui.

Eu irei desenvolver (se densenvolver) em vb6 ou vb08, depende.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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...
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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! :P

EDIT

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

/

Desculpa atão... :| Nem reparei na Secção em que tinha aberto. :x

(Abri bués para ver as novidades e depois pensei que querias que alguém fizesse isto) Sorry...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ya, desculpa se te desmotivámos.

Entretanto se precisares de espreitar o código em vb, avisa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pronto, tudo bem. Não fico ressentido.  :P

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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 :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1120294884.jpg

No Vista funciona na boa, gostei. Apenas peço que mudes o "Acerca de ..." para "Sobre ...", soa bem melhor :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado tirácio, pelo teu feedback.

É bom saber que funciona no Vista, apesar de não ter razões para me preocupar; afinal, estamos a falar de .Net  :P A tua sugestão foi aplicada, mas ainda não vou lançar a versão actualizada, a ver se me lembro de alguma ideia, ou alguém sugere qualquer funcionalidade nova.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Arranja forma de perceber quando está a dar notícias e informar o user disso :P Outra hipótese era colocar a possibilidade de abrir logo o ballon sempre que a música mudasse.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tirácio, acho que sabes bem que isso é algo impraticável, porque os dados não dependem de mim (para além que nem eles próprios informam isso)... E ao mudar de música mostrar o ballon, não quero abusar dos recursos do servidor, estar sempre a descarregar a página...

Isto é mesmo do género, "olha que música tão cool, deixa ver quem é que canta isto/qual o nome da música", e lá vai ele clicar no ícone para ter o resultado. Ideal ideal, era que eles metessem os nomes da faixas na web rádio da RFM, que apareceriam no VLC, por exemplo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se fizeres um query à pagina de 30 em 30 segundos, ou mesmo a cada 1 minuto, não é propriamente abusar. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei, visto que não têm uma API prática para isto, acho que vou deixar o esquema de informação de músicas a pedido. No entanto, se alguém quiser fazer uma versão personalizada, tem o source disponível na primeira página, primeira mensagem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora