Created
April 5, 2020 13:58
-
-
Save cargo12/06ba22663ab3ce51deef723fed4daa0c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "nbformat": 4, | |
| "nbformat_minor": 0, | |
| "metadata": { | |
| "colab": { | |
| "name": "Torrent To Google Drive Downloader", | |
| "provenance": [], | |
| "collapsed_sections": [], | |
| "include_colab_link": true | |
| }, | |
| "kernelspec": { | |
| "display_name": "Python 3", | |
| "language": "python", | |
| "name": "python3" | |
| } | |
| }, | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "view-in-github", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "<a href=\"https://colab.research.google.com/github/FKLC/Torrent-To-Google-Drive-Downloader/blob/master/Torrent_To_Google_Drive_Downloader.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", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "# Torrent To Google Drive Downloader " | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "qYk44mBwJf6E", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "**Important Note:** To get more disk space:\n", | |
| "> Go to Runtime -> Change Runtime and give GPU as the Hardware Accelerator. You will get around 384GB to download any torrent you want." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "NaFa7M-e9YOr", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### Install libtorrent and Initialize Session" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "colab_type": "code", | |
| "id": "m6hF0emftx4h", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "!apt install python3-libtorrent\n", | |
| "\n", | |
| "import libtorrent as lt\n", | |
| "\n", | |
| "ses = lt.session()\n", | |
| "ses.listen_on(6881, 6891)\n", | |
| "downloads = []" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "Uf90U73y9YOj", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### Mount Google Drive\n", | |
| "To stream files we need to mount Google Drive." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "colab_type": "code", | |
| "id": "oWM9l2fvtuvO", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "from google.colab import drive\n", | |
| "\n", | |
| "drive.mount(\"/content/drive\")" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "R_1XuuIf9YOn", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### Add From Torrent File\n", | |
| "You can run this cell to add more files as many times as you want" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "colab_type": "code", | |
| "id": "0et2A6N3udA0", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "from google.colab import files\n", | |
| "\n", | |
| "source = files.upload()\n", | |
| "params = {\n", | |
| " \"save_path\": \"/content/drive/Shared drives/3/Torrent\"}\n", | |
| " \"ti\": lt.torrent_info(list(source.keys())[0]),\n", | |
| "}\n", | |
| "downloads.append(ses.add_torrent(params))" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "WD-6M6eZyzmj", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### Add From Magnet Link\n", | |
| "You can run this cell to add more files as many times as you want" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "Cwi1GMlxy3te", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "params = {\"save_path\": \"/content/drive/Shared drives/3/Torrent\"}\n", | |
| "\n", | |
| "while True:\n", | |
| " magnet_link = input(\"Enter Magnet Link Or Type Exit: \")\n", | |
| " if magnet_link.lower() == \"exit\":\n", | |
| " break\n", | |
| " downloads.append(\n", | |
| " lt.add_magnet_uri(ses, magnet_link, params)\n", | |
| " )\n" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "m-a1CUP39YOu", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### Start Download\n", | |
| "Source: https://stackoverflow.com/a/5494823/7957705 and [#3 issue](https://github.com/FKLC/Torrent-To-Google-Drive-Downloader/issues/3) which refers to this [stackoverflow question](https://stackoverflow.com/a/6053350/7957705)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "colab_type": "code", | |
| "id": "DBNoYYoSuDBT", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "import time\n", | |
| "from IPython.display import display\n", | |
| "import ipywidgets as widgets\n", | |
| "\n", | |
| "state_str = [\n", | |
| " \"queued\",\n", | |
| " \"checking\",\n", | |
| " \"downloading metadata\",\n", | |
| " \"downloading\",\n", | |
| " \"finished\",\n", | |
| " \"seeding\",\n", | |
| " \"allocating\",\n", | |
| " \"checking fastresume\",\n", | |
| "]\n", | |
| "\n", | |
| "layout = widgets.Layout(width=\"auto\")\n", | |
| "style = {\"description_width\": \"initial\"}\n", | |
| "download_bars = [\n", | |
| " widgets.FloatSlider(\n", | |
| " step=0.01, disabled=True, layout=layout, style=style\n", | |
| " )\n", | |
| " for _ in downloads\n", | |
| "]\n", | |
| "display(*download_bars)\n", | |
| "\n", | |
| "while downloads:\n", | |
| " next_shift = 0\n", | |
| " for index, download in enumerate(downloads[:]):\n", | |
| " bar = download_bars[index + next_shift]\n", | |
| " if not download.is_seed():\n", | |
| " s = download.status()\n", | |
| "\n", | |
| " bar.description = \" \".join(\n", | |
| " [\n", | |
| " download.name(),\n", | |
| " str(s.download_rate / 1000),\n", | |
| " \"kB/s\",\n", | |
| " state_str[s.state],\n", | |
| " ]\n", | |
| " )\n", | |
| " bar.value = s.progress * 100\n", | |
| " else:\n", | |
| " next_shift -= 1\n", | |
| " ses.remove_torrent(download)\n", | |
| " downloads.remove(download)\n", | |
| " bar.close() # Seems to be not working in Colab (see https://github.com/googlecolab/colabtools/issues/726#issue-486731758)\n", | |
| " download_bars.remove(bar)\n", | |
| " print(download.name(), \"complete\")\n", | |
| " time.sleep(1)\n" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment