summaryrefslogtreecommitdiff
path: root/doc/tips/using_the_web_as_a_special_remote.mdwn
blob: 2dc3419ad302e759cf449ebabf3c97b6ca2fe11c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
The web can be used as a [[special_remote|special_remotes]] too.

	# git annex addurl http://example.com/video.mpeg
	addurl example.com_video.mpeg (downloading http://example.com/video.mpeg)
	########################################################## 100.0%
	ok

Now the file is downloaded, and has been added to the annex like any other
file. So it can be renamed, copied to other repositories, and so on.

To add a lot of urls at once, just list them all as parameters to
`git annex addurl`.

## trust issues

Note that git-annex assumes that, if the web site does not 404, and has the
right file size, the file is still present on the web, and this counts as
one [[copy|copies]] of the file. If the file still seems to be present 
on the web, it will let you remove your last copy, trusting it can be
downloaded again:

	# git annex drop example.com_video.mpeg
	drop example.com_video.mpeg (checking http://example.com/video.mpeg) ok

If you don't [[trust]] the web to this degree, just let git-annex know:

	# git annex untrust web
	untrust web ok

With the result that it will hang onto files:

	# git annex drop example.com_video.mpeg
	drop example.com_video.mpeg (unsafe) 
	  Could only verify the existence of 0 out of 1 necessary copies
	  Also these untrusted repositories may contain the file:
	  	00000000-0000-0000-0000-000000000001  -- web
	  (Use --force to override this check, or adjust numcopies.)
	failed

## attaching urls to existing files

You can also attach urls to any file already in the annex:

	# git annex addurl --file my_cool_big_file http://example.com/cool_big_file
	addurl my_cool_big_file ok
	# git annex whereis my_cool_big_file
	whereis my_cool_big_file (2 copies) 
  	00000000-0000-0000-0000-000000000001 -- web
   	27a9510c-760a-11e1-b9a0-c731d2b77df9 -- here

## configuring filenames

By default, `addurl` will generate a filename for you. You can use
`--file=` to specify the filename to use.

If you're adding a bunch of related files to a directory, or just don't
like the default filenames generated by `addurl`, you can use `--pathdepth`
to specify how many parts of the url are put in the filename.
A positive number drops that many paths from the beginning, while a negative
number takes that many paths from the end.
	
	# git annex addurl http://example.com/videos/2012/01/video.mpeg
	addurl example.com_videos_2012_01_video.mpeg (downloading http://example.com/videos/2012/01/video.mpeg)
	# git annex addurl http://example.com/videos/2012/01/video.mpeg --pathdepth=2
	addurl 2012_01_video.mpeg (downloading http://example.com/videos/2012/01/video.mpeg)
	# git annex addurl http://example.com/videos/2012/01/video.mpeg --pathdepth=-2
	addurl 01_video.mpeg (downloading http://example.com/videos/2012/01/video.mpeg)

## videos

<a name=quvi></a>

There's support for downloading videos from sites like YouTube, Vimeo,
and many more. This relies on [quvi](http://quvi.sourceforge.net/) to find
urls to the actual videos files.

When you have quvi installed, you can just 
`git annex addurl http://youtube.com/foo` and it will detect that
it is a video and download the video content for offline viewing.

Later, in another clone of the repository, you can run `git annex get` on
the file and it will also be downloaded with the help of quvi. This works
even if the video host has transcoded or otherwise changed the video
in the meantime; the assumption is that these video files are equivalent.

There is an `annex.quvi-options` configuration setting that can be used
to pass parameters to quvi. For example, you could set `git config
annex.quvi-options "--format low"` to configure it to download low
quality videos from YouTube.

Note that for performance reasons, the url is not checked for redirects,
so some shortened urls will not be detected. You can
either load the short url in a browser to get the full url, or you
can force use of quvi with redirect detection, by prepending "quvi:" to the
url.

To download a youtube playlist, you need to find the feed associated with that
playlist, and pass it to `git annex importfeed`. There does not seem to be
an easy link anywhere to get the feed, but you can construct its url
manually. For a playlist like
"https://www.youtube.com/playlist?list=PL4F80C7D2DC8D9B6C", the
feed is "http://gdata.youtube.com/feeds/api/playlists/PL4F80C7D2DC8D9B6C"

More details about youtube feeds at <http://googlesystem.blogspot.com/2008/01/youtube-feeds.html>
-- `git-annex importfeed` should handle all of them.

## bittorrent

The [[bittorrent_special_remote|special_remotes/bittorrent]] lets git-annex
also download the content of torrent files, and magnet links to torrents.

You can simply pass the url to a torrent to `git annex addurl`
the same as any other url.

You have to have [aria2](http://aria2.sourceforge.net/) 
and bittornado (or the original bittorrent) installed for this
to work.

## podcasts

This is done using `git annex importfeed`. See [[downloading podcasts]].