mirror of
https://github.com/buzz-lightsnack-2007/DownYouNow.git
synced 2024-08-14 23:55:22 +00:00
fixed significant bugs and added new features:
- resolved error on startup - Youtube-dl is now the fallback downloader in case yt-dlp fails. Files are cleared when switching. - A failed download no longer raises an exception, but an error message is still shown and the execution will still fail.
This commit is contained in:
parent
010409d8f4
commit
7ead6d173a
1 changed files with 40 additions and 12 deletions
|
@ -1,5 +1,15 @@
|
||||||
{
|
{
|
||||||
"cells": [
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {
|
||||||
|
"id": "view-in-github",
|
||||||
|
"colab_type": "text"
|
||||||
|
},
|
||||||
|
"source": [
|
||||||
|
"<a href=\"https://colab.research.google.com/github/buzz-lightsnack-2007/DownYouNow/blob/development/DownYouNow.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
@ -10,7 +20,7 @@
|
||||||
"\n",
|
"\n",
|
||||||
"**A 100% free YouTube video downloader.** \n",
|
"**A 100% free YouTube video downloader.** \n",
|
||||||
"\n",
|
"\n",
|
||||||
"_Powered by `yt_dlp` and `youtube_dl`._"
|
"_Powered by [`YouTube-DL`](https://urlzs.com/AqDFN) and [`yt_dlp`](https://urlzs.com/rkBHD). ._"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -70,6 +80,10 @@
|
||||||
" try: from google.colab import files\n",
|
" try: from google.colab import files\n",
|
||||||
" except: raise TypeError(\"No! Please run this in \" + formatting.font.bold + 'Google CoLab' + formatting.clear + '. ')\n",
|
" except: raise TypeError(\"No! Please run this in \" + formatting.font.bold + 'Google CoLab' + formatting.clear + '. ')\n",
|
||||||
"\n",
|
"\n",
|
||||||
|
"def fail(message = ''): \n",
|
||||||
|
" # When the program fails, run this. \n",
|
||||||
|
" clear(); info.title(); info.err(message); os.kill(os.getpid, 1);\n",
|
||||||
|
"\n",
|
||||||
"def getExtension(fileName): \n",
|
"def getExtension(fileName): \n",
|
||||||
" import os\n",
|
" import os\n",
|
||||||
" fileName_split = os.path.splitext(fileName)\n",
|
" fileName_split = os.path.splitext(fileName)\n",
|
||||||
|
@ -81,7 +95,6 @@
|
||||||
"def install(what, where = 'apt', isCritical = False):\n",
|
"def install(what, where = 'apt', isCritical = False):\n",
|
||||||
" os.system('add-apt-repository ppa:apt-fast/stable -y && apt-get update')\n",
|
" os.system('add-apt-repository ppa:apt-fast/stable -y && apt-get update')\n",
|
||||||
"\n",
|
"\n",
|
||||||
" info.status('Installing ' + what + '…')\n",
|
|
||||||
" try:\n",
|
" try:\n",
|
||||||
" if (where == 'apt' or where == 'apt-get' or where == 'apt-fast' or where == 'aptitude'):\n",
|
" if (where == 'apt' or where == 'apt-get' or where == 'apt-fast' or where == 'aptitude'):\n",
|
||||||
" if os.system('DEBIAN_FRONTEND=noninteractive apt-fast install ' + what + ' -y'): \n",
|
" if os.system('DEBIAN_FRONTEND=noninteractive apt-fast install ' + what + ' -y'): \n",
|
||||||
|
@ -93,11 +106,10 @@
|
||||||
" if os.system('DEBIAN_FRONTEND=noninteractive ' + where + ' install ' + what): raise\n",
|
" if os.system('DEBIAN_FRONTEND=noninteractive ' + where + ' install ' + what): raise\n",
|
||||||
" except:\n",
|
" except:\n",
|
||||||
" errorMsg = (what + ' could not get installed. ')\n",
|
" errorMsg = (what + ' could not get installed. ')\n",
|
||||||
" if isCritical: clear(); info.title(); raise SystemError('Critical component ' + errorMsg)\n",
|
" if isCritical: fail('Critical component ' + errorMsg)\n",
|
||||||
" else: info.err(errorMsg); return True\n",
|
" else: info.err(errorMsg); return True\n",
|
||||||
" else: \n",
|
" else: \n",
|
||||||
" if os.system('apt-fast clean && apt-fast autoremove -y') > 0: os.system('apt clean && apt autoremove -y') > 0\n",
|
" if os.system('apt-fast clean && apt-fast autoremove -y') > 0: os.system('apt clean && apt autoremove -y') > 0\n",
|
||||||
" info.success('Installed '+ what + '.'); return False\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
"def install_required(): \n",
|
"def install_required(): \n",
|
||||||
" def check_installDone(method='check'): \n",
|
" def check_installDone(method='check'): \n",
|
||||||
|
@ -105,23 +117,36 @@
|
||||||
" else: return not(os.system('cat .config/installDone'))\n",
|
" else: return not(os.system('cat .config/installDone'))\n",
|
||||||
"\n",
|
"\n",
|
||||||
" if not(check_installDone()): \n",
|
" if not(check_installDone()): \n",
|
||||||
" for program in ['apt-fast', 'yt-dlp', 'youtube-dl', 'libboost-all-dev']: \n",
|
" # Install programs here using apt.\n",
|
||||||
|
" for program in ['apt-fast', 'youtube-dl', 'libboost-all-dev']: \n",
|
||||||
" clear()\n",
|
" clear()\n",
|
||||||
" info.title(); info.status('Please wait.')\n",
|
" info.title(); info.status('Please wait.')\n",
|
||||||
" install(program)\n",
|
" install(program)\n",
|
||||||
" clear()\n",
|
" clear()\n",
|
||||||
|
" # install programs here using pip\n",
|
||||||
|
" for program in ['yt-dlp']: \n",
|
||||||
|
" info.title(); info.status('Please wait.')\n",
|
||||||
|
" install(program, 'pip')\n",
|
||||||
|
" clear()\n",
|
||||||
|
" \n",
|
||||||
|
" check_installDone('write')\n",
|
||||||
"\n",
|
"\n",
|
||||||
"def save_video(): \n",
|
"def save_video(): \n",
|
||||||
|
"\n",
|
||||||
" import google;\n",
|
" import google;\n",
|
||||||
"\n",
|
"\n",
|
||||||
" try:\n",
|
" try:\n",
|
||||||
" info.title() \n",
|
" info.title() \n",
|
||||||
" if not(user.audio_only):\n",
|
" if not(user.audio_only):\n",
|
||||||
" if os.system('yt-dlp \"' + user.video_link + '\" --compat-options no-youtube-unavailable-videos --merge-output-format ' + user.video_format + ' --audio-format ' + user.audio_format): raise\n",
|
" if os.system('yt-dlp \"' + user.video_link + '\" --compat-options no-youtube-unavailable-videos --merge-output-format ' + user.video_format + ' --audio-format ' + user.audio_format): \n",
|
||||||
|
" cleanup()\n",
|
||||||
|
" if os.system('youtube-dl \"' + user.video_link + '\" --compat-options no-youtube-unavailable-videos --merge-output-format ' + user.video_format + ' --audio-format ' + user.audio_format): raise\n",
|
||||||
" else: \n",
|
" else: \n",
|
||||||
" if os.system('yt-dlp -x \"' + user.video_link + '\" --compat-options no-youtube-unavailable-videos --audio-format ' + user.audio_format): raise\n",
|
" if os.system('yt-dlp -x \"' + user.video_link + '\" --compat-options no-youtube-unavailable-videos --audio-format ' + user.audio_format): \n",
|
||||||
|
" cleanup()\n",
|
||||||
|
" if os.system('youtube-dl -x \"' + user.video_link + '\" --compat-options no-youtube-unavailable-videos --audio-format ' + user.audio_format): raise\n",
|
||||||
" except: \n",
|
" except: \n",
|
||||||
" clear(); info.title(); raise UnboundLocalError(formatting.font.bold + 'The YouTube video could not be downloaded. ' + formatting.clear + 'Please try again. ')\n",
|
" clear(); fail(formatting.font.bold + 'The YouTube video could not be downloaded. ' + formatting.clear + 'Please try again. ')\n",
|
||||||
" else: \n",
|
" else: \n",
|
||||||
" info.success('Video cached. ')\n",
|
" info.success('Video cached. ')\n",
|
||||||
"\n",
|
"\n",
|
||||||
|
@ -157,11 +182,14 @@
|
||||||
" audio_only = 0 #@param {type:\"slider\", min:0, max:1, step:1}\n",
|
" audio_only = 0 #@param {type:\"slider\", min:0, max:1, step:1}\n",
|
||||||
"\n",
|
"\n",
|
||||||
" if not(audio_only): \n",
|
" if not(audio_only): \n",
|
||||||
" video_format = \"mp4\" #@param [\"mp4\", \"mkv\", \"webm\"]\n",
|
" video_format = \"mkv\" #@param [\"mkv\", \"webm\"]\n",
|
||||||
" else: \n",
|
" else: \n",
|
||||||
" video_format = False\n",
|
" video_format = False\n",
|
||||||
" \n",
|
" \n",
|
||||||
" audio_format = 'm4a' #@param ['mp3', 'm4a', 'wav']\n",
|
" audio_format = 'm4a' #@param ['m4a']\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"install_required()\n",
|
||||||
"\n",
|
"\n",
|
||||||
"try: \n",
|
"try: \n",
|
||||||
" import yt_dlp;\n",
|
" import yt_dlp;\n",
|
||||||
|
@ -182,7 +210,6 @@
|
||||||
" video_title = info_dict.get('title', None)\n",
|
" video_title = info_dict.get('title', None)\n",
|
||||||
" output_format = '';\n",
|
" output_format = '';\n",
|
||||||
"\n",
|
"\n",
|
||||||
"install_required()\n",
|
|
||||||
"save_video()\n",
|
"save_video()\n",
|
||||||
"download_video()"
|
"download_video()"
|
||||||
]
|
]
|
||||||
|
@ -193,7 +220,8 @@
|
||||||
"collapsed_sections": [],
|
"collapsed_sections": [],
|
||||||
"name": "Untitled0.ipynb",
|
"name": "Untitled0.ipynb",
|
||||||
"private_outputs": true,
|
"private_outputs": true,
|
||||||
"provenance": []
|
"provenance": [],
|
||||||
|
"include_colab_link": true
|
||||||
},
|
},
|
||||||
"kernelspec": {
|
"kernelspec": {
|
||||||
"display_name": "Python 3",
|
"display_name": "Python 3",
|
||||||
|
|
Loading…
Reference in a new issue