Launch v2.0 frontend

pull/27/head
Urban Guacamole 4 years ago
parent b6537dbcea
commit aa63077e39

@ -11,26 +11,22 @@ Maybe, open an issue. Be sure to demonstrate an effort that you tried to solve t
# Setup
Here's what the setup looks like rn:
- VPS, Debian Stretch, 2 GB RAM
- PostgreSQL 9.6. pg_hba.conf contains this:
```
local all all peer
# IPv4 local connections:
host nextgen nextgen localhost md5
```
- IPFS v0.4.18
- VPS, Debian Buster, 4 GB RAM
- user with username nextgen on the server
- my laptop w/ Linux
- Go toolchain installed
- node v10.15 & npm
- Python 3 (required only for index-generator/fix-metajson.py)
The programs create their own tables in the DB that they need. Database name is "nextgen".
The programs create their own tables in the DB that they need. Database name is "nextgen". You need to create the materialized views (fresh and search). You can find some useful SQL code in snippets.sql.
What I did first after getting the server up and running was importing the TPB dump. This is sadly no longer possible, since TPB stopped providing the dump.
Each of the daemons (api, crawl-rss, seedleech-daemon) is its own standalone Go package and resulting binary. You have to compile the binaries yourself. There are systemd .service files available for each of the daemons.
There is a database dump available in torrentparadise-staticbackup.torrent. This same database dump is available on https://mega.nz/#!ddESlChb!3YBqfxG-a4fwpXzPG3QsXa-C6FeQ9AbNSGXxY7W7xm4. It contains the same data as the torrent, only .xz compressed.
The torrent collection is a mashup of the (now no longer provided) TPB dumps, my own DHT spidering efforts, and [magnetico community database dumps](https://github.com/boramalper/magnetico/issues/218).
The easiest way to get your own site up and running is to start with my .csv dump. It should be easy to import into any kind of system. It contains seed/leech counts too (!). If I were to import it, I'd modify import-magnetico-db.
__Torrent Paradise dump__ download: [MEGA](https://mega.nz/file/IFcTBCKZ#v3OCPNeja4lRC5baccVDeTaQUE150wqqGyS6A1mxglc) [BayFiles](https://bayfiles.com/nc43i3H5oe/torrentparadise-dump-200720.csv_xz)
# Usage
@ -38,6 +34,8 @@ There is a database dump available in torrentparadise-staticbackup.torrent. This
See `update-index.sh`.
Generation of the IPFS index will prob take a long time, a machine with high single-core perf recommended (ipfsearch runs on node.js)
## Spider the DHT
Run `go build` in spider/ to compile and scp the binary it to the server. You can use the systemd service file in `spider/spider.service` to start the spider on server boot.
@ -46,6 +44,12 @@ Run `go build` in spider/ to compile and scp the binary it to the server. You ca
Run `go build` in seedleech-daemon/ to compile and scp the binary it to the server. You can use the systemd service file in `seedleech-daemon/seedleech.service`.
## Import a recent magnetico community dump
Use sqlite3 on a the decompressed dump to generate a .csv file. Format: infohash,name,length(bytes). Optionally quoted.
Then use the go binary in import-magnetico-db to do the import.
## IPFS vs 'static'
The directory website gets deployed to IPFS, static gets deployed to the server. Static calls the API, the IPFS version doesn't.

@ -1,17 +1,27 @@
include head.html
.container.content
h1 Torrent Paradise: innovative torrent site
ul
li seed/leech counts always up-to-date
li new torrents are discovered via DHT and added automagically
li no ads as far as money allows
li if you use IPFS
ul
li #[b never any ads]
li no single point of failure: you can always run your own via #[a(href="ipfs.html") IPFS]
li runs in browser, so your query #[b never] leaves your computer
li based off open source code from #[a(href="https://ipfsearch.xyz") ipfsearch]
li more info at #[a(href="https://www.reddit.com/r/torrents/comments/afibhh/i_made_a_decentralized_torrent_search_site_with/") Reddit discussion]
li source code on #[a(href="https://github.com/urbanguacamole/torrent-paradise") GitHub]
li send suggestions to urban-guacamole (at) protonmail.com
p Want to report a copyright violation? See #[a(href="copyright.html") copyright]
.section
.container.content.legible
h2 Torrent Paradise: find torrents #[i quickly, effectively and without distractions].
p #[a(href="why.html") Why] I made this?
h3 Features
ul
li fresh <b>and</b> rich torrent index
ul
li new torrents identified quickly via multiple RSS feeds
li obscure torrents discovered through DHT
li seed/leech counts constantly refreshed
li privacy preserving, not-in-your-face ads
li if you use IPFS
ul
li no single point of failure: you can always run your own via #[a(href="ipfs.html") IPFS]
li runs in browser, so your query #[b never] leaves your computer
li #[b never any ads]
li based off open source code from #[a(href="https://ipfsearch.xyz") ipfsearch]
li #[a(href="vote-and-donate.html") donate] and vote on future features
li source code on #[a(href="https://github.com/urbanguacamole/torrent-paradise") GitHub]
li send suggestions to urban-guacamole (at) protonmail.com
p Want to report a copyright violation? See #[a(href="copyright.html") copyright]
h3 Omitted features
p I decided to omit some features on purpose. That includes categories, recent torrents, comments, torrent upload, descriptions, etc. Every feature adds maintenance burden and complexity, increasing the chance that I abandon this project and noone else will want to pick it up afterwards.
p My #[b focus] is simple: You get here, enter what you're looking for, pick one and you start the download. #[i No distractions].

@ -6,8 +6,12 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Torrent Paradise</title>
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="assets/bulma.min.css">
<script defer src="assets/fa.js"></script>
<script defer src="assets/all.min.js"></script>
<style>
.legible{max-width: 60rem;} /* requirement because bulma allows stupidly long lines by default*/
</style>
</head>
<body>
@ -17,17 +21,10 @@
<i class="fas fa-sun"></i>
</a>
<a class="navbar-item" href="about.html">
About
</a>
<a class="navbar-item" href="top.html">
Top
About 2.0
</a>
<a class="navbar-item" href="ipfs.html">
IPFS
</a>
<a class="navbar-item" href="vote-and-donate.html">
<b>Vote</b> &nbsp and donate
</a>
</div>
</nav>
<br />

@ -23,25 +23,26 @@
<i class="fas fa-sun"></i>
</a>
<a class="navbar-item" href="about.html">
About
</a>
<a class="navbar-item" href="top.html">
Top
About 2.0
</a>
<a class="navbar-item" href="ipfs.html">
IPFS
</a>
<a class="navbar-item" href="vote-and-donate.html">
<b>Vote</b>&nbsp and donate
</a>
</div>
</nav>
<br>
<div id="app" class="container">
<!--<div class="notification">
<span style="color: hsl(348, 100%, 61%);"><i class="fa fa-hands-helping" aria-hidden="true"></i> <i class="fa fa-question" aria-hidden="true"></i></span><br />
Are you new here? (10 days ago) There has been a flood of new users and I don't know where they came from. I don't run any tracking or keep logs. Can you send me an email at urban-guacamole@protonmail.com ? Please :)
</div>-->
<div class="notification">
<!--<span style="color: hsl(348, 100%, 61%);"><i class="fa fa-birthday-cake" aria-hidden="true"></i> <i class="fa fa-smile-beam" aria-hidden="true"></i> </span><br />-->
<big>Torrent Paradise <b>2.0</b> <i class="fa fa-heart" aria-hidden="true"></i></big>
<br><br>
<ul>
<li>designed for humans, doesn't make you angry</li>
<li>over 10 million torrents (up from 2 million)</li>
<li>new releases added from RSS feeds</li>
<li>freshest seed/leech counts</li>
</ul>
</div>
<div class="field has-addons">
<div class="control is-expanded">
<input class="input" placeholder='' type='text' id="searchbox" />
@ -59,4 +60,4 @@
</div>
<script src="bundle.js"></script>
<script src="assets/vue-v2.6.11.js"></script>
<script src="view.js"></script>
<script src="view.js"></script>

@ -1,5 +1,7 @@
include head.html
.container.content
h1 Remove ads and access the index even when the public website is down
p With IPFS (see the #[a(href="https://ipfs.io") official website]), a copy of the site and the whole index can be distributed just like a torrent. When you open it via IPFS, your IPFS node fetches the parts of the index and website it needs from the network.
p To use it without the public server, use #[a(href="https://ipfs.io") IPFS]. Address in IPFS is #[a(href="https://cloudflare-ipfs.com/ipns/12D3KooWB3GY1u6zMLqnf3MJ8zhX3SS1oBj7VXk3xp6sJJiFGZXp") /ipns/torrent-paradise.ml]. You can also use /ipns/12D3KooWB3GY1u6zMLqnf3MJ8zhX3SS1oBj7VXk3xp6sJJiFGZXp in case the domain doesn't work.
.section
.container.content.legible
h2 Decentralization with IPFS
p With IPFS (see the #[a(href="https://ipfs.io") official website]), a copy of the site and the whole index can be distributed just like a torrent. When you open it via IPFS, your IPFS node fetches the parts of the index and website it needs from the network.
p Address in IPFS is /ipns/torrent-paradise.ml. You can also use /ipns/12D3KooWB3GY1u6zMLqnf3MJ8zhX3SS1oBj7VXk3xp6sJJiFGZXp in case the domain doesn't work.
p There are public IPFS #[a(href="https://cloudflare-ipfs.com/ipns/12D3KooWB3GY1u6zMLqnf3MJ8zhX3SS1oBj7VXk3xp6sJJiFGZXp") gateways] available.

File diff suppressed because one or more lines are too long

@ -1,44 +1,44 @@
include head.html
.container.content
h1 Pick the future of Torrent Paradise
p I don't want to add features that the users don't want. Influence the development by sending cryptocurrency to the address associated with your desired improvement. Once the goal is reached, development of the proposed feature will start. If you'd like to propose an improvement, send me an email.
p
small Raised amount is not updated in real time. Looks like the goal won't be reached and want to redirect it somewhere else? Email me.
.columns
.column
.card
header.card-header.card-header-title.card-content.subtitle WebTorrent for in-browser streaming of the most popular torrents
.card-content.content
p The server could seed the most popular torrents on #[a(href="") WebTorrent] and allow visitors to stream them, right in the browser.
br
| <b>Goal</b>: $150
progress.progress.is-primary(value=0,max=150)
footer.card-footer
a.card-footer-item(href="https://www.blockchain.com/btc/address/15KMfTMCZcJeZS3Ct9TxzKzHFWsx3Ct5zq") Bitcoin
.column
.card
header.card-header.card-header-title.card-content.subtitle Machine learned result sorting
.card-content
.content
p Finally do away with sorting by seed count and personalize the results. Does your browser say that your screen resolution is 1280x720 and your language is Spanish? Here is a version of the TV show you're looking for in spanish in 720p.
p All web search engines currently do this, only torrent sites don't.
.section
.container.content.legible
h1 Pick the future of Torrent Paradise
p When you donate, you can use your donation to support development of your desired features. Influence the development by sending cryptocurrency to the address associated with your desired improvement. Once the goal is reached, development of the proposed feature will start. If you'd like to propose an improvement, send me an email.
p
small Raised amount is not updated in real time. Looks like the goal won't be reached and want to redirect it somewhere else? Email me.
.columns
.column
.card
header.card-header.card-header-title.card-content.subtitle WebTorrent for in-browser streaming of the most popular torrents
.card-content.content
p The server could seed the most popular torrents on #[a(href="") WebTorrent] and allow visitors to stream them, right in the browser.
br
| <b>Goal</b>: $120
progress.progress.is-primary(value=7.28,max=120)
footer.card-footer
a.card-footer-item(href="https://www.blockchain.com/btc/address/1AHpkqBzW56h4q7ycYPkcsy5dqYq2AM6Si") Bitcoin
| <b>Goal</b>: $150
progress.progress.is-primary(value=0,max=150)
footer.card-footer
a.card-footer-item(href="https://www.blockchain.com/btc/address/15KMfTMCZcJeZS3Ct9TxzKzHFWsx3Ct5zq") Bitcoin
.column
.card
header.card-header.card-header-title.card-content.subtitle Add fresh content and verified badges
.card-content
.content
p Crawl other torrent sites for new torrents. Add verified badges to torrents that come from moderated sites.
br
| <b>Goal</b>: $50
progress.progress.is-primary(value=4.67,max=50)
footer.card-footer
a.card-footer-item(href="https://www.blockchain.com/btc/address/13YqTqkZqGkEWd86msTKDWhuaJvbcxMfZs") Bitcoin
.column
.card
header.card-header.card-header-title.card-content.subtitle Machine learned result sorting
.card-content
.content
p Finally do away with sorting by seed count and personalize the results. Does your browser say that your screen resolution is 1280x720 and your language is Spanish? Here is a version of the TV show you're looking for in spanish in 720p.
p All web search engines currently do this, only torrent sites don't.
br
| <b>Goal</b>: $120
progress.progress.is-primary(value=27.28,max=120)
footer.card-footer
a.card-footer-item(href="https://www.blockchain.com/btc/address/1AHpkqBzW56h4q7ycYPkcsy5dqYq2AM6Si") Bitcoin
.column
.card
header.card-header.card-header-title.card-content.subtitle Add fresh content and verified badges
.card-content
.content
p Crawl other torrent sites for new torrents. Add verified badges to torrents that come from moderated sites.
p Update: This is partly implemented now actually, since I crawl RSS of some other torrent sites. No verified badges though.
br
| <b>Goal</b>: $50
progress.progress.is-primary(value=4.67,max=50)
footer.card-footer
a.card-footer-item(href="https://www.blockchain.com/btc/address/13YqTqkZqGkEWd86msTKDWhuaJvbcxMfZs") Bitcoin

@ -0,0 +1,10 @@
include head.html
.section
.container.content.legible
h1 Why I made this
p In 2012, the iconic Pirate Bay stopped offering .torrent files for download. This launched a new era for torrent discovery as operating costs for search sites #[i plummetted]. No longer was it necessary to operate a tracker and host a terabyte of .torrent files. All you need, since 2012, is a decent VPS and a little bit of know-how on how to run a website.
p How did I get to creating this site? In 2018, I was fascinated by the technical opportunities offered by #[a(href="https://docs.ipfs.io/concepts/what-is-ipfs/") IPFS] and #[a(href="https://ipfsearch.xyz/") ipfsearch]. It is entirely possible to distribute an index that its users 'seed', and let anyone search through it. It is pretty slow, but it's super resilient and decentralized! Why has no one done this for torrent search? I was bored and thought that this would be really cool to do, so I put a dump of TPB on it. Reddit #[a(href='https://www.reddit.com/r/TPB/comments/9vsry6/i_put_the_pirate_bay_onto_a_decentralized_search/') liked] it, people used it, I was happy.
p In the last two years, what used to be a Pirate Bay dump has evolved and has its own name, domain, spider, and a server that can answer your queries fast, but you can still fall back on IPFS in case it goes down (or you just love privacy and decentralization).
p I am still baffled by the fact that there is no torrent search site that has a big index, fresh seed/leech counts and ads that do not jump in your face.
p With 2.0, I have built what I think is technically possible: a torrent site that is #[i fast, effective and doesn't make you angry]. I won't get rich, but I will make people around the world less angry and it might even pay for my time. What else could I wish for?
Loading…
Cancel
Save