anacrolix / confluence

Torrent client as a HTTP service
Mozilla Public License 2.0
235 stars 32 forks source link

Proposal: Match torrent file by Regexp #41

Open yassernasc opened 1 year ago

yassernasc commented 1 year ago

The only way to select a specific file is by its path, example:

vlc 'http://localhost:8080/data?magnet=...&path=Sintel.mp4'

Using regexp it can happen like that:

vlc 'http://localhost:8080/data?magnet=...&match=\.mp4$'

In that way, the client can create a regexp that defines its interest and simplify your flow without needing to:

  1. Fetch the metainfo first.
  2. Unmarshall the response.
  3. Match the right file path.

This can be useful for the context of video media which usually only one video file is shared per magnet. Sample of a generic regexp that match the most popular video formats: \.(avi|mp4|mkv|webm)$.

Caveat: Following the example, maybe a magnet points to many 'mp4's files, in that case, to maintain an easy algorithm correctness I suggest to return the first match.


Wildcard alternative:

Despite my last example, regex syntax can be really creepy, I prefer the unix shell wildcard notation that is:

vlc 'http://localhost:8080/data?magnet=...&match=*.{mp4,mkv}'

But I don't think that Golang provides a built-in support to this.

yassernasc commented 1 year ago

A probably safer approach to the same problem is selecting the largest file.