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 # Setup
Here's what the setup looks like rn: Here's what the setup looks like rn:
- VPS, Debian Stretch, 2 GB RAM - VPS, Debian Buster, 4 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
- user with username nextgen on the server - user with username nextgen on the server
- my laptop w/ Linux - my laptop w/ Linux
- Go toolchain installed - Go toolchain installed
- node v10.15 & npm - node v10.15 & npm
- Python 3 (required only for index-generator/fix-metajson.py) - 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 # Usage
@ -38,6 +34,8 @@ There is a database dump available in torrentparadise-staticbackup.torrent. This
See `update-index.sh`. 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 ## 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. 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`. 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' ## 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. 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 include head.html
.container.content .section
h1 Torrent Paradise: innovative torrent site .container.content.legible
ul h2 Torrent Paradise: find torrents #[i quickly, effectively and without distractions].
li seed/leech counts always up-to-date p #[a(href="why.html") Why] I made this?
li new torrents are discovered via DHT and added automagically h3 Features
li no ads as far as money allows ul
li if you use IPFS li fresh <b>and</b> rich torrent index
ul ul
li #[b never any ads] li new torrents identified quickly via multiple RSS feeds
li no single point of failure: you can always run your own via #[a(href="ipfs.html") IPFS] li obscure torrents discovered through DHT
li runs in browser, so your query #[b never] leaves your computer li seed/leech counts constantly refreshed
li based off open source code from #[a(href="https://ipfsearch.xyz") ipfsearch] li privacy preserving, not-in-your-face ads
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 if you use IPFS
li source code on #[a(href="https://github.com/urbanguacamole/torrent-paradise") GitHub] ul
li send suggestions to urban-guacamole (at) protonmail.com li no single point of failure: you can always run your own via #[a(href="ipfs.html") IPFS]
p Want to report a copyright violation? See #[a(href="copyright.html") copyright] 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"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>Torrent Paradise</title> <title>Torrent Paradise</title>
<link rel="icon" type="image/x-icon" href="favicon.ico"> <link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="assets/bulma.min.css"> <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> </head>
<body> <body>
@ -17,17 +21,10 @@
<i class="fas fa-sun"></i> <i class="fas fa-sun"></i>
</a> </a>
<a class="navbar-item" href="about.html"> <a class="navbar-item" href="about.html">
About About 2.0
</a>
<a class="navbar-item" href="top.html">
Top
</a> </a>
<a class="navbar-item" href="ipfs.html"> <a class="navbar-item" href="ipfs.html">
IPFS IPFS
</a> </a>
<a class="navbar-item" href="vote-and-donate.html">
<b>Vote</b> &nbsp and donate
</a>
</div> </div>
</nav> </nav>
<br />

@ -23,25 +23,26 @@
<i class="fas fa-sun"></i> <i class="fas fa-sun"></i>
</a> </a>
<a class="navbar-item" href="about.html"> <a class="navbar-item" href="about.html">
About About 2.0
</a>
<a class="navbar-item" href="top.html">
Top
</a> </a>
<a class="navbar-item" href="ipfs.html"> <a class="navbar-item" href="ipfs.html">
IPFS IPFS
</a> </a>
<a class="navbar-item" href="vote-and-donate.html">
<b>Vote</b>&nbsp and donate
</a>
</div> </div>
</nav> </nav>
<br> <br>
<div id="app" class="container"> <div id="app" class="container">
<!--<div class="notification"> <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 /> <!--<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 />-->
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 :) <big>Torrent Paradise <b>2.0</b> <i class="fa fa-heart" aria-hidden="true"></i></big>
</div>--> <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="field has-addons">
<div class="control is-expanded"> <div class="control is-expanded">
<input class="input" placeholder='' type='text' id="searchbox" /> <input class="input" placeholder='' type='text' id="searchbox" />
@ -59,4 +60,4 @@
</div> </div>
<script src="bundle.js"></script> <script src="bundle.js"></script>
<script src="assets/vue-v2.6.11.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 include head.html
.container.content .section
h1 Remove ads and access the index even when the public website is down .container.content.legible
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. h2 Decentralization with IPFS
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. 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 include head.html
.container.content .section
h1 Pick the future of Torrent Paradise .container.content.legible
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. h1 Pick the future of Torrent Paradise
p 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.
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. p
.columns 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.
.column .columns
.card .column
header.card-header.card-header-title.card-content.subtitle WebTorrent for in-browser streaming of the most popular torrents .card
.card-content.content header.card-header.card-header-title.card-content.subtitle WebTorrent for in-browser streaming of the most popular torrents
p The server could seed the most popular torrents on #[a(href="") WebTorrent] and allow visitors to stream them, right in the browser. .card-content.content
br p The server could seed the most popular torrents on #[a(href="") WebTorrent] and allow visitors to stream them, right in the browser.
| <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.
br br
| <b>Goal</b>: $120 | <b>Goal</b>: $150
progress.progress.is-primary(value=7.28,max=120) progress.progress.is-primary(value=0,max=150)
footer.card-footer footer.card-footer
a.card-footer-item(href="https://www.blockchain.com/btc/address/1AHpkqBzW56h4q7ycYPkcsy5dqYq2AM6Si") Bitcoin a.card-footer-item(href="https://www.blockchain.com/btc/address/15KMfTMCZcJeZS3Ct9TxzKzHFWsx3Ct5zq") Bitcoin
.column .column
.card .card
header.card-header.card-header-title.card-content.subtitle Add fresh content and verified badges header.card-header.card-header-title.card-content.subtitle Machine learned result sorting
.card-content .card-content
.content .content
p Crawl other torrent sites for new torrents. Add verified badges to torrents that come from moderated sites. 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.
br p All web search engines currently do this, only torrent sites don't.
| <b>Goal</b>: $50 br
progress.progress.is-primary(value=4.67,max=50) | <b>Goal</b>: $120
footer.card-footer progress.progress.is-primary(value=27.28,max=120)
a.card-footer-item(href="https://www.blockchain.com/btc/address/13YqTqkZqGkEWd86msTKDWhuaJvbcxMfZs") Bitcoin 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