Переглянути джерело

basic functionality complete

master
sharky555 4 роки тому
джерело
коміт
134a5ffcca
1 змінених файлів з 42 додано та 31 видалено
  1. +42
    -31
      autoupload.py

+ 42
- 31
autoupload.py Переглянути файл

@@ -40,7 +40,7 @@ def getargs():
parser.add_argument("-t", "--tags", help="Add additional tags to the upload", nargs='?')
parser.add_argument('-d', '--debug', help='Enable debug mode', action='store_true')
parser.add_argument("-dry", "--dryrun", help="Dryrun will carry out all actions other than the actual upload to JPS.", action="store_true")
parser.add_argument("-i", "--imageURL", help='Set the torrent cover URL', nargs='?')
return parser.parse_args()

# Acquire the authkey used for torrent files from upload.php
@@ -55,7 +55,6 @@ def getauthkey():
soup = BeautifulSoup(smpage.text, 'html5lib')
rel2 = str(soup.select('#content .thin .main_column .torrent_table tbody'))
authkey = re.findall('authkey=(.*)&torrent_pass=', rel2)
print(authkey)
return authkey
@@ -79,7 +78,7 @@ def createtorrent(authkey, directory, filename, releasedata):
## Format releasedata to bring a suitable torrent name.
# The reason we don't just use the directory name is because of an error in POSTING.
# POSTS do not seem to POST hangul/jp characters alongside files.
filename = f"{releasedata['artist']} - {releasedata['title']} [{releasedata['media']}-{releasedata['format']}].torrent"
filename = f"{releasedata['idols[]']} - {releasedata['title']} [{releasedata['media']}-{releasedata['audioformat']}].torrent"
#filename = filename.replace("\\","")
try:
t.write(filename)
@@ -400,7 +399,7 @@ def gatherdata(directory):
if log_available == True:
media = 'CD'
else:
media = 'WEB'
media = 'Web'

# Load Dict.json for translations
file = "json_data/dictionary.json"
@@ -461,32 +460,38 @@ def gatherdata(directory):
releasedata['submit'] = 'true'

# List of accepted upload types
accepted_types = ['Album', 'Single']
accepted_types = ['Album', 'Single', 'EP']
# If type errors then we ask for user input
try:
releasedata['type'] = translate(tags['GROUPING'][0], "release_types")[0]
except TypeError:
releasedata['type'] = input("\n" + "_" * 100 + "\nGrouping is empty or has received an error, please enter manually (Album/Single)\n")
releasedata['type'] = input("\n" + "_" * 100 + "\nGrouping is empty or has received an error, please enter manually (Album/Single/EP)\n")

# If type is still not in accepted_types we ask for user input again and do not break loop until correct
if releasedata['type'] not in accepted_types:
while True:
releasedata['type'] = input("\n" + "_" * 100 + "\nGrouping tag did not return an album type, please enter manually (Album/Single)\n")
releasedata['type'] = input("\n" + "_" * 100 + "\nGrouping tag did not return an album type, please enter manually (Album/Single/EP)\n")

if releasedata['type'] not in accepted_types:
continue
else:
break

# SM uses numbers for it's types
if releasedata['type'] == "Album":
releasedata['type'] = 0
elif releasedata['type'] == "Single":
releasedata['type'] = 1
else: # EP type
releasedata['type'] = 2

releasedata['title'] = tags['ALBUM'][0]
releasedata['artist'] = unique_album_artists
releasedata['idols[]'] = unique_album_artists
# If the value of album artist and artist is the same, we don't need to POST original artist.
if unique_album_artists != unique_track_artists:
releasedata['artistjp'] = unique_track_artists
releasedata['artist_jp'] = unique_track_artists
#re.sub removes any date separators, jps doesn't accept them
releasedata['releasedate'] = re.sub(r"[^0-9]", "", tags['DATE'])
releasedata['format'] = format
releasedata['year'] = re.sub(r"[^0-9]", "", tags['DATE'])
releasedata['audioformat'] = format
releasedata['bitrate'] = bitrate
releasedata['media'] = media
releasedata['album_desc'] = album_description
@@ -506,19 +511,19 @@ def gatherdata(directory):
print(f"{releasedata['title']} < English = {en}")
if en == False:
input_english_title = input("\n" + "_" * 100 + "\nKorean/Japanese Detected. Please enter the romaji/english title:\n")
# Create new key called titlejp and assign the old title to it
releasedata['titlejp'] = releasedata['title']
# Create new key called title_jp and assign the old title to it
releasedata['title_jp'] = releasedata['title']
# Replace title with the user input.
releasedata['title'] = input_english_title

en = detectlanguage(releasedata['artist'])
en = detectlanguage(releasedata['idols[]'])
if debug:
print(f"{releasedata['artist']} < English = {en}")
print(f"{releasedata['idols[]']} < English = {en}")
if en == False:
input_english_artist = input("\n" + "_" * 100 + "\nKorean/Japanese Detected. Please enter the romaji/english artist name:\n")
# Create new key called titlejp and assign the old title to it
# Replace title with the user input.
releasedata['artist'] = input_english_artist
releasedata['idols[]'] = input_english_artist

return releasedata

@@ -545,14 +550,17 @@ def detectlanguage(string):

return en

def uploadtorrent(torrent, releasedata):

languages = ('Japanese', 'English', 'Korean', 'Chinese', 'Vietnamese')
def uploadtorrent(torrent, imageURL, releasedata):
# POST url.
uploadurl = "https://sugoimusic.me/upload.php"

# Dataset containing all of the information obtained from our FLAC files.
data = releasedata
data['image'] = imageURL
if not dryrun:
data['auth'] = authkey

if debug:
print('_' * 100)
@@ -572,7 +580,7 @@ def uploadtorrent(torrent, releasedata):
# If dryrun argument has not ben passed we will POST the results to JPopSuki.
if dryrun != True:
JPSres = sm.retrieveContent(uploadurl, "post", data, postDataFiles)
print('\nUpload POSTED')
print('\nUpload POSTED. It may take a moment for this upload to appear on SugoiMusic.')

## TODO Filter through JPSres.text and create error handling based on responses
#print(JPSres.text)
@@ -645,11 +653,11 @@ if __name__ == "__main__":
args = getargs()

# TODO consider calling args[] directly, we will then not need this line
dryrun = freeleech = tags = directory = debug = None
dryrun = freeleech = tags = directory = debug = imageURL = None

directory = args.directory
additional_tags = args.tags
if args.dryrun:
dryrun = True

@@ -659,6 +667,9 @@ if __name__ == "__main__":
if args.freeleech:
freeleech = True

if args.imageURL:
imageURL = args.imageURL

# Load login credentials from JSON and use them to create a login session.
with open(f'json_data/config.json') as f:
cfg = json.load(f)
@@ -668,7 +679,7 @@ if __name__ == "__main__":
successStr = "Enabled users"
passkey = cfg['credentials']['passkey']
annouceurl = "https://tracker.sugoimusic.me:24601/"+passkey+"/announce"
print(annouceurl)
# j is an object which can be used to make requests with respect to the loginsession
sm = smpy.MyLoginSession(loginUrl, loginData, loginTestUrl, successStr, debug=args.debug)
# Acquire authkey
@@ -686,7 +697,7 @@ if __name__ == "__main__":
torrentfile = createtorrent(annouceurl, directory, folder_name, releasedata)

# Upload torrent to JPopSuki
uploadtorrent(torrentfile, releasedata)
uploadtorrent(torrentfile, imageURL, releasedata)

# Setting variable for watch/download folders
ftp_watch_folder = cfg['ftp_prefs']['ftp_watch_folder']
@@ -694,9 +705,9 @@ if __name__ == "__main__":
local_watch_folder = cfg['local_prefs']['local_watch_folder']
local_downloads_folder = cfg['local_prefs']['local_downloads_folder']

if cfg['ftp_prefs']['enable_ftp']:
ftp_transfer(fileSource=torrentfile, fileDestination=ftp_downloads_folder, directory=directory, folder_name=folder_name, watch_folder=ftp_watch_folder)
if cfg['local_prefs']['add_to_watch_folder'] or cfg['local_prefs']['add_to_downloads_folder']:
localfileorganization(torrent=torrentfile, directory=directory, watch_folder=local_watch_folder, downloads_folder=local_downloads_folder)
if not dryrun:
if cfg['ftp_prefs']['enable_ftp']:
ftp_transfer(fileSource=torrentfile, fileDestination=ftp_downloads_folder, directory=directory, folder_name=folder_name, watch_folder=ftp_watch_folder)
if cfg['local_prefs']['add_to_watch_folder'] or cfg['local_prefs']['add_to_downloads_folder']:
localfileorganization(torrent=torrentfile, directory=directory, watch_folder=local_watch_folder, downloads_folder=local_downloads_folder)

Завантаження…
Відмінити
Зберегти