gmbox蓝图(草案)

3 views
Skip to first unread message

bones7456

unread,
Apr 24, 2009, 12:11:43 PM4/24/09
to gmbox-dev
这个蓝图打算充实完整了以后,加到项目的wiki页里去,这里先讨论一下,以下是我目前想到的,先不组织语言了,列要点先:
1.功能:
目前几乎只实现了google榜单的下载功能,以后还打算做专辑下载,搜索下载和歌词下载.(另外,也可以考虑突破google,兼做baidu和
sougou的榜单等.近期先做好google的).
集成试听和播放.可以用 gstreamer 做后端,实现mp3的解码以及声音输出等,可以参考 http://pygstdocs.berlios.de/
很多播放器都是用的这个库做后端.
2.跨平台性:
这个程序在初期就已经考虑了跨平台性,所以才用的python,我希望以后也能继续跨平台.所以,代码里最好不要出现 os.system
(...),import进来的库,也要考虑win下安装方不方便.
mid3iconv要做成可选的项,win下的朋友,基本上不需要转码.
另外gstreamer的python绑定,不知道能不能跑在win下..
3.程序风格
使用4个空格缩进,避免使用tab.
调试用的代码,自己本地改改试试就好了,不要commit上来.
尽量写上doc str,这点之前基本没注意,需要改善.
另外,核心和界面要尽量分离,最终要做到pygtk图形界面不是必须的,可能还会开发个CLI的界面或者pyQT的界面,到时候,要都可以方便地
import gmbox

崔贵林

unread,
Apr 24, 2009, 12:42:27 PM4/24/09
to gmbo...@googlegroups.com
对,还要再细化,我们先列功能点,然后划分模块,对象,然后分工:设计UI,页面解析,解码,Windows移植,等等。
我感觉现在的代码好乱,我自己在实现一些功能时,主要是通过模仿复制,修改,代码冗余度较高。

2009/4/25 bones7456 <bone...@gmail.com>



--
崔贵林 csip
E-mail:  amo...@gmail.com
MSN :  amo...@msn.cn
  Cell  :  13260179436

amoblin

unread,
Apr 24, 2009, 7:51:24 PM4/24/09
to gmbox-dev

On Apr 25, 12:11 am, bones7456 <bones7...@gmail.com> wrote:
> 这个蓝图打算充实完整了以后,加到项目的wiki页里去,这里先讨论一下,以下是我目前想到的,先不组织语言了,列要点先:
> 1.功能:
> 目前几乎只实现了google榜单的下载功能,以后还打算做专辑下载,搜索下载和歌词下载.(另外,也可以考虑突破google,兼做baidu和
> sougou的榜单等.近期先做好google的).

> 集成试听和播放.可以用 gstreamer 做后端,实现mp3的解码以及声音输出等,可以参考http://pygstdocs.berlios.de/

amoblin

unread,
Apr 24, 2009, 7:53:13 PM4/24/09
to gmbox-dev
这是我昨晚整理添加的TODO:


初始化榜单 treeview list_model
初始化播放列表 treeview playlist_model
绑定快捷键 key_checker 可参考snownews的快捷键绑定
h: hide window.hide()
n: play next song playnext
p: play previous song playprev
Enter: play listen
Space: play/pause
j: focus next song
k: focus previous song

榜单下载:
点击 获取列表,执行doSearch函数
启动下载列表线程 downList
设置按钮不可再点
实例化Lists对象 _songlist
设置当前列表
清空列表list_model
填入列表list_model
恢复按钮可再点
点击 本地歌曲列表 执行 doListLocalFile
启动线程 listLocalFile
设置按钮不可点
实例化ListFile对象 _songlist
设置当前列表
清空列表list_model
填入列表list_model
恢复按钮可再点
歌曲列表 TreeView 鼠标操作 执行 click_checker
得到当前索引
设置当前播放位置
如果是右键 执行 SetupPopup
菜单项 下载 执行 downone
菜单项 试听 执行 listen
启动新线程 执行 play
依次检测:是否循环播放状态(暂由loop_song信号量控制),是否有本地文件,是否有本地缓存文件,是否联网,然后播放
当前播放列表 播放当前歌曲
菜单项 添加 执行 addToPlaylist

关于当前位置:有两个当前位置:1,当前正在播放的曲目位置,2,当前聚焦位置。
还有一个当前播放列表

下载中用临时文件名,下载完成后恢复原歌曲名 [现在已经是这样了,临时文件是 歌名+歌手.mp3.downloading -by bones]
试听:两个线程,一个下载,一个试听,试听到自动结束后恢复歌曲名
添加到列表:
本地文件列表:
扫描本地文件,忽略下载的临时文件和试听的缓存文件
播放:检测是否循环播放,然后播放
添加到列表:
下载管理:
播放列表: TreeView 鼠标 执行 click_check2
得到当前索引
设置当前播放位置
如果是右键 执行 SetupPopup2
菜单项 试听 执行 listen_init -> listen
菜单项 删除 执行

On Apr 25, 12:11 am, bones7456 <bones7...@gmail.com> wrote:

> 这个蓝图打算充实完整了以后,加到项目的wiki页里去,这里先讨论一下,以下是我目前想到的,先不组织语言了,列要点先:
> 1.功能:
> 目前几乎只实现了google榜单的下载功能,以后还打算做专辑下载,搜索下载和歌词下载.(另外,也可以考虑突破google,兼做baidu和
> sougou的榜单等.近期先做好google的).
> 集成试听和播放.可以用 gstreamer 做后端,实现mp3的解码以及声音输出等,可以参考http://pygstdocs.berlios.de/

LLY

unread,
Apr 24, 2009, 9:48:20 PM4/24/09
to gmbo...@googlegroups.com
还有,注意下,现在的CLI算是集成在gmbox.py里面的了,有对此文件进线就修改的,要兼顾下CLI,也就是只运行./gmbox.py 的效果.

2009/4/25 amoblin <amo...@gmail.com>

崔贵林

unread,
Apr 24, 2009, 9:52:25 PM4/24/09
to gmbo...@googlegroups.com
嗯,issue里不是有说吗,./gmbox -h,什么提示都没有。。。。
命令行界面的也好好好做的,不过我现在在研究图形界面的快捷键,目标是做到用GUI,但不用鼠标。。。。

2009/4/25 LLY <bone...@gmail.com>
Reply all
Reply to author
Forward
0 new messages