Advertisement
Guest User

Untitled

a guest
May 27th, 2015
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. import json
  3. import sys
  4. import zipfile
  5. import glob
  6. from os import path
  7. import os
  8. import re
  9. import traceback
  10.  
  11. from robobrowser import RoboBrowser
  12.  
  13. modFP = open("mod.json", "r")
  14. modInfo = json.load(modFP)
  15. modFP.close()
  16. if "curseforge" not in modInfo["url"]:
  17. print("Url is not on curseforge")
  18. sys.exit(1)
  19.  
  20. browser = RoboBrowser(history=True)
  21. browser.open(modInfo["url"] + "/files")
  22.  
  23. nextPage = True
  24. while nextPage:
  25. print("Next page!")
  26. files = browser.select("tr.project-file-list-item")
  27. for file in files:
  28. nameLink = file.select(".project-file-name-container > a")[0]
  29. downloadLink = file.select(".project-file-download-button > a")[0]
  30. if not path.exists(nameLink.text):
  31. print("Downloading " + nameLink.text + "...")
  32. browser.follow_link(downloadLink)
  33. if not browser.response.headers["Content-Type"] == "text/html":
  34. f = open(re.sub(r"^(.+?)\.?(zip|jar)?$", r'\1.jar', nameLink.text), "wb")
  35. f.write(browser.response.content)
  36. else:
  37. print("Download error.")
  38. browser.back()
  39.  
  40. links = browser.select("li.b-pagination-item > a[rel=\"next\"]")
  41. nextPage = len(links) > 0
  42. if nextPage:
  43. browser.follow_link(links[0])
  44.  
  45. modInfo['versions'] = {}
  46.  
  47. for file in glob.glob("*.jar"):
  48. with zipfile.ZipFile(file) as mod:
  49. try:
  50. with mod.open("mcmod.info") as mcmod:
  51. info = json.loads(mcmod.read().decode('utf-8'))[0]
  52. modInfo['versions'][info['version']] = {}
  53. modInfo['versions'][info['version']]['file'] = file
  54. modInfo['versions'][info['version']]['minecraft'] = [info['mcversion']]
  55.  
  56. except Exception: # MEH
  57. try:
  58. with mod.open("cccmod.info") as mcmod:
  59. info = json.loads(mcmod.read().decode('utf-8').replace("\n",""))[0]
  60. modInfo['versions'][info['version']] = {}
  61. modInfo['versions'][info['version']]['file'] = file
  62. modInfo['versions'][info['version']]['minecraft'] = [info['mcversion']]
  63. except Exception: # MEH
  64. try:
  65. with mod.open("neimod.info") as mcmod:
  66. info = json.loads(mcmod.read().decode('utf-8').replace("\n",""))[0]
  67. modInfo['versions'][info['version']] = {}
  68. modInfo['versions'][info['version']]['file'] = file
  69. modInfo['versions'][info['version']]['minecraft'] = [info['mcversion']]
  70. except Exception: # MEH
  71. err=traceback.format_exc()
  72. print("Error on file " + file)
  73. #print(err)
  74.  
  75. with open("mod.json", "w") as fp:
  76. json.dump(modInfo, fp, sort_keys=True, indent=4)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement