当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : python 代码 转换成 perl
帖子发表于 : 2010-11-26 0:58 
头像

注册: 2010-05-05 14:24
帖子: 132
送出感谢: 0 次
接收感谢: 0 次
想给windows下的朋友写一个插件....
但是不会perl,
用python写插件,又要安装解释器...
其实只是一个 IRC(xchat for win) + winamp 实现的播放歌曲插件。

PS:其实编译xchat 的时候,里面有自带 winamp.dll 的。可以实现播放歌曲。
但是朋友需要全自动的...
所以,想把 这个python 写的转换成 perl 代码。其实就几行代码:))
谢谢了。


Note:使用了**符号框起来的 可要可不要。:)) :em01

=========================================================================
代码:
###########################################################

## winamp.py

## Python Winamp Controller
##  Example:

##    >>> import winamp

##    >>> w = winamp.winamp()

##    >>> w.getPlayingStatus()

##    'stopped'

##    >>> w.play()

##    >>> w.getPlayingStatus()

##    'playing'

##    >>>
#######################################

import win32gui

import win32api



# wonder why win32 imports dont define these

WM_COMMAND = 0x0111

WM_USER    = 0x400



def voidfunc():

    pass



class winamp:



    winamp_commands = { 'prev'    :40044,

                        'next'    :40048,

                        'play'    :40045,

                        'pause'   :40046,

                        'stop'    :40047,

                        'fadeout' :40157,

                        'forward' :40148,

                        'rewind'  :40144,

                        'raisevol':40058,

                        'lowervol':40059}



    def __init__(self):

        self.hWinamp = win32gui.FindWindow('Winamp v1.x', None)



        iVersionNumber = self.usercommand(0)

        sVersionString = hex(iVersionNumber)

        sVersionString = sVersionString[2:3] + '.' + sVersionString[3:]

        self.sVersion = sVersionString



    def command(self, sCommand):

        if winamp.winamp_commands.has_key(sCommand):

            return win32api.SendMessage(self.hWinamp, WM_COMMAND, winamp.winamp_commands[sCommand], 0)

        else:

            raise 'NoSuchWinampCommand'



    def __getattr__(self, attr):

        self.command(attr)

        return voidfunc



    def usercommand(self, id, data=0):

        return win32api.SendMessage(self.hWinamp, WM_USER, data, id)

       

    def getVersion(self):

        "returns the version number of winamp"

        return self.sVersion



    def getPlayingStatus(self):

        "returns the current status string which is one of 'playing', 'paused' or 'stopped'"

        iStatus = self.usercommand(104)

        if iStatus == 1:

            return 'playing'

        elif iStatus == 3:

            return 'paused'

        else:

            return 'stopped'

   


×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××       

×    def getTrackStatus(self):

×        "returns a tuple (total_length, current_position) where both are in msecs"

×        iTotalLength = self.usercommand(105, 1) * 1000 # the usercommand returns the number in seconds

×        iCurrentPos  = self.usercommand(105, 0)

×        return (iTotalLength, iCurrentPos)

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××


×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
×   def setCurrentTrack(self, iTrackNumber):

×       "changes the track selection to the number specified"       

×        return self.usercommand(121, iTrackNumber)


×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××


×    def getCurrentTrack(self):

×        return self.usercommand(125)


×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××



#获取正在收听的歌曲名字。
    def getCurrentTrackName(self):

        return win32gui.GetWindowText(self.hWinamp)




    def dumpList(self):

        "dumps the current playlist into WINAMPDIR/winamp.m3u"

        return self.usercommand(120)











############################################
##上面是控制winamp 的。
###############################################
#下面是输出到 xchat的。

import xchat

Xchat::hook_command("np","np");

w = winamp()
nowplaying = ''

#判断winamp是否播放。如果是就在xchat 输出 歌曲名。
def run():
   while 1:
      status = w.getPlayingStatus()
      if status == 'stopped' or status == 'paused':
         return
      elif status == 'playing':
         nowplay = w.getCurrentTrackName()
                        #判断这首歌曲和上面一首歌曲是不是重复。
                        if nowplay == nowplaying:
                                return
                        nowplaying = nowplay
         npsong(nowplaying)
      else:
         break

#在xchat输出。
def npsong(nowplaying):
   xchat.command("ME is listening to   %s " % (nowplaying)

def np(nowplaying):
   status = w.getPlayingStatus()
   
   if status == 'stopped' or status == 'paused':
      print 'Winamp 没有播放音乐。请播放。'
   elif status == 'playing':
      nowplaying = w.getCurrentTrackName()
      xchat.command("ME is listening to   %s " % (nowplaying)
   else:
      print '代码错误...请联系作者。Email:asluozijun@gmail.com   谢谢。'





==================================================
谢谢了。


_________________
小博客,欢迎光临!http://zhonghe.co.de
有一种被人抛诸脑后的过去,包含一些不该遗忘的点点滴滴。欢笑之余,我将故旧拾起,才刹见自己的薄情。人世间似乎存在着某种公平,每个人都曾被抛掷在他人的遗忘中;而今你所有哽咽难宣的话语,也正是你曾为人所期盼,却永远听不见的字句。” —赫曼 赫塞


页首
 用户资料  
 
2 楼 
 文章标题 : Re: python 代码 转换成 perl
帖子发表于 : 2010-11-26 1:01 
头像

注册: 2010-05-05 14:24
帖子: 132
送出感谢: 0 次
接收感谢: 0 次
如果大家时间忙,带 * 符号的 就不要翻译了哦。

那几个功能不重要的。

重要的是获取歌曲名字,然后 发送给 xchat:)))

由于没有windows,也没去测试..
应该没有问题的吧??
呵呵

:em01


_________________
小博客,欢迎光临!http://zhonghe.co.de
有一种被人抛诸脑后的过去,包含一些不该遗忘的点点滴滴。欢笑之余,我将故旧拾起,才刹见自己的薄情。人世间似乎存在着某种公平,每个人都曾被抛掷在他人的遗忘中;而今你所有哽咽难宣的话语,也正是你曾为人所期盼,却永远听不见的字句。” —赫曼 赫塞


页首
 用户资料  
 
3 楼 
 文章标题 : Re: python 代码 转换成 perl
帖子发表于 : 2010-11-26 21:44 

注册: 2008-12-16 14:31
帖子: 26
送出感谢: 0 次
接收感谢: 0 次
perl不也一样要解释器么。。。。

python用cx_Freeze打包做成exe就好了。。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译