跳转到主要内容

Monzo银行的FUSE文件系统。

项目描述

# monzo-fs

monzo-fs是一个[FUSE](https://github.com/libfuse/libfuse)文件系统,允许您像浏览文件和文件夹一样浏览Monzo账户和相关交易。

monzo-fs是

* **alpha质量**:它对我有效,但效果可能因Monzo更改API或其他随机原因而不同。
* **简单**:它大致遵循Monzo API的结构,以便您轻松浏览账户。
* **强大**:使用您熟悉和喜爱的shell工具,您可以轻松处理Monzo账户中的所有信息并创建引人入胜的演示。
* **只读**:这不是一个巨大的限制,我短期内不太可能解决这个问题,但能够通过拖放上传收据图片会很好。
* **个人项目**:这与我的职业就业无关,也不是我花大量时间扩展的项目。

monzo-fs基于[Monzo API](https://getmonzo.co.uk/docs/),并使用了一些其他出色的开源项目,如(fusepy](https://github.com/terencehonles/fusepy),[FUSE](https://github.com/libfuse/libfuse),[rfc3339](https://pypi.python.org/pypi/rfc3339)和[iso8601](https://pypi.python.org/pypi/iso8601)库。

## tl;dr

您需要一个[Monzo开发者账户](https://developers.getmonzo.co.uk/)和[您自己的oauth客户端](https://developers.getmonzo.co.uk/apps/new),其中"重定向URL"为"http://localhost:1234"。

**终端1(安装fuse,安装monzo-fs,挂载)**

```
$ brew install fuse
$ pip install monzo-fs
$ monzo-fs /tmp/monzo --client_id=<yours> --client_secret=<yours>
.. 遵循屏幕上的说明,然后在浏览器中 ...
```

**终端2(探索)**

```
$ ls /tmp/monzo
acc_00009Aq4VDixoGFnIxcBmr

$ ls /tmp/monzo/acc_00009Aq4VDixoGFnIxcBmr/transactions/2016/08/ | head
tx_00009Aq4fq7rt647A5pWLp
tx_00009Aq6sLNlhcLnU9MDar
tx_00009Aq7I54SyEEcv5LaUb
tx_00009Aq8QMKOnDp8DaZ5KD
tx_00009Aq9nVdkRA4XqxiQV7
tx_00009AqFGWd8Knhd5o5EDB
tx_00009AqFXAUHugn7U6PiLZ
tx_00009AqFxqpP7AZZH3ybb7
tx_00009AqFxyKrCcmLc8meOH
tx_00009AqG0e3D4pITZTntvl

在/tmp/monzo/acc_00009Aq4VDixoGFnIxcBmr/transactions/2016/08/tx_00009Aq4fq7rt647A5pWLp/下执行$ ls
账户余额 分类 去重ID JSON元数据 已结算
账户ID 交易对手 描述 本地金额 备注 更新时间
金额 创建时间 ID 本地货币 发起人
附件 货币 是否加载 商户 方案

在/tmp/monzo/acc_00009Aq4VDixoGFnIxcBmr/transactions/2016/08/tx_00009Aq4fq7rt647A5pWLp/category下执行$ cat
monzo

在/tmp/monzo/acc_00009Aq4VDixoGFnIxcBmr/transactions/2016/08/tx_00009Aq4fq7rt647A5pWLp/amount下执行$ cat
100.00

在/tmp/monzo/acc_00009Aq4VDixoGFnIxcBmr/transactions/2016/08/tx_00009Aq4fq7rt647A5pWLp/is_load下执行$ cat
True
```

## 入门指南

首先需要安装FUSE。对于Mac用户,`brew install fuse`是一个简单的方法,Linux用户应该可以使用像`apt-get install fuse`这样简单的方法,至于Windows上如何操作,我毫无头绪。

一旦安装了fuse

1. 创建一个[Monzo开发者账户](https://developers.getmonzo.co.uk/)。
2. 创建一个[新的oauth客户端](https://developers.getmonzo.co.uk/apps/new),将`http://localhost:1234/`列为"重定向URL"。注意客户端ID和密钥(你稍后会需要它们)。
3. 安装monzo-fs:`pip install monzo-fs`
4. 运行monzo-fs:`monzo-fs /tmp/monzo --client_id=<你的> --client_secret=<你的>`。
5. 完成oauth流程(在终端中点击链接,输入你的电子邮件,点击电子邮件中的链接,然后返回终端)。
6. 🎉 你已经准备好出发了,monzo-fs已挂载在`/tmp/monzo`! 🎉

## 配置

monzo-fs在每次启动之间将状态保存在`~/.monzofs`中。此文件包含有效的oauth令牌,因此你不必每次重启程序时都重新授权。

## 示例

一些随机示例以帮助你开始/兴奋。基本上,你可以通过将其视为文件系统来以相当有意义的方式探索你的交易历史。monzo-fs设计得相对高效,所以你不需要(例如,我们缓存慢速请求,如列出交易),但也不会过于激进,所以数据相对较新(例如,大多数缓存存活几分钟)。

### 获取你的余额

```
在/tmp/monzo/acc_00009Aq4VDixoGFnIxcBmr/balance/下执行$ ls -l
total 24
-r--r--r-- 0 root wheel 6 1 Jan 1970 balance
-r--r--r-- 0 root wheel 4 1 Jan 1970 currency
-r--r--r-- 0 root wheel 7 1 Jan 1970 spend_today

在/tmp/monzo/acc_00009Aq4VDixoGFnIxcBmr/balance/balance下执行$ cat
41.44

在/tmp/monzo/acc_00009Aq4VDixoGFnIxcBmr/balance/spend_today下执行$ cat
-55.69
```

### 打印特定交易的备注

```
在/tmp/monzo/acc_00009Aq4VDixoGFnIxcBmr/transactions/2015/08/tx_00008zIcpb1TB4yeIFXMzx/notes下执行$ cat
三文鱼三明治 🍞
```

### 打印指定月份每天的交易数量

```
在/tmp/monzo/acc_00009Aq4VDixoGFnIxcBmr/transactions/2016/08/*/created下执行$ cat -d T -f 1 | cut -d - -f 3 | sort | uniq -c
17 01
4 02
4 03
7 04
4 05
7 06
5 07
5 08
1 09
3 10
3 11
5 12
7 13
4 14
1 15
1 16
6 17
```

### 打印指定月份的支出图表

这需要一个shell脚本来读取;)

```sh
#!/bin/sh
for account in "$(ls -1 /tmp/monzo/)"; do
# 对每个账户进行操作...

# 1) 创建并截断一个文件以保存日期/余额对。
touch "/tmp/monzo-balance-${account}"
> "/tmp/monzo-balance-${account}"

# 2) 遍历2016/08中的所有交易并获取创建时间和余额。
for txn in "/tmp/monzo/${account}/transactions/2016/08/"*; do
# 打印“日期 时间 余额”记录。
created="$(cat "${txn}/created" | cut -d . -f 1)"
balance="$(cat "${txn}/account_balance")"
echo "${created} ${balance}" >> /tmp/monzo-balance-${account}
done

# 3) 使用gnuplot进行绘图。
gnuplot << __EOF
set terminal png
set output '/tmp/monzo-balance-${account}.png'
set xdata time
set format x "%m/%d"
set timefmt "%Y-%m-%dT%H:%M:%S"
plot "/tmp/monzo-balance-${account}" using 1:2 with linespoints
__EOF

4) 有利润吗?
rm -f "/tmp/monzo-balance-${account}"
打开 "/tmp/monzo-balance-${account}.png"
done
```

**示例结果:**

![img](http://i.imgur.com/stASKCZ.png)

## 常见问题解答

### 这能花掉我的monzough吗?

目前不能(Monzo API是只读的)。如果[Monzo更改这一点](https://trello.com/c/BwKL2zRy/31-initiate-payments-via-api)并且默认oauth作用域提供了发起付款的访问权限,那么`monzo-fs`(或由它授予的令牌)理论上可以做到这一点。

### 使用它是安全的吗?

可能,希望如此,也许不一定。我使用了它,你应该自己作出决定。这是alpha版本。

### 文件/文件夹被赋予了哪些权限?

文件/文件夹的所有者是root:root(`{uid,gid} = 0`),并且对所有人可读/可列表。

### 如何卸载?

最简单的方法是按`^C`中断`monzo-fs`进程。如果您找不到它,`pkill -f monzo-fs`可能会做到。最后,您可以使用`umount -f /tmp/monzo`来卸载挂载,但很可能会留下`monzo-fs`进程作为僵尸进程。

项目详情


下载文件

为您的平台下载文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分布

monzo-fs-0.1.3.tar.gz (12.9 kB 查看哈希值)

上传时间 源代码

支持者