apkdroid.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import requests
  2. import logging
  3. import re
  4. import os
  5. import shutil
  6. repo_url = "https://fdroid.lsd.cat"
  7. repo_name = "lsd.cat Proprietary Apps Repo"
  8. repo_icon = "fdroid-icon.png"
  9. repo_description = """
  10. This is a repository to install proprietary apps via fdroid
  11. """
  12. repo_original_url = "https://MyFirstFDroidRepo.org/fdroid/repo"
  13. repo_original_name = "My First F-Droid Repo Demo"
  14. repo_original_icon = "fdroid-icon.png"
  15. repo_original_description = """
  16. This is a repository of apps to be used with F-Droid. Applications in this
  17. repository are either official binaries built by the original application
  18. developers, or are binaries built from source by the admin of f-droid.org
  19. using the tools on https://gitlab.com/u/fdroid.
  20. """
  21. keystore = None
  22. keystorepass = None
  23. repo = 'fdroid/'
  24. urls = [
  25. "https://www.whatsapp.com/android/",
  26. "https://help.netflix.com/en/node/57688",
  27. "https://download.spotify.com/android/SpotifyAndroid.apk",
  28. "https://updates.signal.org/android/latest.json",
  29. "https://wire.com/en/download/"
  30. ]
  31. def get_apk(baseurl):
  32. page = requests.get(baseurl)
  33. if page.headers['content-type'] == 'application/vnd.android.package-archive':
  34. name = baseurl.rsplit('/', 1)[-1]
  35. logging.info('Downloading ' + name)
  36. with open('repo/' + name, 'wb') as handle:
  37. for block in page.iter_content(1024):
  38. handle.write(block)
  39. else:
  40. url = re.findall('https\:\/\/(.*)\.apk', page.text)[0]
  41. get_apk('https://' + url + '.apk')
  42. def check_env(repo):
  43. if not shutil.which('fdroid'):
  44. logging.error('Please install fdroidserver')
  45. sys.exit(1)
  46. if os.path.isdir(repo) is False:
  47. try:
  48. os.mkdir(repo)
  49. except:
  50. logging.error('Cannot create repository directory')
  51. if ('repo' or 'config.py') not in os.listdir(repo):
  52. logging.info('Initializing a new repository')
  53. os.chdir(repo)
  54. os.system('fdroid init')
  55. with open('config.py', 'r') as file :
  56. filedata = file.read()
  57. filedata = filedata.replace(repo_original_url, repo_url)
  58. filedata = filedata.replace(repo_original_name, repo_name)
  59. filedata = filedata.replace(repo_original_description, repo_description)
  60. with open('config.py', 'w') as file:
  61. file.write(filedata)
  62. else:
  63. os.chdir(repo)
  64. logging.info('Repo already exists')
  65. # TODO import keystore and check keys
  66. def build(repo):
  67. os.system('fdroid update -c')
  68. check_env(repo)
  69. for i in urls:
  70. get_apk(i)
  71. build(repo)