Я создал свой собственный класс для извлечения метаданных на основе модифицированной версии streamscraper . Используйте этот jar (streamscraper), этот jar (jsoup) и этот класс для извлечения метаданных. Интерфейс похож на MediaMetadataRetriever:
ShoutCastMetadataRetriever smr = new ShoutCastMetadataRetriever();
smr.setDataSource();
String artist = smr.extractMetadata(ShoutCastMetadataRetriever.METADATA_KEY_ARTIST);
String title = smr.extractMetadata(ShoutCastMetadataRetriever.METADATA_KEY_TITLE);
Я не верю, что метаданные SHOUTcast поддерживают обложку альбома, поэтому вы не сможете ее восстановить.
Вы можете передать в функцию несколько параметров.
def printBill(bill)
становится:
def printBill(bill,hours):
, и вы называете его с помощью:
printBill(bill,hours)
Вам также нужно будет передать его getSavings таким же образом.
Вам нужно потратить часы на каждую функцию, которая должна ее использовать, также, когда вы ВОЗВРАЩАЕТЕ что-то, ей нужно место для возврата. Итак, вы говорили, что часы были < 10, верните 9.95, но когда вы говорите, что он возвращает, он отправляет код обратно в место, где он был вызван, вы не присваиваете его переменной, поэтому по умолчанию для счета устанавливается $ 1. Вот обновленный код для работы
#Bill for Package A
def getPackageA(hours):
if hours < 10:
return 9.95 #Cost of Package A
else:
return (hours-10)*2 + 9.95
#Bill for Package B
def getPackageB(hours):
if hours < 20:
return 13.95 #Cost of Package B
else:
return (hours - 20) + 13.95
#Bill for Package C
def getPackageC():
return 19.95 #Cost of Package C
#Print Bill and savings
def printBill(bill, hours):
if (bill != 0):
print("Your monthly bill is $", format(bill, '.2f'), sep='')
getSavings(bill, hours)
print('\n')
#Checks and display savings if applicable
def getSavings(bill, hours):
if bill > getPackageA(hours):
print("If you had package A, you'd save $",\
format(bill - getPackageA(hours),'.2f'), sep='')
if bill > getPackageB(hours):
print("If you had package B, you'd save $",\
format(bill - getPackageB(hours),'.2f'), sep='')
if bill > getPackageC():
print("If you had package C, you'd save $",\
format(bill - getPackageC(), '.2f'), sep='')
def main():
bill = 1
#Asks user to enter choice of package and hours used
packageChoice = str(input("Enter package purchased (A, B, or C): "))
hours = int(input("Enter the number of hours used: "))
if packageChoice in ('a', 'A') :
bill = getPackageA(hours)
elif packageChoice.lower() == 'b':
bill = getPackageB(hours)
elif packageChoice.upper() == 'C':
bill = getPackageC()
else:
print("Package choice must be A, B, or C.")
printBill(bill, hours)
main()
Я также отредактировал вашу функцию main (), чтобы показать вам различные способы проверки ответов. Вам также не нужно заключать вещи в скобки в Python в операторах IF.
Чтобы ответить на ваш вопрос, вы можете просто сделать:
bill = 1
bill += getPackage() # call function and add return value to total bill
printBill(bill)