예제 #1
0
def download_from_imgur(link, post):
    MAX_ALBUM_LEN = 20 # only download full albums if >20 total images
    try:
        downloader = ImgurDownloader(link)
        if(downloader.num_images() <= MAX_ALBUM_LEN):
            # Group images by redditor name
            album_name = post.author.name
            downloader.save_images("./saved/images/{}".format(album_name))
    except:
        print("Error saving Imgur image: {}".format(link))
예제 #2
0
def imgurDownload(url, user):
  vids = [ "gif", "gifv", "mp4" ]
  try:
    downloader = ImgurDownloader(url)
    if downloader.num_images() == 1:
      verifyCreateDir(user, "images")
      if any(x in url for x in vids) or any(x in str(downloader.list_extensions()) for x in vids):
        dltype = "videos"
      else:
        dltype = "images"
      if downloader.imageIDs[0][0] == "":
        filename = url.split(r'/')[-1]
      else:
        if "gif" in downloader.imageIDs[0][1]:
          filename = downloader.imageIDs[0][0] + ".mp4"
        else:
          filename = downloader.imageIDs[0][0] + downloader.imageIDs[0][1]
      url = "https://i.imgur.com/" + filename
      downloadFile(url, filename, user, dltype)
    elif downloader.num_images() == 0:
      logging.info("IMGUR_EMPTY_ALBUM: {}".format(url))
      return
    else:
      if not os.path.exists(user + "/albums/" + downloader.get_album_key()):
        try:
          downloader.save_images(user + "/albums/" + downloader.get_album_key())
          printDownload(user, "albums", downloader.get_album_key() + "/all.html")
          allhtml = open(user + "/albums/" + downloader.get_album_key() + "/all.html", "w")
          allhtml.write("<style>\n")
          allhtml.write(".fixed-ratio-resize { /* basic responsive img class=\"fixed-ratio-resize\" */\n")
          allhtml.write("        max-width: 100%;\n")
          allhtml.write("        height: auto;\n")
          allhtml.write("        width: auto\9; /* IE8 */\n")
          allhtml.write("}\n")
          allhtml.write("</style>\n")
          allhtml.write("\n")
          allhtml.write("<body text=\"#ffffff\" bgcolor=\"#000000\">")
          for filename in sorted(os.listdir(user + "/albums/" + downloader.get_album_key())):
            if "image" in subprocess.run(['file','--brief','--mime-type', user + "/albums/" + downloader.get_album_key() + "/" + filename], stdout=subprocess.PIPE).stdout.decode("utf-8"):
              allhtml.write("<a href=" + filename + "><img class=\"fixed-ratio-resize\" src=" + filename + "></a><br>" + filename + "<hr>\n")
          allhtml.write("</body>")
          allhtml.close()
          logging.info("IMGUR_ALBUM_DOWNLOAD: {}".format(url))
        except Exception as e:
          logging.info("IMGUR_ALBUM_EXCEPTION: {}".format(e))
          pass
      else:
        logging.info("ALBUM_EXISTS: {}".format(user + "/albums/" + downloader.get_album_key()))
  except Exception as e:
    logging.info("IMGUR_EXCEPTION: {}".format(e))
    pass