V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yaoppp
V2EX  ›  问与答

这个下载地址有什么规律?

  •  
  •   yaoppp · 2015-04-13 23:28:51 +08:00 · 4126 次点击
    这是一个创建于 3302 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在v2ex的第一次发帖。
    听CRI easyfm的飞鱼秀很多年,一直追求听完整的3个小时,但早上直播的时间经常不方便,所以这些年都下载回放。前些日子该节目改版,只能用easyfm的app听,通过抓包找到了音频的下载地址,但是文件名没什么规律,如:
    4月10号的
    http://123.56.91.34/Uploads/media/20150410/20150410134301_66025.mp3

    4月13号的
    http://123.56.91.34/Uploads/media/20150413/20150413140314_46952.mp3

    在日期之后接了很多看似无关的数字。

    每天的节目都要抓一下包也不是不可以,但是比较麻烦。有高人能看出后面这段数字的规律吗?多谢。

    第 1 条附言  ·  2015-04-28 19:31:41 +08:00
    4/28 API好像不更新了
    35 条回复    2015-06-25 19:22:17 +08:00
    abelyao
        1
    abelyao  
       2015-04-13 23:30:50 +08:00
    猜测文件名应该是由 年月日时分秒_毫秒 组成的,属于有规律、但没连续性的,要抓取的话,还是从它的 referer 解析出来吧
    surftheair
        2
    surftheair  
       2015-04-13 23:34:43 +08:00   ❤️ 1
    遍历一遍。

    话说用它的app听不就行了么?为什么一定要找到音频地址?
    surftheair
        3
    surftheair  
       2015-04-13 23:37:30 +08:00
    另外蜻蜓fm有实时的节目回放录音,你可以去研究下
    surftheair
        4
    surftheair  
       2015-04-13 23:45:10 +08:00
    yaoppp
        5
    yaoppp  
    OP
       2015-04-13 23:51:12 +08:00
    @surftheair 谢谢。
    cri的app做得非常只烂,安卓版不支持5.x,iOS版不能拉播放条。蜻蜓只保留前一天的,不过最大的问题是它不会把中间的新闻和广告去掉。11位随机数遍历一遍还是颇有难度的……
    surftheair
        6
    surftheair  
       2015-04-14 01:38:46 +08:00 via iPhone
    @yaoppp 遍历开玩笑的。蜻蜓FM好像有最近30天的回放哦。就算只有前一天的话貌似也够了。

    1,你可以做个rss用podcast订阅,每天自动下载到你的播放设备上
    2,你可以在你自己的vps上写个脚本每天自动下载到vps上,定期删除,写个rss用podcast订阅,在你的播放设备上随时点播

    嗯,我都干过,以前还得自己找各种工具自己录。现在蜻蜓FM是个好东西
    surftheair
        7
    surftheair  
       2015-04-14 01:40:21 +08:00 via iPhone
    再补充一句,蜻蜓FM本身体验就很好的,为何不直接在上面回听?
    Daniel65536
        8
    Daniel65536  
       2015-04-14 02:24:57 +08:00 via iPhone   ❤️ 2
    既然你都抓包了,为啥没找到那个返回音频文件地址的API呢?

    好吧,我直接告诉你它们所有的API,你直接打开这个网页: http://123.56.91.34

    上面把API的使用方式都列出来了。

    #我果然是找API大师

    比如:
    [视听列表接口] -----------------------------------------------------------------
    接口地址: http://ezfm.china-plus.net/index.php?m=index&a=cat_list&cid=134
    传输方式:POST
    param:
    cid: 栏目id
    return:
    data
    id: id值(唯一的)
    cid:所属栏目id
    title:名称
    compere:主持人
    lpic:图片
    url:链接地址
    duration:时长
    brief:简介
    m_share:分享量
    open_status:打开方式
    hits:点击量
    b_hits:浏览量
    c_hits:评论量
    d_hits:下载量
    update_time:更新日期
    f_time:时间描述
    size:文件大小
    yaoppp
        9
    yaoppp  
    OP
       2015-04-14 10:18:24 +08:00
    @Daniel65536 这个页面我也发现了。可惜我不是专业的,能力不足,根本不知道怎么用。比如win里装个什么命令行一类的软件,然后输入post http://ezfm.china-plus.net什么什么之类的,就会返回每天的下载地址吗?
    yaoppp
        10
    yaoppp  
    OP
       2015-04-14 10:19:09 +08:00
    @surftheair 3个小时的节目中间有40多分钟的广告、新闻什么的,这些蜻蜓都没剪掉。
    ryd994
        11
    ryd994  
       2015-04-14 10:59:10 +08:00
    @yaoppp curl……
    这个你要从爬虫开始学,这就是个爬虫而已
    surftheair
        12
    surftheair  
       2015-04-14 11:12:54 +08:00
    @Daniel65536 这个API貌似不管用啊,返回都是{"sumcount":null,"count":0,"comment":false},飞鱼秀的cid应该是224吧?

    {
    "id":"3",
    "classname":"飞鱼秀",
    "pub_share":"",
    "list":[
    {
    "id":"224",
    "classname":"飞鱼秀 最那什么的早间节目",
    "brief":"小飞、喻舟,周一到周五早8点--11点",
    "lpic":"http://123.56.91.34/Uploads/image/20150325/20150325200234_27466.jpg",
    "a_lpic":"http://123.56.91.34/Uploads/image/20150325/20150325200247_35801.jpg",
    "i_lpic":"http://123.56.91.34/Uploads/image/20150325/20150325200256_95346.jpg",
    "compere":"",
    "pub_share":"",
    "open_status":"1",
    "pid":"3",
    "bpath":"0-3-224",
    "iscollect":"0",
    "slist":0
    }
    ]
    },
    surftheair
        13
    surftheair  
       2015-04-14 11:14:49 +08:00
    @yaoppp
    1, 快进
    2, 广告和新闻的时间固定,VPS上用工具自动剪掉,然后写个podcast rss,播放设备上订阅自动下载或者点播
    Daniel65536
        14
    Daniel65536  
       2015-04-14 13:31:52 +08:00
    @surftheair cid随便举个栗子而已嘛……API参数都给列出来了剩下还有啥麻烦的,随便写就是嘛。
    surftheair
        15
    surftheair  
       2015-04-14 13:42:34 +08:00
    @Daniel65536 我知道,我用上面的api找到楼主要的节目cid是224,但是这个cat_list一直都是返回错误
    Daniel65536
        16
    Daniel65536  
       2015-04-14 13:59:31 +08:00
    看,参数表都有了,随便一条命令就能完成全部工作:

    $ curl "http://ezfm.china-plus.net/index.php?m=index&a=cat_list&cid=224" -s | jq '.data[]|.title,.url' -r
    飞鱼秀-电影催泪
    http://123.56.91.34/Uploads/media/20150414/20150414115215_89404.mp3
    飞鱼秀-如释重负
    http://123.56.91.34/Uploads/media/20150413/20150413140314_46952.mp3
    飞鱼秀-桌面背景
    http://123.56.91.34/Uploads/media/20150410/20150410134301_66025.mp3
    飞鱼秀-等我老了
    http://123.56.91.34/Uploads/media/20150409/20150409114612_70668.mp3
    飞鱼秀-初恋这件小事
    http://123.56.91.34/Uploads/media/20150408/20150408133335_71534.mp3
    飞鱼秀-垃圾食品
    http://123.56.91.34/Uploads/media/20150407/20150407125619_19902.mp3
    飞鱼秀-中国特色
    ……


    甚至直接生成podcast feed:
    $ curl "http://ezfm.china-plus.net/index.php?m=index&a=cat_list&cid=224" -s | jq '.data[]|"<item>\n<title>\(.title)</title>\n<link>\(.url)</link>\n<guid>\(.url)</guid></item>"' -r
    <item>
    <title>飞鱼秀-电影催泪</title>
    <link>http://123.56.91.34/Uploads/media/20150414/20150414115215_89404.mp3</link>
    <guid>http://123.56.91.34/Uploads/media/20150414/20150414115215_89404.mp3</guid></item>
    <item>
    <title>飞鱼秀-如释重负</title>
    <link>http://123.56.91.34/Uploads/media/20150413/20150413140314_46952.mp3</link>
    <guid>http://123.56.91.34/Uploads/media/20150413/20150413140314_46952.mp3</guid></item>
    <item>
    ……

    想干啥干啥。
    Daniel65536
        17
    Daniel65536  
       2015-04-14 14:01:29 +08:00
    @surftheair
    我这里cat_list有返回啊:
    $ curl "http://ezfm.china-plus.net/index.php?m=index&a=cat_list&cid=224"
    {"data":[{"id":"430","cid":"224","title":"\u98de\u9c7c\u79c0-\u7535\u5f71\u50ac\u6cea","compere":"","lpic":"http:\/\/123.56.91.34\/Uploads\/image\/20150414\/20150414115237_34310.jpg","url":"http:\/\/123.56.91.34\/Uploads\/media\/20150414\/20150414115215_89404.mp3","duration":"","brief":"","m_share":"0","pub_share":"","open_status":"1","hits":"95","b_hits":"322","c_hits":"6","d_hits":"132","update_time":"2015-04-14","f_time":"14\u5c0f\u65f6\u524d","size":"126.18"},{"id":"419","cid":"224","title":"\u98de\u9c7c\
    surftheair
        18
    surftheair  
       2015-04-14 14:05:49 +08:00
    @Daniel65536 应该是我用的工具问题了,我看到要POST,就用的这个在线工具http://hurl.it发送参数的,一直出错。结果浏览器直接GET倒给出结果了。
    rrkelee
        19
    rrkelee  
       2015-04-14 16:08:35 +08:00
    规律就是 date('Ymd') . '/' . date('YmdHis') . '_' . mt_rand(10000,9999) , ^_^
    rrkelee
        20
    rrkelee  
       2015-04-14 16:13:57 +08:00
    差一个 9 , - -!
    yaoppp
        21
    yaoppp  
    OP
       2015-04-14 20:57:37 +08:00
    @Daniel65536 @surftheair Thank you all.
    @rrkelee Thank you all the same.
    lsdnes
        22
    lsdnes  
       2015-04-15 10:50:22 +08:00
    请问Daniel65536:
    您的指令是用什麽语言执行的,还有unicode要怎麽转换成中文。
    谢谢
    lsdnes
        23
    lsdnes  
       2015-04-17 09:18:40 +08:00
    搞定(加入WIKI語法,方便增加WIKI的內容)
    <?php
    // 建立CURL連線
    $ch = curl_init();
    // 設定擷取的URL網址
    curl_setopt($ch, CURLOPT_URL, "http://ezfm.china-plus.net/index.php?m=index&a=cat_list&cid=224");
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    // 執行
    $jsonString =curl_exec($ch);
    // 關閉CURL連線
    curl_close($ch);
    $cart = json_decode( $jsonString );
    echo "EZ Morning 飞鱼秀</BR></BR>";
    for ($i = 1; $i < count($cart->data); $i++) {
    echo "*[<a href=".$cart->data[$i]->url.">".$cart->data[$i]->url."</a> ";
    echo $cart->data[$i]->title . "-";
    echo $cart->data[$i]->update_time;
    echo " (".$showdate= date("l",strtotime($cart->data[$i]->update_time)).")]</BR>";;
    }
    ?>
    manoon
        24
    manoon  
       2015-04-17 23:57:05 +08:00
    好吧,看到这帖,才发现。规矩可能是改掉了。
    好多年前,我就在偷偷下载他们的音频了。
    Daniel65536
        25
    Daniel65536  
       2015-04-18 00:19:22 +08:00
    @lsdnes 你不直接@我,我是看不到提醒的。

    直接在terminal运行就好。
    lsdnes
        26
    lsdnes  
       2015-04-18 22:14:50 +08:00
    @Daniel65536 謝謝,不過我沒有linux,大概無法測試,不過用PHP解決我了下載的問題了。
    PS. for ($i = 1; $i < count($cart->data); $i++) {
    $i初值要設為0才抓得到最新的一筆資料
    manoon
        27
    manoon  
       2015-04-19 01:25:27 +08:00
    @lsdnes 18条以后的如何获取?如何遍历呢?百思不得其解。。。
    lsdnes
        28
    lsdnes  
       2015-04-23 07:07:11 +08:00
    @manoon
    分析這個網址 http://ezfm.china-plus.net/index.php?m=index&a=cat_list&cid=224
    顯示{"data":[{"id":"450","cid":"224","title":"\u98de\u9c7c\u79c0-\u4e22\u4e1c\u897f","compere":"","lpic":"http:\/\/123.56.91.34\/Uploads\/image\/20150422\/20150422122728_33996.jpg","url":"http:\/\/123.56.91.34\/Uploads\/media\/20150422\/20150422123741_52958.mp3","duration":"","brief":"","m_share":"0","pub_share":"","open_status":"1","hits":"104","b_hits":"1853","c_hits":"23","d_hits":"685","update_time":"2015-04-22","f_time":"1\u5929\u524d","size":"126.17"}...............
    依JSON是可視為將所有參數存入data[] array中
    其他有用的參數官網有說明如:
    url:链接地址
    update_time:更新日期
    title 名稱
    所以先可以用php的json_decode來反譯
    $cart = json_decode( $jsonString );
    因為資料每一筆擷取到的資料是存在data[] array中,見({"data":[{....)
    所以你想取得第一筆的mp3網址、更新時間及title
    就用
    cart->data[0]->url
    cart->data[0]->update_time
    cart->data[0]->title
    第二筆就是
    cart->data[1]->url
    cart->data[1]->update_time
    cart->data[1]->title
    以此類推

    另外說明的是因為每天都會有新資料進來
    也就是data[]每天都會變大(每天新的一筆會按序從data[0]開始)
    所以for 就終值就設定的為data[]的筆數

    PS 我不太熟OPP所以不太會解釋它的用法。
    lsdnes
        29
    lsdnes  
       2015-04-23 22:40:00 +08:00 via Android
    lsdnes
        30
    lsdnes  
       2015-04-23 22:41:03 +08:00 via Android   ❤️ 1
    manoon
        31
    manoon  
       2015-04-24 11:31:45 +08:00
    @lsdnes 谢谢。
    恕我愚钝
    我还是没搞明白,如何获取2015-03-25 以前的源呢?
    还是说,他这个START就是03-25.
    以后只会一直增加,但03-25肯定不会消失?
    (我原先的理解是,他只输出一定的条数。相当于 cat -20 ./aa.txt, 即使aa.txt内容再长,他也只输出20条)
    xiaochong
        32
    xiaochong  
       2015-04-24 21:04:33 +08:00
    https://gist.github.com/zhichenghou/df8117264854be82c2b8
    https://gist.github.com/zhichenghou/d710dcfca37f970c5489

    go版本和python版本,启动从web访问后,就可以看到飞鱼秀的回放地址了。
    lsdnes
        33
    lsdnes  
       2015-04-25 08:03:18 +08:00
    http://english.cri.cn/easyfm/easymorning.html
    即日起,飞鱼秀节目回放将全部移至轻松调频官方App,敬请搜索“轻松调频”下载收听。
    飞鱼秀-2015-04-09 (周四) 等我老了
    飞鱼秀-2015-04-08 (周三) 初恋这件小事

    原來的網站不提供下載了,只能透過APP
    但我們可以透過api取得APP的mp3網址
    但這個api只從3/25才開始提供mp3
    lsdnes
        34
    lsdnes  
       2015-05-03 17:49:45 +08:00 via Android
    似乎又不能用了
    yaoppp
        35
    yaoppp  
    OP
       2015-06-25 19:22:17 +08:00
    @lsdnes 推荐一个下载网页http://stuff.oldhand.org/ezm/ezm.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1559 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:47 · PVG 00:47 · LAX 09:47 · JFK 12:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.