Skip to content

Instantly share code, notes, and snippets.

@1x6
Last active April 17, 2023 10:59
Show Gist options
  • Save 1x6/8ac7f6a36a69ef2fb78d7ad0055273fd to your computer and use it in GitHub Desktop.
Save 1x6/8ac7f6a36a69ef2fb78d7ad0055273fd to your computer and use it in GitHub Desktop.
Torrent To Google Drive Downloader v3
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Torrent To Google Drive Downloader v3",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/1x6/8ac7f6a36a69ef2fb78d7ad0055273fd/notebook.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aQuWDmfm9YOi"
},
"source": [
"# Torrent To Google Drive v3\r\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Uf90U73y9YOj"
},
"source": [
"### Mount Google Drive\n",
"To stream files we need to mount Google Drive."
]
},
{
"cell_type": "code",
"metadata": {
"id": "oWM9l2fvtuvO",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "ab1d3f86-a1de-4aa8-c539-9be5f161eaeb"
},
"source": [
"from google.colab import drive\n",
"drive.mount('/content/drive')"
],
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"text": [
"Mounted at /content/drive\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FexiyATtNwTG"
},
"source": [
"###Dependency\n",
"https://www.libtorrent.org/"
]
},
{
"cell_type": "code",
"metadata": {
"id": "m6hF0emftx4h",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "3f5859d7-6c9f-42d0-e160-bcd8c5507ba3"
},
"source": [
"!python -m pip install --upgrade pip setuptools wheel\r\n",
"!python -m pip install lbry-libtorrent\r\n",
"!apt install python3-libtorrent\r\n"
],
"execution_count": 2,
"outputs": [
{
"output_type": "stream",
"text": [
"Collecting pip\n",
"\u001b[?25l Downloading https://files.pythonhosted.org/packages/fe/ef/60d7ba03b5c442309ef42e7d69959f73aacccd0d86008362a681c4698e83/pip-21.0.1-py3-none-any.whl (1.5MB)\n",
"\u001b[K |████████████████████████████████| 1.5MB 6.9MB/s \n",
"\u001b[?25hRequirement already up-to-date: setuptools in /usr/local/lib/python3.7/dist-packages (54.0.0)\n",
"Requirement already up-to-date: wheel in /usr/local/lib/python3.7/dist-packages (0.36.2)\n",
"Installing collected packages: pip\n",
" Found existing installation: pip 19.3.1\n",
" Uninstalling pip-19.3.1:\n",
" Successfully uninstalled pip-19.3.1\n",
"Successfully installed pip-21.0.1\n",
"Collecting lbry-libtorrent\n",
" Downloading lbry_libtorrent-1.2.4-py3-none-any.whl (2.4 MB)\n",
"\u001b[K |████████████████████████████████| 2.4 MB 6.3 MB/s \n",
"\u001b[?25hInstalling collected packages: lbry-libtorrent\n",
"Successfully installed lbry-libtorrent-1.2.4\n",
"Reading package lists... Done\n",
"Building dependency tree \n",
"Reading state information... Done\n",
"The following additional packages will be installed:\n",
" libtorrent-rasterbar9\n",
"Suggested packages:\n",
" libtorrent-rasterbar-dbg\n",
"The following NEW packages will be installed:\n",
" libtorrent-rasterbar9 python3-libtorrent\n",
"0 upgraded, 2 newly installed, 0 to remove and 29 not upgraded.\n",
"Need to get 1,569 kB of archives.\n",
"After this operation, 5,718 kB of additional disk space will be used.\n",
"Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libtorrent-rasterbar9 amd64 1.1.5-1build1 [1,258 kB]\n",
"Get:2 http://archive.ubuntu.com/ubuntu bionic/universe amd64 python3-libtorrent amd64 1.1.5-1build1 [310 kB]\n",
"Fetched 1,569 kB in 1s (1,542 kB/s)\n",
"Selecting previously unselected package libtorrent-rasterbar9.\n",
"(Reading database ... 160975 files and directories currently installed.)\n",
"Preparing to unpack .../libtorrent-rasterbar9_1.1.5-1build1_amd64.deb ...\n",
"Unpacking libtorrent-rasterbar9 (1.1.5-1build1) ...\n",
"Selecting previously unselected package python3-libtorrent.\n",
"Preparing to unpack .../python3-libtorrent_1.1.5-1build1_amd64.deb ...\n",
"Unpacking python3-libtorrent (1.1.5-1build1) ...\n",
"Setting up libtorrent-rasterbar9 (1.1.5-1build1) ...\n",
"Setting up python3-libtorrent (1.1.5-1build1) ...\n",
"Processing triggers for libc-bin (2.27-3ubuntu1.2) ...\n",
"/sbin/ldconfig.real: /usr/local/lib/python3.7/dist-packages/ideep4py/lib/libmkldnn.so.0 is not a symbolic link\n",
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tqKcWHZcYRIA"
},
"source": [
"### Code to download torrent\n",
"Variable **link** stores the link string."
]
},
{
"cell_type": "code",
"metadata": {
"id": "b09BxnANO2ep",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 557
},
"outputId": "2788dbea-0c5a-46f6-eb95-1e9c930fb323"
},
"source": [
"import libtorrent as lt\n",
"import time\n",
"import datetime\n",
"\n",
"ses = lt.session()\n",
"ses.listen_on(6881, 6891)\n",
"params = {\n",
" 'save_path': '/content/drive/Shared drives/Studying Materials'}\n",
"link = \"magnet:?xt=urn:btih:b15184c90d71b29fbd37896c8bb00be7e4a14da2&dn=Modern.Family.S05.1080p.WEB-DL.DD5.1.H264-HWD%5Brartv%5D&tr=http%3A%2F%2Ftracker.trackerfix.com%3A80%2Fannounce&tr=udp%3A%2F%2F9.rarbg.me%3A2870&tr=udp%3A%2F%2F9.rarbg.to%3A2810\" # PASTE TORRENT/MAGNET LINK HERE\n",
"print(link)\n",
"\n",
"handle = lt.add_magnet_uri(ses, link, params)\n",
"ses.start_dht()\n",
"\n",
"begin = time.time()\n",
"print(datetime.datetime.now())\n",
"\n",
"print ('Downloading Metadata...')\n",
"while (not handle.has_metadata()):\n",
" time.sleep(1)\n",
"print ('Got Metadata, Starting Torrent Download...')\n",
"\n",
"print(\"Starting\", handle.name())\n",
"\n",
"while (handle.status().state != lt.torrent_status.seeding):\n",
" s = handle.status()\n",
" state_str = ['queued', 'checking', 'downloading metadata', \\\n",
" 'downloading', 'finished', 'seeding', 'allocating']\n",
" print ('%.2f%% complete (down: %.1f kb/s up: %.1f kB/s peers: %d) %s ' % \\\n",
" (s.progress * 100, s.download_rate / 1000, s.upload_rate / 1000, \\\n",
" s.num_peers, state_str[s.state]))\n",
" time.sleep(5)\n",
"\n",
"end = time.time()\n",
"print(handle.name(), \"COMPLETE\")\n",
"\n",
"print(\"Elapsed Time: \",int((end-begin)//60),\"min :\", int((end-begin)%60), \"sec\")\n",
"\n",
"print(datetime.datetime.now())"
],
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"text": [
"magnet:?xt=urn:btih:b15184c90d71b29fbd37896c8bb00be7e4a14da2&dn=Modern.Family.S05.1080p.WEB-DL.DD5.1.H264-HWD%5Brartv%5D&tr=http%3A%2F%2Ftracker.trackerfix.com%3A80%2Fannounce&tr=udp%3A%2F%2F9.rarbg.me%3A2870&tr=udp%3A%2F%2F9.rarbg.to%3A2810\n",
"2021-03-03 17:18:05.652481\n",
"Downloading Metadata...\n",
"Got Metadata, Starting Torrent Download...\n",
"Starting Modern.Family.S05.1080p.WEB-DL.DD5.1.H.264-HWD[rartv]\n",
"0.00% complete (down: 2.3 kb/s up: 0.1 kB/s peers: 1) downloading \n",
"0.00% complete (down: 1.4 kb/s up: 0.1 kB/s peers: 1) downloading \n",
"0.00% complete (down: 0.5 kb/s up: 0.0 kB/s peers: 0) downloading \n",
"0.00% complete (down: 0.1 kb/s up: 0.0 kB/s peers: 0) downloading \n",
"0.00% complete (down: 0.0 kb/s up: 0.0 kB/s peers: 0) downloading \n",
"0.00% complete (down: 0.0 kb/s up: 0.0 kB/s peers: 0) downloading \n",
"0.00% complete (down: 0.0 kb/s up: 0.0 kB/s peers: 0) downloading \n",
"0.00% complete (down: 0.0 kb/s up: 0.0 kB/s peers: 0) downloading \n",
"0.00% complete (down: 0.0 kb/s up: 0.0 kB/s peers: 0) downloading \n",
"0.00% complete (down: 0.0 kb/s up: 0.0 kB/s peers: 0) downloading \n",
"0.00% complete (down: 0.0 kb/s up: 0.0 kB/s peers: 0) downloading \n",
"0.00% complete (down: 0.0 kb/s up: 0.0 kB/s peers: 0) downloading \n",
"0.00% complete (down: 0.0 kb/s up: 0.0 kB/s peers: 0) downloading \n"
],
"name": "stdout"
},
{
"output_type": "error",
"ename": "KeyboardInterrupt",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-5-f6812e740bcb>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0mstate_str\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'queued'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'checking'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'downloading metadata'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'downloading'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'finished'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'seeding'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'allocating'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m'%.2f%% complete (down: %.1f kb/s up: %.1f kB/s peers: %d) %s '\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprogress\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdownload_rate\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m1000\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupload_rate\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m1000\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnum_peers\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstate_str\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstate\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 29\u001b[0;31m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 30\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0mend\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
]
}
]
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment