利用 Fluid 自制 Mac 版 Overcast 应用
ztj100 2025-07-10 22:14 41 浏览 0 评论
我喜爱收听播客,健身、上/下班途中,工作中,甚至是忙着做家务时。大多数情况下我会用 Marco Arment开发的Overcast(Freemium)在 iPhone 上收听,这是我目前最喜爱的 Podcast 应用之一1,我享受 Overcast「杀手级」功能 Smart Speed(智能加速)2和 Voice Boost(声音均衡器)3所带来的收听效率以及更棒的音质。
虽然 Overcast 有 Web App,可每日在浏览器中为其独立打开一个标签页总会感到厌烦,一不小心把浏览器关闭了,还得重新打开浏览器输入网址或者点击「个人收藏」上的标签重新开启。我一直渴望 Overcast 的桌面客户端能尽早登陆 OS X 平台,尤其是在 instacast 母公司Vemedio 宣布终止 Instacast 项目之后,期望更加强烈。
于是,我决定着手解决这件事,利用 Fluid把 Overcast Web App 创建成 Fake Mac App,方便日常使用。
关于 Fluid
Fluid.app 可以把任意 Web App 创建成独立的 Mac App,支持「Pin to Status Bar」功能(需付费解锁),方便用户在 Menu Bar 上对所创建的 Mac App 进行直接操作。
Fluid.app 的基础功能是免费的,用户可以免费下载安装。支付 4.99 美元可获得完整版,解锁额外的功能:
- 创建的 Mac App 可以使用单独的 Cookie (Preferences → Security → Cookie Storage);
- Pin 创建的 Mac App 到 Menu Bar (Fluid.app Menu → Pin to Status Bar…);
- 创建的 Mac App 可以自定义 Userscripts 和 Userstyles (Window → Userscripts/Userstyles);
- 全屏模式 (View → Enter Full Screen)。
创建 Overcast Mac App
Part 1:
这一步十分简单,开启 Fluid.app 后在 URL
中填写 Overcast Web App 的地址:https://overcast.fm
;Name
按自己喜好填写,如:Overcast;Lacation
选择存放路径;Icon
添加一个自己喜欢的 icon。如果留空,Fluid.app 会自动从 Web App 上抓取一个 icon。
Part 2:
点击「Create」即可完成 Overcast Mac App 的创建。开启 Overcast Mac App 后做如下设置:
Preferences → General
- Home page:
https://overcast.fm
- Global shortcut: O(全局 Hotkey 快捷操作,可按自己的喜好设置)
Preferences → Security
- Enable plug-ins
- Enable Javascript
- Accept Cookies: Only from sites I visit
- Cookie Storage: Shared with Safari (需付费解锁)
Preferences → Whitelist
Allow
browsing to URLs matching these- Patterns:
*overcast.fm*
完成上述设置后,基于免费版 Fluid.app 所创建的 Overcast Mac App 已完成,如果你想让 Overcast Mac App 拥有更为完善的功能,接近完美的用户界面,则需要付费解锁完整版,才可按下列步骤继续操作。
Pin It
把 Overcast Mac App 的工作界面 Pin 到 Menu Bar 上4Overcast Menu → Pin to Status Bar…
,「Pin to Status Bar」后 Overcast Mac App 支持基本的 Hotkey 快捷操作,如:→
(前进)和←
(后退)。
Userscripts
利用 @DannyBres编写的脚本添加自定义 Hotkey 快捷方式,在 Menu Bar 上右键(U)Overcast Mac App 的 icon,点选 Userscripts。
复制如下脚本,按上图所标注步骤创建一个新的 Userscripts,Pattern:*overcast.fm*
:
var episodeBody = $('#episode_body').text; if (showUnreadNumberOnDock == false){ window.fluid.dockBadge = ""; } else { var pathname = window.location.pathname; if (pathname == "/podcasts" && showUnreadNumberOnDock == true) { var numberOfUnread = $('.episodecell').length; window.fluid.dockBadge = numberOfUnread; } } $('body').keydown(function(event) { if (event.keyCode == 80) { toggleAudio; } if (event.keyCode == 70) { skipForwards; } if (event.keyCode == 66) { skipBackwards; } if (event.keyCode == 71) { goFaster; } if (event.keyCode == 83) { goSlower; } console.log(event.keyCode) }); function toggleAudio { if (!$('#audioplayer').get(0).paused) { $('#audioplayer').get(0).pause; } else { $('#audioplayer').get(0).play; } } function skipForwards { $('#audioplayer').get(0).currentTime+=forwardSkipDuration; } function skipBackwards { $('#audioplayer').get(0).currentTime-=backwardSkipDuration; } function goFaster { $('#audioplayer').get(0).playbackRate+=speedIncrease; updatePlaybackDisplay; } function goSlower { if($('#audioplayer').get(0).playbackRate - speedDecrease > 0) $('#audioplayer').get(0).playbackRate-=speedDecrease; updatePlaybackDisplay; } function updatePlaybackDisplay { if ($('#audioplayer').get(0).playbackRate == 1) { var textForBody = episodeBody; } else { var textForBody = 'Playback speed: ' + $('#audioplayer').get(0).playbackRate.toFixed(2) + " - "+episodeBody; } $('#episode_body').text(textForBody); }
此脚本所对应的 Hotkey 5快捷方式如下:
P
— [Play] 暂停或播放当前播客;F
— [Forwards] 向前快进 30 秒;B
— [Backwards] 向后倒退 30 秒;G
— [Go Faster] 提高 0.1 倍播放速度6;S
— [Slower] 降低 0.1 倍播放速度。
Userstyles
Overcast Mac App 工作界面在 OS X 10.10+ 上有点格格不入,利用 @thanland所编写的Userstyles和手动收缩窗口重新布局 Overcast Mac App 的工作界面,并新增一条 2px 橙色滚动条7,使之更有原生 Mac App 的范儿。
复制如下脚本,按上图所标注步骤创建一个新的 Userstyles,Pattern 同为:overcast.fm:
/* Custom scroll bar */ html { overflow: auto; } body { position: absolute; top: 10px; left: 0; bottom: 10px; right: 10px; padding: 30px 20px 30px 30px; overflow-y: scroll; overflow-x: hidden; } ::-webkit-scrollbar { width: 2px; } ::-webkit-scrollbar-track { background: #eee; } ::-webkit-scrollbar-thumb { -webkit-border-radius: 10px; border-radius: 10px; background: rgba(252,126,15,0.8); } ::-webkit-scrollbar-thumb:window-inactive { background: rgba(252,126,15,0.4); } /* Page layout tweaks */ .nav { padding-top: 0 !important; } .container h2:first-child { margin-top: 0 !important; } #audioplayer { margin-bottom: 1em !important; }
按上述步骤操作完毕后,一款功能完善功能,界面美观的 Fake Overcast Mac App 便创建完成。Enjoy it!
结语
以上内容只是抛砖引玉,如果感兴趣还可以利用 Fluid.app + Web App 创建你所需要的 Fake Mac App,对应的 Userscripts/Userstyles 脚本可在 GitHub Gist上查找或者自行编写。
- 另一款是 Supertop 团队开发 Castro,界面美观,交互新颖。
- 缩短播客中出现的间歇时间(如主播说话间的停顿),以节省收听时间,并且尽量不会让收听者察觉到有何不同。
- 调整播客播放的音量,使音量过低或过高的内容通过算法平衡到一个正常水平。让播客在嘈杂的环境中更具可听性。
- 需要注意的是,工作界面下方的 Status Bar 不会自动隐藏,需手动按下 Hotkey:
/
让其隐藏。 - 对应的 Hotkey 可按需自行修改,其 keyCode 值可参考:css-tricks.com
- 需要注意的是,使用该 Hoykey 操作时 Speed 项中的阀值不会随之改变。倍速值纯靠心中默念。: )
- 默认值为 1px,多次调试后我个人认为 2px 更为美观。
相关推荐
- Linux集群自动化监控系统Zabbix集群搭建到实战
-
自动化监控系统...
- systemd是什么如何使用_systemd/system
-
systemd是什么如何使用简介Systemd是一个在现代Linux发行版中广泛使用的系统和服务管理器。它负责启动系统并管理系统中运行的服务和进程。使用管理服务systemd可以用来启动、停止、...
- Linux服务器日常巡检脚本分享_linux服务器监控脚本
-
Linux系统日常巡检脚本,巡检内容包含了,磁盘,...
- 7,MySQL管理员用户管理_mysql 管理员用户
-
一、首次设置密码1.初始化时设置(推荐)mysqld--initialize--user=mysql--datadir=/data/3306/data--basedir=/usr/local...
- Python数据库编程教程:第 1 章 数据库基础与 Python 连接入门
-
1.1数据库的核心概念在开始Python数据库编程之前,我们需要先理解几个核心概念。数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它就像一个电子化的文件柜,能让我们高效...
- Linux自定义开机自启动服务脚本_linux添加开机自启动脚本
-
设置WGCloud开机自动启动服务init.d目录下新建脚本在/etc/rc.d/init.d新建启动脚本wgcloudstart.sh,内容如下...
- linux系统启动流程和服务管理,带你进去系统的世界
-
Linux启动流程Rhel6启动过程:开机自检bios-->MBR引导-->GRUB菜单-->加载内核-->init进程初始化Rhel7启动过程:开机自检BIOS-->M...
- CentOS7系统如何修改主机名_centos更改主机名称
-
请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1.前言本文将讲解CentOS7系统如何修改主机名。...
- 前端工程师需要熟悉的Linux服务器(SSH 终端操作)指令
-
在Linux服务器管理中,SSH(SecureShell)是远程操作的核心工具。以下是SSH终端操作的常用命令和技巧,涵盖连接、文件操作、系统管理等场景:一、SSH连接服务器1.基本连接...
- Linux开机自启服务完全指南:3步搞定系统服务管理器配置
-
为什么需要配置开机自启?想象一下:电商服务器重启后,MySQL和Nginx没自动启动,整个网站瘫痪!这就是为什么开机自启是Linux运维的必备技能。自启服务能确保核心程序在系统启动时自动运行,避免人工...
- Kubernetes 高可用(HA)集群部署指南
-
Kubernetes高可用(HA)集群部署指南本指南涵盖从概念理解、架构选择,到kubeadm高可用部署、生产优化、监控备份和运维的全流程,适用于希望搭建稳定、生产级Kubernetes集群...
- Linux项目开发,你必须了解Systemd服务!
-
1.Systemd简介...
- Linux系统systemd服务管理工具使用技巧
-
简介:在Linux系统里,systemd就像是所有进程的“源头”,它可是系统中PID值为1的进程哟。systemd其实是一堆工具的组合,它的作用可不止是启动操作系统这么简单,像后台服务...
- Linux下NetworkManager和network的和平共处
-
简介我们在使用CentoOS系统时偶尔会遇到配置都正确但network启动不了的问题,这问题经常是由NetworkManager引起的,关闭NetworkManage并取消开机启动network就能正...
你 发表评论:
欢迎- 一周热门
-
-
MySQL中这14个小玩意,让人眼前一亮!
-
旗舰机新标杆 OPPO Find X2系列正式发布 售价5499元起
-
面试官:使用int类型做加减操作,是线程安全吗
-
C++编程知识:ToString()字符串转换你用正确了吗?
-
【Spring Boot】WebSocket 的 6 种集成方式
-
PyTorch 深度学习实战(26):多目标强化学习Multi-Objective RL
-
pytorch中的 scatter_()函数使用和详解
-
与 Java 17 相比,Java 21 究竟有多快?
-
基于TensorRT_LLM的大模型推理加速与OpenAI兼容服务优化
-
这一次,彻底搞懂Java并发包中的Atomic原子类
-
- 最近发表
-
- Linux集群自动化监控系统Zabbix集群搭建到实战
- systemd是什么如何使用_systemd/system
- Linux服务器日常巡检脚本分享_linux服务器监控脚本
- 7,MySQL管理员用户管理_mysql 管理员用户
- Python数据库编程教程:第 1 章 数据库基础与 Python 连接入门
- Linux自定义开机自启动服务脚本_linux添加开机自启动脚本
- linux系统启动流程和服务管理,带你进去系统的世界
- CentOS7系统如何修改主机名_centos更改主机名称
- 前端工程师需要熟悉的Linux服务器(SSH 终端操作)指令
- Linux开机自启服务完全指南:3步搞定系统服务管理器配置
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)