酷Linux 专栏: Linux 和音乐潮流-1

题外话: 作为一个坚定的*nix系统使用者,我常常向我周围的人推荐使用Linux/UNIX, 而他们通常都以不熟,不好用拒绝我,即使我答应帮他们装Linux系统。他们总认为Linux难用,可是事实不是这样的,给发展中国家使用的一百美元笔记本(OLPC)上就是 Linux, 世界上最眩的操作系统 MacOSX 底下也是UNIX/BSD. 有时候 Linux/UNIX 缺少的就是一些日常应用的杀手级程序。实际上杀手应用甚至决定了系统选择: Apache 让很多人再也不用 Windows 架设服务器,iPod 让美国很多人转而投身苹果。同样,我觉得我们支持Linux的人或许可以换一个角度,举出一些 Linux 能做的强大的酷的事情,让更多的人了解这个系统,从而爱上这个系统。其实从我的角度看,系统不酷,而是工作效率高,不过为了吸引一些用户,我不得不从酷的角度去说服别人。因此我准备开一个专栏,专讲在Linux下面可以做在Windows下做不到的酷事情,希望有人因此喜欢上 Linux. 这个专栏的文章都不长,技术都不复杂,以吸引人为主。如果你想感受Linux, 网上现有的怎么装的教程很多,也可以用LiveCD, 不过那不是我这个专栏所能讲清楚的。我的主要目的是吸引对 Linux 没感觉的人到 Linux 平台 :)

好吧,先说我抓音乐的小例子。我来到美国之后,感觉要融入美国文化,首要的就是融入潮流文化. 于是,我开始到网上找哪些音乐电影流行,我就拿下来看。这个当然要被很多人鄙视说俗了,现在流行的是小众小资的东西了。不过既然俗,咱也得俗的有技术含量是吧。一开始,我每天看Google Music Trend, 看到新的歌我就下载,然后用文本文件存我下了哪些歌。因此,第一步,我只需要一个浏览器。然后我就发现人工管理的缺陷的,因此我就想自动从Google Music Trend 中把我的歌生成一个列表。在这一步,我使用了我需要一个Linux 命令叫 wget, 简单的说,

wget some_url

就可以把一个网页或者资源下载到自己机器上。
好,我们先试验这个命令:

wget http://www.google.com/trends/music -O music.list

-O 表示另存为后面的文件,简单吧。

然后,我们再学一个命令叫cat. cat 不是小猫,是把文件的内容输出到屏幕. cat 后面可以接多个文件,具体可以用 cat –help 看帮助。这个地方,我们用 cat filename 输出文件。

cat music.list

怎么样,cat 输出了一个HTML的文件吧。这个HTML文件就是你的浏览器看到的. 然后你要说了,我怎么把这个html文件变成一个格式整齐的列表呢。不着急,下回我告诉你,这次先打一段天书一样的代码(这是一整行内容,注意第一行结束后有一个空格):

cat music.list |tr "\n" " "|egrep -o "song\">[^<]*" |tr ">" "\t"|cut -f 2|sort|uniq >mylist.new

好了,你就发现mylist.new 中全是格式正确的歌曲名了。这段天书怎么理解您无须担心,你可以发现原来在windows下需要copy 20次得到的文本文件一行命令就得到了。那么,学这段天书要多久呢?只要你常来看我的专栏,看三次,每次十分钟,肯定能理解。如果一生做一次,从头学这个天书效率当然不如手工,不过要是天天赶潮流,您就需要考虑用这个命令了。

好了,最后贴出一个喜欢听王小峰推荐歌曲的人要用的一个下载脚本,每次三表同学新歌上线,你轻轻一敲回车,歌曲全到你硬盘,多让人羡慕啊(当然,这个别太传,本来就是偷偷通过他的xml 发现歌曲链接的,传过了三表要发火了)。这个脚本是python 写的,但是因为windows下没有wget, 所以是Linux 专用的 :) 快用这个让美女/闺蜜/帅哥羡慕你吧


#!/usr/bin/python
# Download all the music recommended by wangxiaofeng.net
# Author: Eric You XU
# GPLv2
import os
import commands
os.popen("wget www.wangxiaofeng.net/mp3player.xml -O mp3player.xml")
str="""cat mp3player.xml|egrep -o path=[^3]+mp3|tr "\\"" "\\n"|grep http >wangxiaofeng.list"""
print str
os.popen(str)
f=open("wangxiaofeng.list")
for g in f.read().split('\n'):
print g
a="wget \""+g+"\""
os.popen(a)

注意: 最后三行是有缩进的。可以把这个存成 a.py, 然后 chmod +x a.py. 然后执行 ./a.py 具体的原理我下次讲。如果有问题,请留言。预祝你抓取所有王小峰歌曲成功。

课后作业:

1. 练习用wget 抓一下 baidu 的500个金曲, 链接是: http://list.mp3.baidu.com/topso/mp3topsong.html
2. 通过cat 命令研究一下baidu 的 html 和 Google 的 html. 看看哪家的让你觉得舒服. 下节课我们继续讲怎么处理这两个HTML.

下节课预告:1. 那段天书的原理是什么 2. 我怎么抓baidu 的流行榜单

过几天等有时间我还会给大家介绍优盘上的Linux, 光盘上的Linux 和最酷的Linux XGL桌面 还有给基督徒用的Linux 和给学前儿童用的Linux. 其实Linux远比一般人想像的简单而且酷。

本专栏欢迎投稿,暂无稿费。

13 Comments »

  1. Angke said,

    April 10, 2007 @ 6:58 pm

    不错,这样下去会有更多的人使用Linux的。
    我觉得还是先不要拉到细节里去的好,好多人连windows的命令行都没有用过,提到Linux命令行真的就头大了。

    另外,个人意见是Mac OS X已经把最酷眩桌面的称号让给了装了XGL的Linux了 :)

  2. Solrex said,

    April 10, 2007 @ 8:15 pm

    同意楼上最后一句话
    不过我只在排版公司看过 Mac OS X
    没用过

  3. Angke said,

    April 10, 2007 @ 8:29 pm

    “他们总认为Linux难用”

    岂止Linux被误认为难用,有好几个人都这样说Mac OS X。通常他们这样说之后就会被我的出离愤怒所震慑,继而掩饰说自己需要的软件在Mac上不能运行。然而绝大多数人又会立刻开始抓耳挠腮,因为我一定要他们讲出一个不能在Mac上找到替代品的软件。

    所以很多人的观点完全是偏见。但是很奇怪的是,这个偏见是怎么产生和散发出去的。

  4. Eric said,

    April 10, 2007 @ 8:34 pm

    是啊,人们的偏见不知道从什么地方来的,而且一来,就挡不住,你无论怎么纠正,他们就和忠实信徒一样,坚持观点不动摇。

  5. iverson said,

    April 10, 2007 @ 9:04 pm

    very useful and wonderful!

  6. virushuo said,

    April 11, 2007 @ 12:13 pm

    不错,但是太细节了会不会让很多人晕倒呢?

  7. Ur friend said,

    April 11, 2007 @ 12:38 pm

    一眼看出virushuo是个牛人

  8. gondi said,

    April 11, 2007 @ 11:15 pm

    看到这样的文章很喜欢,有一个问题想请教,搜了好久都找不到方法(ubuntu新新手)
    请问ubuntu下怎么调亮度和对比度?由于我的显示器质量问题,必须通过调显卡才能设置满意的颜色,但ubuntu下的显卡面板只能调整三原色,不能调对比度和亮度,特请教大家(ATI 9550),谢谢

  9. kliz said,

    April 11, 2007 @ 11:57 pm

    我一直都是复制粘贴到tmp.lst里面
    然后awk -F\” ‘{print $2}’ tmp.lst >mp3.lst
    有点笨啊

    恩我不懂python
    如果让我改改的话
    这段代码
    f=open(”wangxiaofeng.list”)
    for g in f.read().split(’\n’):
    print g
    a=”wget \”"+g+”\”"
    os.popen(a)

    可以把wget改成proz哦

    或者直接wget -i wangxiaofeng.list

  10. Eric said,

    April 12, 2007 @ 10:20 pm

    ProZilla 不是每个机器上都有,比较而言wget 比较通用
    那个 wget -i 受教了 感谢提醒。

  11. Romeo Chen said,

    April 21, 2007 @ 9:54 pm

    什么时候有那段天书原理的解释呢

  12. huaihuaixiaoshao said,

    April 21, 2007 @ 11:36 pm

    windows下也有wget的

  13. 3 day bahamas cruise said,

    May 30, 2007 @ 5:47 pm

    3 day bahamas cruise…

    » 酷Linux 專欄: Linux 和音樂潮流-1 | 4G Spaces and Web 2.3…

RSS feed for comments on this post · TrackBack URI

Leave a Comment