Add torrent-viewer script (#644) [skip ci]
This commit is contained in:
parent
3e66570596
commit
d8a16eeb1a
2 changed files with 30 additions and 0 deletions
|
|
@ -334,3 +334,14 @@ $ examples/image_viewer.clj
|
|||
```
|
||||
|
||||
See [image_viewer.clj](image_viewer.clj).
|
||||
|
||||
### Torrent viewer
|
||||
|
||||
Shows the content of a torrent file. Note that pieces' content is hidden.
|
||||
|
||||
Example usage:
|
||||
``` shell
|
||||
$ examples/torrent-viewer.clj file.torrent
|
||||
```
|
||||
|
||||
See [torrent-viewer.clj](torrent-viewer.clj).
|
||||
|
|
|
|||
19
examples/torrent-viewer.clj
Normal file
19
examples/torrent-viewer.clj
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env bb
|
||||
|
||||
(require '[clojure.java.io :as io])
|
||||
(require '[bencode.core :refer [read-bencode]])
|
||||
(require '[clojure.walk :refer [prewalk]])
|
||||
(require '[clojure.pprint :refer [pprint]])
|
||||
(import 'java.io.PushbackInputStream)
|
||||
|
||||
(defn bytes->strings [coll]
|
||||
(prewalk #(if (bytes? %) (String. % "UTF-8") %) coll))
|
||||
|
||||
(defn read-torrent [src]
|
||||
(with-open [in (io/input-stream (io/file src))]
|
||||
(-> in PushbackInputStream. read-bencode bytes->strings)))
|
||||
|
||||
(when-let [src (first *command-line-args*)]
|
||||
(-> (read-torrent src)
|
||||
(assoc-in ["info" "pieces"] "...") ; binary data
|
||||
pprint))
|
||||
Loading…
Reference in a new issue