The torrents Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The torrents Reference Manual

This is the torrents Reference Manual, version 0.12, generated automatically by Declt version 2.4 patchlevel 1 "Will Decker" on Fri May 24 08:28:58 2019 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

[[https://gitlab.com/vindarel/cl-torrents][file:https://gitlab.com/vindarel/cl-torrents/badges/master/pipeline.svg]]

  This is  a little  app to search for torrents on popular trackers.

  It comes as:

- a *lisp library*,
- a *command line* interface,
- a terminal *readline interface*,
- a simple *GUI*.
- The *[[https://github.com/vindarel/cl-torrents-web][Web UI]]* works too.

  We currently  scrape [[http://1337x.to][1337x.to]]  (since v0.9)  and [[https://www.torrentdownloads.me][torrentdownloads.me]]
  (v0.10) and present the results sorted by seeders.

  Download for GNU/Linux 64 bits: see [[https://gitlab.com/vindarel/cl-torrents/tags][Releases]] (/78Mo, self-contained executable/).

#+html: 

#+html:

#+html:

** Installation The library is on Quicklisp (february 2019) and [[http://ultralisp.org/][Ultralisp]]. : (ql:quickload "torrents") : (torrents:search-torrents "tears of steel") See the download link of the binary above. It is a self-contained executable for GNU/Linux 64-bits. You do /not/ need to install a Lisp implementation. It's a 78Mo binary. To build the readline app, do: : make build To build the Tk GUI: : make build-gui then run : ./torrents --help : ./torrents-tk & _Troubleshooting_ The Tk GUI needs [[https://notabug.org/cage/nodgui/][nodgui]] newer than march, 2019. If a search doesn't work with a =CRYPTO_num_locks= error message: #+BEGIN_EXPORT ascii > ./torrents matrix searching '(matrix)' on 1337... no results. error: The alien function "CRYPTO_num_locks" is undefined. searching '(matrix)' on DOWNLOADSME... no results. error: The alien function "CRYPTO_num_locks" is undefined. #+END_EXPORT You might need to upgrade your OpenSSL version. See [[https://gitlab.com/vindarel/cl-torrents/issues/5][this issue]]. ** Usage We can use this little app both in a Lisp REPL (Slime) and in a terminal, as a command line tool or from its embedded interactive prompt. Results are cached in =~/.cl-torrents/cache/=. Delete this directory if you want new results. *** Lisp REPL Search for torrents: #+BEGIN_SRC text (use-package :torrents) (search-torrents "matrix") [...] 6: The Matrix Revolutions (2003) BRRip [Dual Audio] [Hindi+Eng] 5: Matrix (1999)Blu-Ray 720p Dublado PT-BR - mo93438 4: The Matrix Trilogy (1999-2003) BDRip 1080p Dual Audio [ Hind 3: The Matrix Trilogy (1999-2003) BluRay BDRip 1080p AC3 2: The Matrix Trilogy (1999-2003) + Extras 1080p BluRay x264 Du 1: The Matrix Reloaded (2003) FullHD, Dual Audio: English + Spa 0: Matrix FRENCH DVDRIP 1999 COOL #+END_SRC To help finding the most relevant results (the website sometimes is a bit relaxed with our search terms), each keyword is printed in a different color: #+html:

(you need to enable ansi colors in Slime, see [[https://github.com/enriquefernandez/slime-repl-ansi-color][slime-repl-ansi-color]]. Disable this feature with =(setf cl-ansi-text:*enabled* nil)=) We get a magnet link with: #+BEGIN_SRC lisp (magnet 0) ;; "magnet:?xt=urn:btih:40eca43690cf1b99b0a4d485ebf4855d20b0bac5" #+END_SRC We can open it with a torrent client (transmission-gtk by default): #+BEGIN_SRC lisp (download 0) #+END_SRC And voilà :) We may add more features, eventually. Our goal is rather to write a tutorial to show you diverse Common Lisp topics. **** Parameters =*cache-p*=: if nil, don't use the cache system. *** Command line Use the options given below, #+BEGIN_SRC text $ torrents -h CL-torrents. Usage: Available options: -d, --details print more details (like the torrent's url) -h, --help print this help text -i, --interactive enter an interactive repl -m, --magnet ARG get the magnet link of the given search result. -n, --nb ARG set the maximum number of results to print. -o, --open INDEX download with a torrent client (transmission-gtk by default) -v, --version print the version #+END_SRC Example: below we search for "matrix…", we display only 1 result and we get the magnet link of the first result. : $ torrents -n 1 matrix french 1999 cool -m 0 #+html:

*** Readline interface Start it with =torrents -i=. See the =help= and the help of each command. The available commands are (use the auto-completion): - =search=: search for torrents, print the results sorted by number of seeders. - =magnet =, where /i/ is a result index, - =open= or =firefox =: open the given torrent page in a web browser - =download =: open a magnet link with a torrent client (transmission-gtk by default) - =filter =: show results that have this text in their title. This reduces the tab-completion of ids for all commands. - =highlight= (and =unhighlight=): highlight the given words in yellow, for this session. - =url = - =nb-results= =n= to set the number of results to print to /n/ - =details=: toggle the display of details - =quit= (or =C-c=) And the available settings to change with =set= are (use =set='s autocompletion): - =*details*=: if true, print more details below each row (like the url). Defaults to false. - =*nb-results*=: how many results to print. Defaults to 20. - =*browser*=: the browser name to use to open urls. Defaults to Firefox. - =*torrent-client*=: the desktop torrent client name. Defaults to Transmission. - =*cache-p*=: if true (the default), use the cached results. You can also set them in a configuration file. Note that we are in a regular [[https://tiswww.case.edu/php/chet/readline/readline.html#SEC9][readline]] interface, so the usual keybindings and options are available. #+html:

*** Configuration files (in development) =cl-torrents= will read two configuration files. An ini-style one, and a lispy one. **** Ini-style config First, it will search for a =~.torrents.conf= file from =~/.config/.torrents.conf= and =~/.torrents.conf=. The last one takes precedence. For example, those are the default values: #+BEGIN_SRC conf [default] scrapers = 1337 DOWNLOADSME browser = firefox nb-results = 20 cache-p = true # use the cache system. #+END_SRC Moreover, you can set parameters related to the repl: #+BEGIN_SRC text [default] # again, default values: confirm-exit = true # ask with a yes/no prompt before quiting the app. verbose = false history = true # use the repl history. write-history = true # read the history, but don't write to it. #+END_SRC You can set them for all replic-based apps in =~/.replic.conf=, or override them in =.torrents.conf=. /Note: we only use a "default" profile for now./ **** Lisp init file If the file =~/.torrents.lisp= exists, it will be loaded after the =.conf= one and before the command line arguments. The option =--no-userinit= prevents it from loading. You can write whatever you want there, it is just a lisp file that will be =load='ed at startup. /Note/: what we will eventually do then is to expose cl-torrents' mechanism via hooks. One thing you can do is define additional commands to be found at the repl. We do so by following [[https://github.com/vindarel/replic/][replic]]'s mechanism: - define functions inside the =torrents.user= package - define the completion choices for some functions - =export= the functions you want to see turned into commands. You can copy the example below in =~/.torrents.lisp= and re-run =torrents -i= to try that out. #+BEGIN_SRC lisp (in-package :torrents.user) (defparameter *names* '() "List of names (string) given to `hello`. Will be autocompleted by `goodbye`.") (defun hello (name) "Takes only one argument. Adds the given name to the global `*names*` global variable, used to complete arguments of `goodbye`. " (format t "hello ~a~&" name) (push name *names*)) (defun goodbye (name) "Says goodbye to name, where `name` should be completed from what was given to `hello`." (format t "goodbye ~a~&" name)) ;; Custom completion for goodbye: (replic.completion:add-completion "goodbye" (lambda () *names*)) ;; and export the two functions to find them as commands. (export '(hello goodbye)) #+END_SRC ** Ideas, todos - [X] cache (on files) v0.3 - [X] CI - local copy of TPB - more command line options (specially verbosity) - [X] =-i= print url - [X] build with ECL. Used [[https://hub.docker.com/r/daewok/lisp-devel/][the lisp-devel]] docker image. Result: a 52Mo executable with a runtime error. - [X] open an url - download the torrent file - [X] ini config file, to parse with [[https://common-lisp.net/project/py-configparser/][py-configparser]] - [X] add torrent to a local torrent client - add the torrent to a remote transmission client, with [[https://github.com/libre-man/cl-transmission/][cl-transmission]]. - self-contained web app ([[https://lispcookbook.github.io/cl-cookbook/scripting.html][doc]]),... - [X] interactive prompt, with completion of commands. ** Release notes [[https://gitlab.com/vindarel/cl-torrents/tags][https://gitlab.com/vindarel/cl-torrents/tags]] *** dev (upcoming v0.11) - added: a simple Tk GUI (search, open in browser, download with torrent desktop client). - added: a =filter= command, to only display results whose title contains a given string. It reduces the TAB-completion of ids (but doesn't constrain it). - added: all functions can now TAB-complete the list of ids. - added: scrape and display torrents' size. - fixed =-d= cli arg. - added: load =~/.torrents.lisp=, create new commands from the =torrents.user= package. - added the ability to read an ini-like config file, =~/.torrents.conf=. All exported variables from the =:torrent= package can be overriden. They are written without earmuffs: #+BEGIN_SRC lisp :*nb-results* :*browser* :*torrent-client* :*cache-p* #+END_SRC gives #+BEGIN_SRC text # ~/.torrents.conf # those are the defaults. [default] nb-results = 20 browser = firefox torrent-client = firefox cache-p = true #+END_SRC See more on replic. (all parameters need more tests) - added missing =-o= option to download with a torrent client (transmission-gtk). - =cl-torrents.conf= configuration file: - choose the list of scrapers. - =download= command (open magnet link with transmission by default). - use the [[https://github.com/vindarel/replic/][replic]] library to build the repl, the commands and their completions. - -> new builtin =highlight= and =unhighlight= commands, - -> better error handling (don't exit the repl on an error). - fix cli usage without a keyword search, print help. *** v0.10 - added [[https://www.torrentdownloads.me][torrentdownloads.me]] scraper. - new parameter, =*cache-p*=: if nil, don't use the cache. *** v0.9 - added [[http://1337x.to][1337x.to]] scraper. - removed piratebay.to, katcr.co, torrent.cd, they're down :/ *** v0.8 - added a readline-based repl with some commands: =search=, =magnet=, =open=, with their completion. See =help=. Built with [[https://github.com/mrkkrp/cl-readline][cl-readline]], but might use [[https://github.com/vindarel/replic][replic]] anytime soon. *** v0.7 - fix cache not created by binary - create cache in =~/.cl-torrents/cache/= * Dev We use our [[https://github.com/vindarel/replic/][replic]] library to automatically build the readline repl. Clone cl-torrents in =~/quicklisp/local-projects=, now you can =(ql:quickload :torrents)=. Unit tests: : make test End-to-end tests (checking that the websites respond and our scrapers still work): : make test-end2end * Resources Don't miss these good resources: - http://lisp-lang.org/ - [[Https://github.com/CodyReichert/awesome-cl][Awesome-cl]] - [[https://lispcookbook.github.io/cl-cookbook/][the Common Lisp Cookbook]] - http://quickdocs.org/ - (my) [[https://lisp-journey.gitlab.io/][lisp-journey]]: introductory posts, lists of resources, selection of screencasts. ** Tutorial Writing a little web scraper like this one is not difficult. However, I had to spend some time to find out the right libraries and resources. It is also not trivial at first to start a Lisp project. So the first thing we did is write a tutorial. It is a mix of hopefully useful stuff: - web scraping, - async web scraping, - trying out things at the REPL, - where to find documentation, - creating and loading a project, - basic data structures and gotchas, - some useful libraries, - unit tests, with mocks, running tests from the shell, continuous integration, - parsing command line arguments, creating executables, continuous delivery, - basics of error handling, - ... It will eventually tackle more topics and features (more settings, working with a local copy of TPB…) but in the meanwhile, read the [[https://vindarel.github.io/cl-torrents/tutorial.html][tutorial]] ! It was built with https://github.com/fniessen/org-html-themes. * Licence MIT.

Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 torrents

Author

vindarel

License

MIT

Description

Search for torrents on popular trackers. Lisp library, CLI interface, terminal application, Tk GUI.

Long Description

[[https://gitlab.com/vindarel/cl-torrents][file:https://gitlab.com/vindarel/cl-torrents/badges/master/pipeline.svg]]

This is a little app to search for torrents on popular trackers.

It comes as:

- a *lisp library*,
- a *command line* interface,
- a terminal *readline interface*,
- a simple *GUI*.
- The *[[https://github.com/vindarel/cl-torrents-web][Web UI]]* works too.

We currently scrape [[http://1337x.to][1337x.to]] (since v0.9) and [[https://www.torrentdownloads.me][torrentdownloads.me]]
(v0.10) and present the results sorted by seeders.

Download for GNU/Linux 64 bits: see [[https://gitlab.com/vindarel/cl-torrents/tags][Releases]] (/78Mo, self-contained executable/).

#+html: <p align="center"><img src="assets/img-colored-results.png" /></p>

#+html: <p align=’center’><img src=’assets/img-readline.png’ /></p>

#+html: <p align="center"><img src="assets/torrents-tk.png" /></p>

** Installation

The library is on Quicklisp (february 2019) and [[http://ultralisp.org/][Ultralisp]].

: (ql:quickload "torrents")
: (torrents:search-torrents "tears of steel")

See the download link of the binary above. It is a self-contained executable for
GNU/Linux 64-bits. You do /not/ need to install a Lisp
implementation. It’s a 78Mo binary.

To build the readline app, do:

: make build

To build the Tk GUI:

: make build-gui

then run

: ./torrents –help
: ./torrents-tk &

_Troubleshooting_

The Tk GUI needs [[https://notabug.org/cage/nodgui/][nodgui]] newer than march, 2019.

If a search doesn’t work with a =CRYPTO_num_locks= error message:

#+BEGIN_EXPORT ascii
> ./torrents matrix
searching ’(matrix)’ on 1337... no results.
error: The alien function "CRYPTO_num_locks" is undefined.
searching ’(matrix)’ on DOWNLOADSME... no results.
error: The alien function "CRYPTO_num_locks" is undefined.
#+END_EXPORT

You might need to upgrade your OpenSSL version. See [[https://gitlab.com/vindarel/cl-torrents/issues/5][this issue]].

** Usage

We can use this little app both in a Lisp REPL (Slime) and in a
terminal, as a command line tool or from its embedded interactive prompt.

Results are cached in =~/.cl-torrents/cache/=. Delete this
directory if you want new results.

*** Lisp REPL

Search for torrents:

#+BEGIN_SRC text
(use-package :torrents)
(search-torrents "matrix")
[...]
6: The Matrix Revolutions (2003) BRRip [Dual Audio] [Hindi+Eng]
5: Matrix (1999)Blu-Ray 720p Dublado PT-BR - mo93438
4: The Matrix Trilogy (1999-2003) BDRip 1080p Dual Audio [ Hind
3: The Matrix Trilogy (1999-2003) BluRay BDRip 1080p AC3
2: The Matrix Trilogy (1999-2003) + Extras 1080p BluRay x264 Du
1: The Matrix Reloaded (2003) FullHD, Dual Audio: English + Spa
0: Matrix FRENCH DVDRIP 1999 COOL
#+END_SRC

To help finding the most relevant results (the website sometimes is
a bit relaxed with our search terms), each keyword is printed in a
different color:

#+html: <p align="center"><img src="assets/img-colored-results.png" /></p>

(you need to enable ansi colors in Slime, see [[https://github.com/enriquefernandez/slime-repl-ansi-color][slime-repl-ansi-color]]. Disable this feature with =(setf cl-ansi-text:*enabled* nil)=)

We get a magnet link with:

#+BEGIN_SRC lisp
(magnet 0)
;; "magnet:?xt=urn:btih:40eca43690cf1b99b0a4d485ebf4855d20b0bac5"
#+END_SRC

We can open it with a torrent client (transmission-gtk by default):

#+BEGIN_SRC lisp
(download 0)
#+END_SRC

And voilà :)

We may add more features, eventually. Our goal is rather to write a
tutorial to show you diverse Common Lisp topics.

**** Parameters

=*cache-p*=: if nil, don’t use the cache system.

*** Command line

Use the options given below,

#+BEGIN_SRC text
$ torrents -h
CL-torrents. Usage:

Available options:
-d, –details print more details (like the torrent’s url)
-h, –help print this help text
-i, –interactive enter an interactive repl
-m, –magnet ARG get the magnet link of the given search result.
-n, –nb ARG set the maximum number of results to print.
-o, –open INDEX download with a torrent client (transmission-gtk by default)
-v, –version print the version
#+END_SRC

Example: below we search for "matrix…", we display only 1 result and
we get the magnet link of the first result.

: $ torrents -n 1 matrix french 1999 cool -m 0

#+html: <p align=’center’><img src=’assets/img-cli.png’ /></p>

*** Readline interface

Start it with =torrents -i=.

See the =help= and the help of each command.

The available commands are (use the auto-completion):

- =search=: search for torrents, print the results sorted by number of seeders.
- =magnet <i>=, where /i/ is a result index,
- =open= or =firefox <i>=: open the given torrent page in a web browser
- =download <i>=: open a magnet link with a torrent client
(transmission-gtk by default)
- =filter <text>=: show results that have this text in their
title. This reduces the tab-completion of ids for all commands.
- =highlight= (and =unhighlight=): highlight the given words in
yellow, for this session.
- =url <i>=
- =nb-results= =n= to set the number of results to print to /n/
- =details=: toggle the display of details
- =quit= (or =C-c=)

And the available settings to change with =set= are (use =set=’s autocompletion):

- =*details*=: if true, print more details below each row (like the
url). Defaults to false.
- =*nb-results*=: how many results to print. Defaults to 20.
- =*browser*=: the browser name to use to open urls. Defaults to Firefox.
- =*torrent-client*=: the desktop torrent client name. Defaults to Transmission.
- =*cache-p*=: if true (the default), use the cached results.

You can also set them in a configuration file.

Note that we are in a regular [[https://tiswww.case.edu/php/chet/readline/readline.html#SEC9][readline]] interface, so the usual keybindings and options are available.

#+html: <p align=’center’><img src=’assets/img-readline.png’ /></p>

*** Configuration files (in development)

=cl-torrents= will read two configuration files. An ini-style one,
and a lispy one.

**** Ini-style config

First, it will search for a =~.torrents.conf= file
from =~/.config/.torrents.conf= and =~/.torrents.conf=. The last
one takes precedence.

For example, those are the default values:

#+BEGIN_SRC conf
[default]
scrapers = 1337 DOWNLOADSME
browser = firefox
nb-results = 20
cache-p = true # use the cache system.
#+END_SRC

Moreover, you can set parameters related to the repl:

#+BEGIN_SRC text
[default]
# again, default values:
confirm-exit = true # ask with a yes/no prompt before quiting the app.
verbose = false
history = true # use the repl history.
write-history = true # read the history, but don’t write to it.
#+END_SRC

You can set them for all replic-based apps in =~/.replic.conf=, or
override them in =.torrents.conf=.

/Note: we only use a "default" profile for now./

**** Lisp init file

If the file =~/.torrents.lisp= exists, it will be loaded after the
=.conf= one and before the command line arguments.

The option =–no-userinit= prevents it from loading.

You can write whatever you want there, it is just a lisp file that
will be =load=’ed at startup.

/Note/: what we will eventually do then is to expose cl-torrents’
mechanism via hooks.

One thing you can do is define additional commands to be found at the
repl. We do so by following [[https://github.com/vindarel/replic/][replic]]’s mechanism:

- define functions inside the =torrents.user= package
- define the completion choices for some functions
- =export= the functions you want to see turned into commands.

You can copy the example below in =~/.torrents.lisp= and re-run
=torrents -i= to try that out.

#+BEGIN_SRC lisp
(in-package :torrents.user)

(defparameter *names* ’()
"List of names (string) given to ‘hello‘. Will be autocompleted by ‘goodbye‘.")

(defun hello (name)
"Takes only one argument. Adds the given name to the global
‘*names*‘ global variable, used to complete arguments of ‘goodbye‘. "
(format t "hello ~a~&" name)
(push name *names*))

(defun goodbye (name)
"Says goodbye to name, where ‘name‘ should be completed from what was given to ‘hello‘."
(format t "goodbye ~a~&" name))

;; Custom completion for goodbye:
(replic.completion:add-completion "goodbye" (lambda () *names*))

;; and export the two functions to find them as commands.
(export ’(hello
goodbye))
#+END_SRC

** Ideas, todos

- [X] cache (on files) v0.3
- [X] CI
- local copy of TPB
- more command line options (specially verbosity)
- [X] =-i= print url
- [X] build with ECL. Used [[https://hub.docker.com/r/daewok/lisp-devel/][the lisp-devel]] docker
image. Result: a 52Mo executable with a runtime error.
- [X] open an url
- download the torrent file
- [X] ini config file, to parse with [[https://common-lisp.net/project/py-configparser/][py-configparser]]
- [X] add torrent to a local torrent client
- add the torrent to a remote transmission client, with [[https://github.com/libre-man/cl-transmission/][cl-transmission]].
- self-contained web app ([[https://lispcookbook.github.io/cl-cookbook/scripting.html][doc]]),...
- [X] interactive prompt, with completion of commands.

** Release notes

[[https://gitlab.com/vindarel/cl-torrents/tags][https://gitlab.com/vindarel/cl-torrents/tags]]

*** dev (upcoming v0.11)

- added: a simple Tk GUI (search, open in browser, download with
torrent desktop client).
- added: a =filter= command, to only display results whose title
contains a given string. It reduces the TAB-completion of ids (but
doesn’t constrain it).
- added: all functions can now TAB-complete the list of ids.
- added: scrape and display torrents’ size.
- fixed =-d= cli arg.
- added: load =~/.torrents.lisp=, create new commands from the
=torrents.user= package.
- added the ability to read an ini-like config file,
=~/.torrents.conf=. All exported variables from the =:torrent= package
can be overriden. They are written without earmuffs:
#+BEGIN_SRC lisp
:*nb-results*
:*browser*
:*torrent-client*
:*cache-p*
#+END_SRC
gives
#+BEGIN_SRC text
# ~/.torrents.conf
# those are the defaults.
[default]
nb-results = 20
browser = firefox
torrent-client = firefox
cache-p = true
#+END_SRC
See more on replic.
(all parameters need more tests)
- added missing =-o= option to download with a torrent client (transmission-gtk).
- =cl-torrents.conf= configuration file:
- choose the list of scrapers.
- =download= command (open magnet link with transmission by default).
- use the [[https://github.com/vindarel/replic/][replic]] library to build the repl, the commands and their completions.
- -> new builtin =highlight= and =unhighlight= commands,
- -> better error handling (don’t exit the repl on an error).
- fix cli usage without a keyword search, print help.

*** v0.10

- added [[https://www.torrentdownloads.me][torrentdownloads.me]] scraper.
- new parameter, =*cache-p*=: if nil, don’t use the cache.

*** v0.9

- added [[http://1337x.to][1337x.to]] scraper.
- removed piratebay.to, katcr.co, torrent.cd, they’re down :/

*** v0.8

- added a readline-based repl with some commands: =search=, =magnet=,
=open=, with their completion. See =help=. Built with [[https://github.com/mrkkrp/cl-readline][cl-readline]],
but might use [[https://github.com/vindarel/replic][replic]] anytime soon.

*** v0.7

- fix cache not created by binary
- create cache in =~/.cl-torrents/cache/=

* Dev

We use our [[https://github.com/vindarel/replic/][replic]] library to automatically build the readline repl.

Clone cl-torrents in =~/quicklisp/local-projects=,

now you can =(ql:quickload :torrents)=.

Unit tests:

: make test

End-to-end tests (checking that the websites respond and our scrapers still work):

: make test-end2end

* Resources

Don’t miss these good resources:

- http://lisp-lang.org/
- [[Https://github.com/CodyReichert/awesome-cl][Awesome-cl]]
- [[https://lispcookbook.github.io/cl-cookbook/][the Common Lisp Cookbook]]
- http://quickdocs.org/
- (my) [[https://lisp-journey.gitlab.io/][lisp-journey]]: introductory posts, lists of resources, selection
of screencasts.

** Tutorial

Writing a little web scraper like this one is not
difficult. However, I had to spend some time to find out the right
libraries and resources. It is also not trivial at first to start
a Lisp project. So the first thing we did is write a tutorial. It
is a mix of hopefully useful stuff:

- web scraping,
- async web scraping,
- trying out things at the REPL,
- where to find documentation,
- creating and loading a project,
- basic data structures and gotchas,
- some useful libraries,
- unit tests, with mocks, running tests from the shell, continuous integration,
- parsing command line arguments, creating executables, continuous delivery,
- basics of error handling,
- ...

It will eventually tackle more topics and features (more settings,
working with a local copy of TPB…) but in the meanwhile, read

the [[https://vindarel.github.io/cl-torrents/tutorial.html][tutorial]] !

It was built with https://github.com/fniessen/org-html-themes.

* Licence

MIT.

Version

0.12

Dependencies
  • replic
  • dexador
  • plump
  • str
  • lparallel
  • cl-ansi-text
  • unix-opts
  • clache
  • mockingbird
  • lquery
  • py-configparser
  • cl-readline
  • parse-float
  • log4cl
Source

torrents.asd (file)

Component

src (module)


Next: , Previous: , Up: Top   [Contents][Index]

3 Modules

Modules are listed depth-first from the system components tree.


Previous: , Up: Modules   [Contents][Index]

3.1 torrents/src

Parent

torrents (system)

Location

src/

Components

Next: , Previous: , Up: Top   [Contents][Index]

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

4.1 Lisp


4.1.1 torrents.asd

Location

torrents.asd

Systems

torrents (system)

Packages

torrents-asd


4.1.2 torrents/src/utils.lisp

Parent

src (module)

Location

src/utils.lisp

Packages

torrents.utils

Exported Definitions
Internal Definitions

4.1.3 torrents/src/models.lisp

Parent

src (module)

Location

src/models.lisp

Packages

torrents.models

Exported Definitions
Internal Definitions

torrent (class)


4.1.4 torrents/src/tpb.lisp

Parent

src (module)

Location

src/tpb.lisp

Packages

tpb

Exported Definitions

torrents (function)

Internal Definitions

4.1.5 torrents/src/torrentcd.lisp

Parent

src (module)

Location

src/torrentcd.lisp

Packages

torrentcd

Exported Definitions

torrents (function)

Internal Definitions

4.1.6 torrents/src/kat.lisp

Parent

src (module)

Location

src/kat.lisp

Packages

kat

Exported Definitions

torrents (function)

Internal Definitions

4.1.7 torrents/src/1337.lisp

Parent

src (module)

Location

src/1337.lisp

Packages

torrents.1337

Exported Definitions

torrents (function)

Internal Definitions

4.1.8 torrents/src/downloadsme.lisp

Parent

src (module)

Location

src/downloadsme.lisp

Packages

torrents.downloadsme

Exported Definitions

torrents (function)

Internal Definitions

4.1.9 torrents/src/torrents.lisp

Parent

src (module)

Location

src/torrents.lisp

Packages
Exported Definitions
Internal Definitions

4.1.10 torrents/src/commands.lisp

Parent

src (module)

Location

src/commands.lisp

Packages

torrents.commands

Exported Definitions

4.1.11 torrents/src/config.lisp

Parent

src (module)

Location

src/config.lisp

Internal Definitions

config-scrapers (function)


Next: , Previous: , Up: Top   [Contents][Index]

5 Packages

Packages are listed by definition order.


5.1 torrents-asd

Source

torrents.asd

Use List
  • asdf/interface
  • common-lisp

5.2 torrents.utils

Source

utils.lisp (file)

Use List
  • parse-float
  • common-lisp
Exported Definitions
Internal Definitions

5.3 torrents.models

Source

models.lisp (file)

Use List

common-lisp

Used By List

torrents

Exported Definitions
Internal Definitions

torrent (class)


5.4 tpb

Source

tpb.lisp (file)

Use List

common-lisp

Exported Definitions

torrents (function)

Internal Definitions

Next: , Previous: , Up: Packages   [Contents][Index]

5.5 torrentcd

Source

torrentcd.lisp (file)

Use List

common-lisp

Exported Definitions

torrents (function)

Internal Definitions

5.6 kat

Source

kat.lisp (file)

Use List

common-lisp

Exported Definitions

torrents (function)

Internal Definitions

5.7 torrents.1337

Source

1337.lisp (file)

Use List

common-lisp

Exported Definitions

torrents (function)

Internal Definitions

5.8 torrents.downloadsme

Source

downloadsme.lisp (file)

Use List

common-lisp

Exported Definitions

torrents (function)

Internal Definitions

5.9 torrents.user

Source

torrents.lisp (file)

Use List

common-lisp


5.10 torrents

Source

torrents.lisp (file)

Use List
Exported Definitions
Internal Definitions

5.11 torrents.commands

Source

commands.lisp (file)

Use List

common-lisp

Exported Definitions

Next: , Previous: , Up: Top   [Contents][Index]

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


6.1 Exported definitions


6.1.1 Special variables

Special Variable: *browser*

Default browser, in case $BROWSER is not set.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *cache-p*

If true, use the cache.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *details*

If true, print additional details (like the url).

Package

torrents

Source

torrents.lisp (file)

Special Variable: *last-results*

Remembering the last search results.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *nb-results*

Maximum number of search results to display.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *torrent-client*

Default torrent client.

Package

torrents

Source

torrents.lisp (file)


6.1.2 Macros

Macro: when-option (OPTIONS OPT) &body BODY
Package

torrents.utils

Source

utils.lisp (file)


6.1.3 Functions

Function: async-torrents WORDS &key LOG-STREAM CACHE

Call the scrapers in parallel and sort by seeders.

Package

torrents

Source

torrents.lisp (file)

Function: browse INDEX

Open firefox to this search result’s url. Use from the repl.

Package

torrents

Source

torrents.lisp (file)

Function: download INDEX &optional SOFT

Download with a torrent client.

Package

torrents

Source

torrents.lisp (file)

Function: exit &optional STATUS

Exit from Lisp. Return ‘status’ (0 by default).

Package

torrents.utils

Source

utils.lisp (file)

Function: filter TEXT

Show results that have this text in their title.
This doesn’t change the list of last results.

The nice thing is that it changes the list of ids to complete, so using any command with tab completion afterwards is more practical, specially with 1 result remaining.

Package

torrents

Source

torrents.lisp (file)

Return the firts href of the page that starts with ’magnet’.

parsed: plump node.

Package

torrents.utils

Source

utils.lisp (file)

Function: format-size TORRENT &optional STREAM

Print the size humanly, with its unit.

Package

torrents.models

Source

models.lisp (file)

Function: magnet INDEX

Search the magnet from last search’s ‘index”s result.

Package

torrents

Source

torrents.lisp (file)

Function: magnet INDEX
Package

torrents.commands

Source

commands.lisp (file)

Extract the magnet link from a ‘torrent’ result.

Return the first href of the page that starts with ’magnet’.

Package

torrents

Source

torrents.lisp (file)

Function: main ()

Parse command line arguments, read the config files and call the program.

Package

torrents

Source

torrents.lisp (file)

Function: make-torrent &key TITLE HREF SEEDERS LEECHERS SIZE SOURCE SIZE-UNIT
Package

torrents.models

Source

models.lisp (file)

Function: missing-arg CONDITION
Package

torrents.utils

Source

utils.lisp (file)

Function: parse-size STRING

Try to parse this string to a float.
Return two values: the size (float) and the unit (string of MB, GB). - ‘string’ looks like 703.9 MB.

Package

torrents.utils

Source

utils.lisp (file)

Search for torrents on the different sources and print the results, sorted by number of seeders.

Package

torrents.commands

Source

commands.lisp (file)

Function: search-torrents WORDS &key STREAM NB-RESULTS LOG-STREAM CACHE

Search for torrents on the different sources and print the results, sorted by number of seeders.

‘words’: a string (space-separated keywords) or a list of strings.
‘nb-results’: max number of results to print.
‘log-stream’: used in tests to capture (and ignore) some output.
‘cache’: if true (the default), read from the cache.

Package

torrents

Source

torrents.lisp (file)

Function: sublist L START END

Select a sublist when end can be superior to the size of the list. Wrapper around subseq that fails with ’bouncing indices bad error’.

Package

torrents.utils

Source

utils.lisp (file)

Function: torrents WORDS &key STREAM

Search torrents.

Package

tpb

Source

tpb.lisp (file)

Function: torrents WORDS &key STREAM

Return a list of alists with title, href, and seeders.

Package

torrentcd

Source

torrentcd.lisp (file)

Function: torrents WORDS &key STREAM

Return a list of...

Package

kat

Source

kat.lisp (file)

Function: torrents WORDS &key STREAM

Return a list of...

Package

torrents.1337

Source

1337.lisp (file)

Function: torrents WORDS &key STREAM

Return a list of...

Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Function: unknown-option CONDITION
Package

torrents.utils

Source

utils.lisp (file)

Function: url INDEX

Return the url from last search’s ‘index”s result.

Package

torrents

Source

torrents.lisp (file)

Function: url INDEX
Package

torrents.commands

Source

commands.lisp (file)


6.1.4 Generic functions

Generic Function: href OBJECT
Generic Function: (setf href) NEW-VALUE OBJECT
Package

torrents.models

Methods
Method: href (TORRENT torrent)

automatically generated reader method

Source

models.lisp (file)

Method: (setf href) NEW-VALUE (TORRENT torrent)

automatically generated writer method

Source

models.lisp (file)

Generic Function: leechers OBJECT
Generic Function: (setf leechers) NEW-VALUE OBJECT
Package

torrents.models

Methods
Method: leechers (TORRENT torrent)

automatically generated reader method

Source

models.lisp (file)

Method: (setf leechers) NEW-VALUE (TORRENT torrent)

automatically generated writer method

Source

models.lisp (file)

Generic Function: seeders OBJECT
Generic Function: (setf seeders) NEW-VALUE OBJECT
Package

torrents.models

Methods
Method: seeders (TORRENT torrent)

automatically generated reader method

Source

models.lisp (file)

Method: (setf seeders) NEW-VALUE (TORRENT torrent)

automatically generated writer method

Source

models.lisp (file)

Generic Function: size OBJECT
Generic Function: (setf size) NEW-VALUE OBJECT
Package

torrents.models

Methods
Method: size (IT torrent)

Print this torrent’s size.
If the slot is unbound (old cache results), log and return nil.

Source

models.lisp (file)

Method: (setf size) NEW-VALUE (TORRENT torrent)

automatically generated writer method

Source

models.lisp (file)

Generic Function: size-unit OBJECT
Generic Function: (setf size-unit) NEW-VALUE OBJECT
Package

torrents.models

Methods
Method: size-unit (IT torrent)

Deal with older cache results for which the size-unit slot is unbound.

Source

models.lisp (file)

Method: (setf size-unit) NEW-VALUE (TORRENT torrent)

automatically generated writer method

Source

models.lisp (file)

Generic Function: source OBJECT
Generic Function: (setf source) NEW-VALUE OBJECT
Package

torrents.models

Methods
Method: source (TORRENT torrent)

automatically generated reader method

Source

models.lisp (file)

Method: (setf source) NEW-VALUE (TORRENT torrent)

automatically generated writer method

Source

models.lisp (file)

Generic Function: title OBJECT
Generic Function: (setf title) NEW-VALUE OBJECT
Package

torrents.models

Methods
Method: title (TORRENT torrent)

automatically generated reader method

Source

models.lisp (file)

Method: (setf title) NEW-VALUE (TORRENT torrent)

automatically generated writer method

Source

models.lisp (file)


6.2 Internal definitions


6.2.1 Special variables

Special Variable: *base-url*
Package

torrentcd

Source

torrentcd.lisp (file)

Special Variable: *base-url*
Package

kat

Source

kat.lisp (file)

Special Variable: *base-url*
Package

torrents.1337

Source

1337.lisp (file)

Special Variable: *base-url*
Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Special Variable: *cache-directory*

The directory where cl-torrents stores its cache.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *colors*

Functions to colorize text.

Package

torrents.utils

Source

utils.lisp (file)

Special Variable: *commands*

List of alist tuples, a verb and its doc, for completion on the REPL.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *config-directory*

The directory to put configuration files.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *ids-completion-list*

The list of ids (index of search results) to use at the completion, when we want to filter it. They must be strings, not numbers.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *keywords*

List of keywords given as input by the user.

Package

torrents.utils

Source

utils.lisp (file)

Special Variable: *keywords*

List of keywords given as input by the user.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *keywords-colors*

alist associating a keyword with a color. See ‘keyword-color-pairs’.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *prefilter-selector*

Call before we extract the search results.

Package

tpb

Source

tpb.lisp (file)

Special Variable: *results-selector*

CSS selector to get a list of items inside the search results.

Package

kat

Source

kat.lisp (file)

Special Variable: *results-selector*

CSS selector to get a list of items inside the search results.

Package

torrents.1337

Source

1337.lisp (file)

Special Variable: *results-selector*

CSS selector to get a list of items inside the search results.

Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Special Variable: *scrapers-alist*

Alist to associate a scraper name (str, for a user config) to its symbol function to call.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *search-results*

List of the last search results (plump nodes) (to eas e2e tests).

Package

torrents.1337

Source

1337.lisp (file)

Special Variable: *search-results*

List of the last search results (plump nodes) (to eas e2e tests).

Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Special Variable: *search-url*

Base search url. KEYWORDS to be replaced by the search terms (a string with +-separated words).

Package

tpb

Source

tpb.lisp (file)

Special Variable: *search-url*

Base url for a search. A POST request is necessary to get sorted results by seeds

Package

torrentcd

Source

torrentcd.lisp (file)

Special Variable: *search-url*

Base url for a search. Sorted by seeders

Package

kat

Source

kat.lisp (file)

Special Variable: *search-url*

Base url for a search. Sorted by seeders

Package

torrents.1337

Source

1337.lisp (file)

Special Variable: *search-url*

Base url for a search. Sorted by seeders

Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Special Variable: *selectors*
Package

tpb

Source

tpb.lisp (file)

Special Variable: *source*

Source short name for human presentation.

Package

torrents.1337

Source

1337.lisp (file)

Special Variable: *source*

Source short name for human presentation.

Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Special Variable: *store*

Cache. The directory must exist.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *torrent-clients-list*

List of available torrent clients, along with the optional command line options.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *torrents-list*

List of scraper functions to call. Modified after reading the user’s conf files.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *verbs*

List of verbs for completion. Strings.

Package

torrents

Source

torrents.lisp (file)

Special Variable: *version*
Package

torrents

Source

torrents.lisp (file)


6.2.2 Functions

Function: arg-parser-failed CONDITION
Package

torrents.utils

Source

utils.lisp (file)

Function: assoc-value ALIST KEY &key TEST
Package

torrents

Source

torrents.lisp (file)

Function: browse-elt INDEX
Package

torrents

Source

torrents.lisp (file)

Function: colorize-all-keywords TITLE KW-COLOR

Colorize all the user’s search keywords in the given title. ‘kw-color’: list of pairs with a keyword and a color (function).

Package

torrents.utils

Source

utils.lisp (file)

Function: colorize-keyword-in-string TITLE KEYWORD COLOR-F

Colorize the given keyword in the title.
Keep the letters’ possible mixed up or down case. ‘color-f’: color function (cl-ansi-text).

Package

torrents.utils

Source

utils.lisp (file)

Function: common-prefix ITEMS

Find the common prefix between strings.

Uses the built-in ‘mismatch’, that returns the position at which the strings fail to match.

Example: ‘(str:common-prefix ’("foobar" "foozz"))‘ => "foo"

- items: list of strings
- Return: a string.

Package

torrents

Source

torrents.lisp (file)

Function: config-scrapers ()

Filter the global ‘*scrapers-alist*‘ with the ‘scrapers‘ parameter in config. Return the list of torrent functions to search with.

Package

torrents

Source

config.lisp (file)

Function: custom-complete TEXT START END

Complete a symbol when the cursor is at the beginning of the prompt.

Package

torrents

Source

torrents.lisp (file)

Function: display-results &key RESULTS STREAM NB-RESULTS DETAILS

Results: list of plump nodes. We want to print a numbered list with the needed information (torrent title, the number of seeders,... Print at most *nb-results*.

Package

torrents

Source

torrents.lisp (file)

Function: ensure-cache ()
Package

torrents

Source

torrents.lisp (file)

Function: ensure-cache-and-store ()
Package

torrents

Source

torrents.lisp (file)

Function: get-cached-results TERMS &key STORE
Package

torrents

Source

torrents.lisp (file)

Function: join-for-query ENTRY

From a string (space-separated words), return a +-separated string.

Package

torrents.utils

Source

utils.lisp (file)

Function: keyword-color-pairs &optional KEYWORDS

Associate each keyword with a different color and return a list of pairs.

Package

torrents.utils

Source

utils.lisp (file)

Function: next-color ()

At each call, return the next color of the list -and start over. Uses *colors*.

Package

torrents.utils

Source

utils.lisp (file)

Function: parse HTML
Package

torrentcd

Source

torrentcd.lisp (file)

Function: parse HTML
Package

kat

Source

kat.lisp (file)

Function: parse HTML
Package

torrents.1337

Source

1337.lisp (file)

Function: parse HTML
Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Function: process-options ()

Post-process options that need it.
Here, get and set the scrapers list (they are read as a simple string). Reading and setting options was done with replic.config:apply-config.

Package

torrents

Source

torrents.lisp (file)

Function: query PARSED
Package

torrentcd

Source

torrentcd.lisp (file)

Function: query PARSED
Package

kat

Source

kat.lisp (file)

Function: query PARSED
Package

torrents.1337

Source

1337.lisp (file)

Function: query PARSED
Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Function: request URL

Wrapper around dex:get. Fetch an url.

Package

tpb

Source

tpb.lisp (file)

Function: request SEARCH &optional URL

Request to torrent.cd. POST request in order to get results sorted by seeders.

Package

torrentcd

Source

torrentcd.lisp (file)

Function: request URL
Package

kat

Source

kat.lisp (file)

Function: request URL
Package

torrents.1337

Source

1337.lisp (file)

Function: request URL
Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Function: request-details URL

Get the html page of the given url. Mocked in unit tests.

Package

torrents

Source

torrents.lisp (file)

Function: reset-color ()
Package

torrents.utils

Source

utils.lisp (file)

Function: result-href NODE
Package

tpb

Source

tpb.lisp (file)

Function: result-href NODE
Package

torrentcd

Source

torrentcd.lisp (file)

Function: result-href NODE
Package

kat

Source

kat.lisp (file)

Function: result-href NODE
Package

torrents.1337

Source

1337.lisp (file)

Function: result-href NODE
Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Function: result-leechers NODE
Package

tpb

Source

tpb.lisp (file)

Function: result-leechers NODE
Package

torrentcd

Source

torrentcd.lisp (file)

Function: result-leechers NODE
Package

kat

Source

kat.lisp (file)

Function: result-leechers NODE
Package

torrents.1337

Source

1337.lisp (file)

Function: result-leechers NODE
Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Function: result-peers NODE
Package

tpb

Source

tpb.lisp (file)

Function: result-peers-or-leechers NODE INDEX

Return the number of peers (int) of a search result (node: a plump node). index 0 => peers, index 1 => leechers.

Package

tpb

Source

tpb.lisp (file)

Function: result-seeders NODE
Package

torrentcd

Source

torrentcd.lisp (file)

Function: result-seeders NODE
Package

kat

Source

kat.lisp (file)

Function: result-seeders NODE
Package

torrents.1337

Source

1337.lisp (file)

Function: result-seeders NODE
Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Function: result-size NODE
Package

torrents.1337

Source

1337.lisp (file)

Function: result-size NODE
Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Function: result-title NODE

Return the title of a search result.

Package

tpb

Source

tpb.lisp (file)

Function: result-title NODE
Package

torrentcd

Source

torrentcd.lisp (file)

Function: result-title NODE
Package

kat

Source

kat.lisp (file)

Function: result-title NODE
Package

torrents.1337

Source

1337.lisp (file)

Function: result-title NODE
Package

torrents.downloadsme

Source

downloadsme.lisp (file)

Function: save-results TERMS VAL &key STORE

Save results in cache.

Package

torrents

Source

torrents.lisp (file)

Function: select-completions TEXT LIST

Select all verbs from ‘list’ that start with ‘text’.

Package

torrents

Source

torrents.lisp (file)


6.2.3 Classes

Class: torrent ()
Package

torrents.models

Source

models.lisp (file)

Direct superclasses

standard-object (class)

Direct methods
  • print-object (method)
  • size-unit (method)
  • size (method)
  • source (method)
  • source (method)
  • size-unit (method)
  • size (method)
  • leechers (method)
  • leechers (method)
  • seeders (method)
  • seeders (method)
  • href (method)
  • href (method)
  • title (method)
  • title (method)
Direct slots
Slot: title
Initargs

:title

Initform

""

Readers

title (generic function)

Writers

(setf title) (generic function)

Slot: href
Initargs

:href

Readers

href (generic function)

Writers

(setf href) (generic function)

Slot: seeders
Initargs

:seeders

Readers

seeders (generic function)

Writers

(setf seeders) (generic function)

Slot: leechers
Initargs

:leechers

Readers

leechers (generic function)

Writers

(setf leechers) (generic function)

Slot: size
Initargs

:size

Readers

size (generic function)

Writers

(setf size) (generic function)

Slot: size-unit
Initargs

:size-unit

Readers

size-unit (generic function)

Writers

(setf size-unit) (generic function)

Slot: source
Initargs

:source

Readers

source (generic function)

Writers

(setf source) (generic function)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   F   L   M   T  
Index Entry  Section

F
File, Lisp, torrents.asd: The torrents<dot>asd file
File, Lisp, torrents/src/1337.lisp: The torrents/src/1337<dot>lisp file
File, Lisp, torrents/src/commands.lisp: The torrents/src/commands<dot>lisp file
File, Lisp, torrents/src/config.lisp: The torrents/src/config<dot>lisp file
File, Lisp, torrents/src/downloadsme.lisp: The torrents/src/downloadsme<dot>lisp file
File, Lisp, torrents/src/kat.lisp: The torrents/src/kat<dot>lisp file
File, Lisp, torrents/src/models.lisp: The torrents/src/models<dot>lisp file
File, Lisp, torrents/src/torrentcd.lisp: The torrents/src/torrentcd<dot>lisp file
File, Lisp, torrents/src/torrents.lisp: The torrents/src/torrents<dot>lisp file
File, Lisp, torrents/src/tpb.lisp: The torrents/src/tpb<dot>lisp file
File, Lisp, torrents/src/utils.lisp: The torrents/src/utils<dot>lisp file

L
Lisp File, torrents.asd: The torrents<dot>asd file
Lisp File, torrents/src/1337.lisp: The torrents/src/1337<dot>lisp file
Lisp File, torrents/src/commands.lisp: The torrents/src/commands<dot>lisp file
Lisp File, torrents/src/config.lisp: The torrents/src/config<dot>lisp file
Lisp File, torrents/src/downloadsme.lisp: The torrents/src/downloadsme<dot>lisp file
Lisp File, torrents/src/kat.lisp: The torrents/src/kat<dot>lisp file
Lisp File, torrents/src/models.lisp: The torrents/src/models<dot>lisp file
Lisp File, torrents/src/torrentcd.lisp: The torrents/src/torrentcd<dot>lisp file
Lisp File, torrents/src/torrents.lisp: The torrents/src/torrents<dot>lisp file
Lisp File, torrents/src/tpb.lisp: The torrents/src/tpb<dot>lisp file
Lisp File, torrents/src/utils.lisp: The torrents/src/utils<dot>lisp file

M
Module, torrents/src: The torrents/src module

T
torrents.asd: The torrents<dot>asd file
torrents/src: The torrents/src module
torrents/src/1337.lisp: The torrents/src/1337<dot>lisp file
torrents/src/commands.lisp: The torrents/src/commands<dot>lisp file
torrents/src/config.lisp: The torrents/src/config<dot>lisp file
torrents/src/downloadsme.lisp: The torrents/src/downloadsme<dot>lisp file
torrents/src/kat.lisp: The torrents/src/kat<dot>lisp file
torrents/src/models.lisp: The torrents/src/models<dot>lisp file
torrents/src/torrentcd.lisp: The torrents/src/torrentcd<dot>lisp file
torrents/src/torrents.lisp: The torrents/src/torrents<dot>lisp file
torrents/src/tpb.lisp: The torrents/src/tpb<dot>lisp file
torrents/src/utils.lisp: The torrents/src/utils<dot>lisp file

Jump to:   F   L   M   T  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   (  
A   B   C   D   E   F   G   H   J   K   L   M   N   P   Q   R   S   T   U   W  
Index Entry  Section

(
(setf href): Exported generic functions
(setf href): Exported generic functions
(setf leechers): Exported generic functions
(setf leechers): Exported generic functions
(setf seeders): Exported generic functions
(setf seeders): Exported generic functions
(setf size): Exported generic functions
(setf size): Exported generic functions
(setf size-unit): Exported generic functions
(setf size-unit): Exported generic functions
(setf source): Exported generic functions
(setf source): Exported generic functions
(setf title): Exported generic functions
(setf title): Exported generic functions

A
arg-parser-failed: Internal functions
assoc-value: Internal functions
async-torrents: Exported functions

B
browse: Exported functions
browse-elt: Internal functions

C
colorize-all-keywords: Internal functions
colorize-keyword-in-string: Internal functions
common-prefix: Internal functions
config-scrapers: Internal functions
custom-complete: Internal functions

D
display-results: Internal functions
download: Exported functions

E
ensure-cache: Internal functions
ensure-cache-and-store: Internal functions
exit: Exported functions

F
filter: Exported functions
find-magnet-link: Exported functions
format-size: Exported functions
Function, arg-parser-failed: Internal functions
Function, assoc-value: Internal functions
Function, async-torrents: Exported functions
Function, browse: Exported functions
Function, browse-elt: Internal functions
Function, colorize-all-keywords: Internal functions
Function, colorize-keyword-in-string: Internal functions
Function, common-prefix: Internal functions
Function, config-scrapers: Internal functions
Function, custom-complete: Internal functions
Function, display-results: Internal functions
Function, download: Exported functions
Function, ensure-cache: Internal functions
Function, ensure-cache-and-store: Internal functions
Function, exit: Exported functions
Function, filter: Exported functions
Function, find-magnet-link: Exported functions
Function, format-size: Exported functions
Function, get-cached-results: Internal functions
Function, join-for-query: Internal functions
Function, keyword-color-pairs: Internal functions
Function, magnet: Exported functions
Function, magnet: Exported functions
Function, magnet-link-from: Exported functions
Function, main: Exported functions
Function, make-torrent: Exported functions
Function, missing-arg: Exported functions
Function, next-color: Internal functions
Function, parse: Internal functions
Function, parse: Internal functions
Function, parse: Internal functions
Function, parse: Internal functions
Function, parse-size: Exported functions
Function, process-options: Internal functions
Function, query: Internal functions
Function, query: Internal functions
Function, query: Internal functions
Function, query: Internal functions
Function, request: Internal functions
Function, request: Internal functions
Function, request: Internal functions
Function, request: Internal functions
Function, request: Internal functions
Function, request-details: Internal functions
Function, reset-color: Internal functions
Function, result-href: Internal functions
Function, result-href: Internal functions
Function, result-href: Internal functions
Function, result-href: Internal functions
Function, result-href: Internal functions
Function, result-leechers: Internal functions
Function, result-leechers: Internal functions
Function, result-leechers: Internal functions
Function, result-leechers: Internal functions
Function, result-leechers: Internal functions
Function, result-peers: Internal functions
Function, result-peers-or-leechers: Internal functions
Function, result-seeders: Internal functions
Function, result-seeders: Internal functions
Function, result-seeders: Internal functions
Function, result-seeders: Internal functions
Function, result-size: Internal functions
Function, result-size: Internal functions
Function, result-title: Internal functions
Function, result-title: Internal functions
Function, result-title: Internal functions
Function, result-title: Internal functions
Function, result-title: Internal functions
Function, save-results: Internal functions
Function, search: Exported functions
Function, search-torrents: Exported functions
Function, select-completions: Internal functions
Function, sublist: Exported functions
Function, torrents: Exported functions
Function, torrents: Exported functions
Function, torrents: Exported functions
Function, torrents: Exported functions
Function, torrents: Exported functions
Function, unknown-option: Exported functions
Function, url: Exported functions
Function, url: Exported functions

G
Generic Function, (setf href): Exported generic functions
Generic Function, (setf leechers): Exported generic functions
Generic Function, (setf seeders): Exported generic functions
Generic Function, (setf size): Exported generic functions
Generic Function, (setf size-unit): Exported generic functions
Generic Function, (setf source): Exported generic functions
Generic Function, (setf title): Exported generic functions
Generic Function, href: Exported generic functions
Generic Function, leechers: Exported generic functions
Generic Function, seeders: Exported generic functions
Generic Function, size: Exported generic functions
Generic Function, size-unit: Exported generic functions
Generic Function, source: Exported generic functions
Generic Function, title: Exported generic functions
get-cached-results: Internal functions

H
href: Exported generic functions
href: Exported generic functions

J
join-for-query: Internal functions

K
keyword-color-pairs: Internal functions

L
leechers: Exported generic functions
leechers: Exported generic functions

M
Macro, when-option: Exported macros
magnet: Exported functions
magnet: Exported functions
magnet-link-from: Exported functions
main: Exported functions
make-torrent: Exported functions
Method, (setf href): Exported generic functions
Method, (setf leechers): Exported generic functions
Method, (setf seeders): Exported generic functions
Method, (setf size): Exported generic functions
Method, (setf size-unit): Exported generic functions
Method, (setf source): Exported generic functions
Method, (setf title): Exported generic functions
Method, href: Exported generic functions
Method, leechers: Exported generic functions
Method, seeders: Exported generic functions
Method, size: Exported generic functions
Method, size-unit: Exported generic functions
Method, source: Exported generic functions
Method, title: Exported generic functions
missing-arg: Exported functions

N
next-color: Internal functions

P
parse: Internal functions
parse: Internal functions
parse: Internal functions
parse: Internal functions
parse-size: Exported functions
process-options: Internal functions

Q
query: Internal functions
query: Internal functions
query: Internal functions
query: Internal functions

R
request: Internal functions
request: Internal functions
request: Internal functions
request: Internal functions
request: Internal functions
request-details: Internal functions
reset-color: Internal functions
result-href: Internal functions
result-href: Internal functions
result-href: Internal functions
result-href: Internal functions
result-href: Internal functions
result-leechers: Internal functions
result-leechers: Internal functions
result-leechers: Internal functions
result-leechers: Internal functions
result-leechers: Internal functions
result-peers: Internal functions
result-peers-or-leechers: Internal functions
result-seeders: Internal functions
result-seeders: Internal functions
result-seeders: Internal functions
result-seeders: Internal functions
result-size: Internal functions
result-size: Internal functions
result-title: Internal functions
result-title: Internal functions
result-title: Internal functions
result-title: Internal functions
result-title: Internal functions

S
save-results: Internal functions
search: Exported functions
search-torrents: Exported functions
seeders: Exported generic functions
seeders: Exported generic functions
select-completions: Internal functions
size: Exported generic functions
size: Exported generic functions
size-unit: Exported generic functions
size-unit: Exported generic functions
source: Exported generic functions
source: Exported generic functions
sublist: Exported functions

T
title: Exported generic functions
title: Exported generic functions
torrents: Exported functions
torrents: Exported functions
torrents: Exported functions
torrents: Exported functions
torrents: Exported functions

U
unknown-option: Exported functions
url: Exported functions
url: Exported functions

W
when-option: Exported macros

Jump to:   (  
A   B   C   D   E   F   G   H   J   K   L   M   N   P   Q   R   S   T   U   W  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *  
H   L   S   T  
Index Entry  Section

*
*base-url*: Internal special variables
*base-url*: Internal special variables
*base-url*: Internal special variables
*base-url*: Internal special variables
*browser*: Exported special variables
*cache-directory*: Internal special variables
*cache-p*: Exported special variables
*colors*: Internal special variables
*commands*: Internal special variables
*config-directory*: Internal special variables
*details*: Exported special variables
*ids-completion-list*: Internal special variables
*keywords*: Internal special variables
*keywords*: Internal special variables
*keywords-colors*: Internal special variables
*last-results*: Exported special variables
*nb-results*: Exported special variables
*prefilter-selector*: Internal special variables
*results-selector*: Internal special variables
*results-selector*: Internal special variables
*results-selector*: Internal special variables
*scrapers-alist*: Internal special variables
*search-results*: Internal special variables
*search-results*: Internal special variables
*search-url*: Internal special variables
*search-url*: Internal special variables
*search-url*: Internal special variables
*search-url*: Internal special variables
*search-url*: Internal special variables
*selectors*: Internal special variables
*source*: Internal special variables
*source*: Internal special variables
*store*: Internal special variables
*torrent-client*: Exported special variables
*torrent-clients-list*: Internal special variables
*torrents-list*: Internal special variables
*verbs*: Internal special variables
*version*: Internal special variables

H
href: Internal classes

L
leechers: Internal classes

S
seeders: Internal classes
size: Internal classes
size-unit: Internal classes
Slot, href: Internal classes
Slot, leechers: Internal classes
Slot, seeders: Internal classes
Slot, size: Internal classes
Slot, size-unit: Internal classes
Slot, source: Internal classes
Slot, title: Internal classes
source: Internal classes
Special Variable, *base-url*: Internal special variables
Special Variable, *base-url*: Internal special variables
Special Variable, *base-url*: Internal special variables
Special Variable, *base-url*: Internal special variables
Special Variable, *browser*: Exported special variables
Special Variable, *cache-directory*: Internal special variables
Special Variable, *cache-p*: Exported special variables
Special Variable, *colors*: Internal special variables
Special Variable, *commands*: Internal special variables
Special Variable, *config-directory*: Internal special variables
Special Variable, *details*: Exported special variables
Special Variable, *ids-completion-list*: Internal special variables
Special Variable, *keywords*: Internal special variables
Special Variable, *keywords*: Internal special variables
Special Variable, *keywords-colors*: Internal special variables
Special Variable, *last-results*: Exported special variables
Special Variable, *nb-results*: Exported special variables
Special Variable, *prefilter-selector*: Internal special variables
Special Variable, *results-selector*: Internal special variables
Special Variable, *results-selector*: Internal special variables
Special Variable, *results-selector*: Internal special variables
Special Variable, *scrapers-alist*: Internal special variables
Special Variable, *search-results*: Internal special variables
Special Variable, *search-results*: Internal special variables
Special Variable, *search-url*: Internal special variables
Special Variable, *search-url*: Internal special variables
Special Variable, *search-url*: Internal special variables
Special Variable, *search-url*: Internal special variables
Special Variable, *search-url*: Internal special variables
Special Variable, *selectors*: Internal special variables
Special Variable, *source*: Internal special variables
Special Variable, *source*: Internal special variables
Special Variable, *store*: Internal special variables
Special Variable, *torrent-client*: Exported special variables
Special Variable, *torrent-clients-list*: Internal special variables
Special Variable, *torrents-list*: Internal special variables
Special Variable, *verbs*: Internal special variables
Special Variable, *version*: Internal special variables

T
title: Internal classes

Jump to:   *  
H   L   S   T  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   C   K   P   S   T  
Index Entry  Section

C
Class, torrent: Internal classes

K
kat: The kat package

P
Package, kat: The kat package
Package, torrentcd: The torrentcd package
Package, torrents: The torrents package
Package, torrents-asd: The torrents-asd package
Package, torrents.1337: The torrents<dot>1337 package
Package, torrents.commands: The torrents<dot>commands package
Package, torrents.downloadsme: The torrents<dot>downloadsme package
Package, torrents.models: The torrents<dot>models package
Package, torrents.user: The torrents<dot>user package
Package, torrents.utils: The torrents<dot>utils package
Package, tpb: The tpb package

S
System, torrents: The torrents system

T
torrent: Internal classes
torrentcd: The torrentcd package
torrents: The torrents system
torrents: The torrents package
torrents-asd: The torrents-asd package
torrents.1337: The torrents<dot>1337 package
torrents.commands: The torrents<dot>commands package
torrents.downloadsme: The torrents<dot>downloadsme package
torrents.models: The torrents<dot>models package
torrents.user: The torrents<dot>user package
torrents.utils: The torrents<dot>utils package
tpb: The tpb package

Jump to:   C   K   P   S   T