



























自从用学生优惠入了 apple music 以来,就开始常用 Apple Music听歌。界面的美观以及纯粹的听歌体验着实不错。虽说类似于 apple music 或者 spotify 这类只关心纯净的聆听体验,不太在意社交元素,可是免不了听到一首有感触的歌或者遇到一位歌手,想要知道关于他们的评论,想除了音乐以外听见更多的声音。这时候社交评论其实就很重要了。
于是想到用 Workflow获取正在听的歌然后将数据发送至国内音乐平台后返回评论数据进行处理然后在通知中心小插件快速查看的方式。
于是『又』折腾了一下午加上今天的功能完善做出了这样一个能够满足我现有对评论所有向往的 Workflow。 介于网易云音乐评论采用 js 加密,并且没有开放 api 接口的情况下。以下采用虾米评论获取。『其实我是一个老虾米了,私以为虾米的评论质量和对音乐专业性要高一些些』
还是老样子,一句话说一下这个 Workflow有什么用
方便用 apple music的用户偶尔想看一下这首歌(歌手,专辑)在虾米的大家的评论
一键选择并获取该歌曲,歌手,专辑在虾米的评论。拉取最热门评论3条以及最新评论10条,热门评论以🔥作为前缀显示。并支持点开单挑评论查看,以及重复查看多条评论。
为了方便虾米用户,根据@特殊字符Alan的用 Workflow 从网易云音乐迁移数据至 Apple Music 或 Spotify做了一个导入虾米精选集的 workflow,自动填写精选集名称以及作者。(请移步上面链接查看原理)
下载:一键导入虾米精选集
实现这个 Workflow 的原理主要在于获取当前歌曲信息后,将信息以关键词的形式发送到第三方的 search api 后获取返回的歌曲或者专辑或者歌手的 id ,然后在虾米的网页上抓去该页面评论的数据。

首先是获取歌曲的信息,这个比较简单容易,然后设置不同的变量名称方便后面使用。然后列出 menu 来选择查看的评论类型。
根据所选的不同类型来匹配不同的搜索 api,以及 json 的 key,当然最后要返回的都是歌曲,歌手,专辑的 id。

这里需要注意的是,先讲 keyword 进行网页编码,方便作为 url 中使用,然后一番 json信息的筛选获取到所需的 id 值。

通过返回的 id 我们进行详情页的分析,可以看到,热门评论是在<div id="brief_2_XXXXXXXX"> 的 div 框下的,而普通评论则是在<div id="brief_XXXXXXX"> 下。为了让两个评论有所区分,我才用了先用 replace text 将匹配的<div id="brief_2_XXXXXXXX">替换为带有🔥标志的普通评论,即
<div id="brief_2_[\s\S]*?"> 到 <div id="brief_120606">🔥
这里用到了正则匹配,匹配了以<div id="brief_2_[\s\S]*?">,_2_与>中间为任意字符的 text。

然后我们需要提取网页中所有的评论了。这里就需要用到 match text来 match
<div id="brief_[\s\S]*?">([\s\S]*?)</div>
这是以 brief_与>中间任意字符,以</div>结尾的所有匹配的,将我们需要获取的评论内容放在()内,()用来定位,以便于后面在「Get Group from Matched Text」中输出。
我们就得到了所有的评论,然后后面就比较简单了,我们只需要删除评论中的一些 html 标签元素以及带有分享信息的一些例如『分享自 iPhone 客户端』之类的东西。用到的也是 replace text。这里用到了一个<[^>]*>来删除所有 html 标签。
这里只需要用到一个 if 语句来判断是否有评论获取,如果没有,输出相应的提示 alert,如果有得话,这里为了方便能够在通知中心中查看多次,设定了一个高次数的 repeat,来让用户单独查看每一个评论。
自己是一个学设计的工业设计生,只是对这些东西感兴趣而且能够真正的解决自己的一些刚性需求。我觉得 workflow 真的是一个可以提升很大效率的工具,虽然我懂的也不多,但目前它实实在在的解决了我很多的问题与需求,这个 workflow 其实也有很多问题。例如,最开始版本我是将评论直接以翻页的形式每页展现固定条数的,但是发现有的评论字数很多,会导致通知中心崩溃,无法载入。我也不知道怎么控制行数的问题,因为有的评论自带比较多的换行,于是最后用了这个还算可以的解决方式,还变相的解决了不感兴趣的评论我就折叠起来的需求,哈哈。希望大家用的开心!
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。