https://github.com/pingf/annie
πΎ A fast, simple and clean video downloader
https://github.com/pingf/annie
Last synced: 6 months ago
JSON representation
πΎ A fast, simple and clean video downloader
- Host: GitHub
- URL: https://github.com/pingf/annie
- Owner: pingf
- License: mit
- Fork: true (iawia002/lux)
- Created: 2018-03-20T12:27:11.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-03-20T08:53:02.000Z (over 8 years ago)
- Last Synced: 2024-06-20T01:56:25.101Z (about 2 years ago)
- Language: Go
- Homepage:
- Size: 1.35 MB
- Stars: 16
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Annie
[](https://travis-ci.org/iawia002/annie)
[](https://codecov.io/gh/iawia002/annie)
πΎ A fast, simple and clean video downloader built with Go.
```console
$ annie -c cookies.txt https://www.bilibili.com/video/av20203945/
Site: εε©εε© bilibili.com
Title: γ2018ζεΉ΄η₯εεγηΈιday by day
Type: video
Quality: ι«ζΈ
1080P60
Size: 220.65 MiB (231363071 Bytes)
2.06 MiB / 220.65 MiB [>-----------------------------] 0.93% 1.94 MiB/s 1m52s
```
## Install
### Prerequisites
The following dependencies are required and must be installed separately.
* **[FFmpeg](https://www.ffmpeg.org)**
> **Note**: FFmpeg does not affect the download, only affect the final file merge.
To install Annie, please use `go get`, or download the binary file in the [Releases](https://github.com/iawia002/annie/releases) page, or compile yourself.
```bash
$ go get github.com/iawia002/annie
...
$ annie [args] URL
```
## Get Started
### Download a video
```console
$ annie https://www.douyin.com/share/video/6509219899754155272
Site: ζι³ douyin.com
Title: ε₯½ε· ι’θεΏ
θΏ
Type: mp4
Size: 2.63 MiB (2762719 Bytes)
741.70 KiB / 2.63 MiB [=========>--------------------------] 27.49% 1.98 MiB/s
```
You can also use the `-i` option to view video information, skip download.
> Note: if you have special characters in your URL, we recommend putting URL in quotation marks. (thanks @tonyxyl for pointing this out)
>
> `$ annie 'https://...'`
### Download anything else
If you already got the URL of the exact resource you want, you can download it directly:
```console
$ annie https://img9.bcyimg.com/drawer/15294/post/1799t/1f5a87801a0711e898b12b640777720f.jpg
annie doesn't support this URL by now, but it will try to download it directly
Site: Universal
Title: 1f5a87801a0711e898b12b640777720f
Type: image/jpeg
Size: 1.00 MiB (1051042 Bytes)
1.00 MiB / 1.00 MiB [===================================] 100.00% 3.35 MiB/s 0s
```
### Download playlist
You can use the `-p` option to tell Annie to download the whole playlist rather than a single video.
```console
$ annie -i -p https://www.bilibili.com/bangumi/play/ep198061
Site: εε©εε© bilibili.com
Title: Doctor X 第εε£οΌη¬¬δΈι
Type: video
Size: 845.66 MiB (886738354 Bytes)
Site: εε©εε© bilibili.com
Title: Doctor X 第εε£οΌη¬¬δΊι
Type: video
Size: 930.71 MiB (975919195 Bytes)
...
```
### Resume a download
You may use Ctrl+C to interrupt a download.
A temporary `.download` file is kept in the output directory. Next time you run `annie` with the same arguments, the download progress will resume from the last session.
### Cookies
If you need to log in your account to access something (a private video or VIP only video), use the `-c` option to feed the browser cookies to `annie`.
**Note:**
* the formats of cookies as follow:
```
name=value; name2=value2; ...
```
cookies can be a string or a file.
```console
$ annie -c "name=value; name2=value2" https://www.bilibili.com/video/av20203945
# or
$ annie -c cookies.txt https://www.bilibili.com/video/av20203945
```
### Proxy
#### HTTP proxy
You can specify an HTTP proxy via `-x` option:
```console
$ annie -x http://127.0.0.1:7777 -i https://www.youtube.com/watch?v=Gnbch2osEeo
```
#### SOCKS5 proxy
You can also use `-s` option to specify a SOCKS5 proxy:
```console
$ annie -s 127.0.0.1:1080 -i https://www.youtube.com/watch?v=Gnbch2osEeo
```
### Use specified Referrer
You can use the `-r` option to tell Annie to use the given Referrer to request.
```console
$ annie -r https://www.bilibili.com/video/av20383055/ http://cn-scnc1-dx.acgvideo.com/...
...
```
### Debug Mode
You can use the `-d` option to see network request message.
```console
$ annie -i -d http://www.bilibili.com/video/av20088587
URL: http://www.bilibili.com/video/av20088587
Method: GET
Headers: map[User-Agent:[Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0] Accept:[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8] Accept-Charset:[UTF-8,*;q=0.5] Accept-Encoding:[gzip,deflate,sdch] Accept-Language:[en-US,en;q=0.8] Referer:[http://www.bilibili.com/video/av20088587]]
Status Code: 200
URL: https://interface.bilibili.com/v2/playurl?appkey=84956560bc028eb7&cid=32782944&otype=json&quality=0&type=&sign=708701ffaea9937d4541d5cc2f1cf3b1
Method: GET
Headers: map[Accept:[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8] Accept-Charset:[UTF-8,*;q=0.5] Accept-Encoding:[gzip,deflate,sdch] Accept-Language:[en-US,en;q=0.8] User-Agent:[Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0] Referer:[https://interface.bilibili.com/v2/playurl?appkey=84956560bc028eb7&cid=32782944&otype=json&quality=0&type=&sign=708701ffaea9937d4541d5cc2f1cf3b1]]
Status Code: 200
Site: εε©εε© bilibili.com
Title: ηζ²Ήε¨εηι₯ζ§ε₯₯θΏͺR8θ·θ΅ι
Type: flv
Size: 64.38 MiB (67504795 Bytes)
```
### All available arguments
```console
$ annie -h
Usage of annie:
-c string
Cookie
-d Debug mode
-i Information only
-p Download playlist
-r string
Use specified Referrer
-s string
SOCKS5 proxy
-v Show version
-x string
HTTP proxy
```
## Supported Sites
Site | URL | π¬ Videos | π Images | π Playlist
--- | --- | ---------| -------- | ---------
ζι³ | | β | | |
εε©εε© | | β | | β |
ε欑ε
| | | β | |
pixivision | | | β | |
δΌι
· | | β | | |
YouTube | | β | | |
η±ε₯θΊ | | β | | |
θζTV | | β | | |
Tumblr | | β | β | |
Vimeo | | β | | |
## Contributing
Annie is an open source project and welcome contributions π
Check out the [CONTRIBUTING](https://github.com/iawia002/annie/blob/master/CONTRIBUTING.md) guide to get started
## License
MIT