BotZoneV3.2
I updated the code with BotZone V3.2 because I found a newer ver
This commit is contained in:
parent
7b562bdb14
commit
720d435c05
34 changed files with 1637 additions and 8760 deletions
223
BotZoneV2.7.3.py
223
BotZoneV2.7.3.py
|
|
@ -1,223 +0,0 @@
|
|||
from colorama import init, Fore, Back, Style
|
||||
import commands
|
||||
import config
|
||||
import sys
|
||||
import os
|
||||
import webbrowser
|
||||
|
||||
|
||||
# Coloroma autoreset
|
||||
init(autoreset=True)
|
||||
if not os.path.isdir("Saves"):
|
||||
try:
|
||||
os.mkdir('Saves')
|
||||
os.mkdir('Saves/ios')
|
||||
os.mkdir('Saves/android')
|
||||
os.mkdir('Saves/Jp')
|
||||
os.mkdir('Saves/Jp/ios')
|
||||
os.mkdir('Saves/Jp/android')
|
||||
os.mkdir('Saves/fresh')
|
||||
os.mkdir('Saves/fresh/ios')
|
||||
os.mkdir('Saves/fresh/android')
|
||||
except:
|
||||
print(Fore.RED + Style.BRIGHT + 'Unable to create saves file')
|
||||
|
||||
while True:
|
||||
|
||||
# Decide which client to use.
|
||||
print(' ')
|
||||
print(" ___ __ ____ ")
|
||||
print(" / _ )___ / //_ / ___ ___ ___ ")
|
||||
print(" / _ / _ \/ __// /_/ _ \/ _ \/ -_)")
|
||||
print("/____/\___/\__//___/\___/_//_/\__/")
|
||||
|
||||
print('Choose a version')
|
||||
print('---------------------------------')
|
||||
print(' ')
|
||||
while True:
|
||||
print('Which version? (' + 'Jp: 1 ' + 'or ' 'Global: 2' ')',end='')
|
||||
client = input(" ")
|
||||
if client.lower() == '1':
|
||||
config.client = 'japan'
|
||||
while True:
|
||||
print(" ___ __ ____ ")
|
||||
print(" / _ )___ / //_ / ___ ___ ___ ")
|
||||
print(" / _ / _ \/ __// /_/ _ \/ _ \/ -_)")
|
||||
print("/____/\___/\__//___/\___/_//_/\__/")
|
||||
print("-----------------------------------")
|
||||
print("Possible by SomeNi")
|
||||
print(" ")
|
||||
print("[ Status ] -> You're curently on JP")
|
||||
print(" ")
|
||||
print("[ 0 ] -> New Account")
|
||||
print("[ 1 ] -> Transfer Account")
|
||||
print("[ 2 ] -> Load From Save")
|
||||
print("[ 3 ] -> Daily Logins")
|
||||
print("[ 4 ] -> Update Both DataBase")
|
||||
print("[ 5 ] -> BotZone Discord Link")
|
||||
print("[ 6 ] -> Update Glb DataBase")
|
||||
print("[ 7 ] -> Update JP DataBase")
|
||||
print(" ")
|
||||
|
||||
command = input('Enter your choice: ')
|
||||
if command == '0':
|
||||
print(' ')
|
||||
config.identifier = commands.signup()
|
||||
commands.Jp_save_account()
|
||||
config.access_token, config.secret = commands.signin(config.identifier)
|
||||
commands.tutorial()
|
||||
commands.daily_login()
|
||||
break
|
||||
elif command == '1':
|
||||
print(' ')
|
||||
commands.Jp_transfer_account()
|
||||
commands.daily_login()
|
||||
break
|
||||
elif command == '2':
|
||||
print(' ')
|
||||
commands.Jp_load_account()
|
||||
commands.daily_login()
|
||||
commands.accept_gifts()
|
||||
commands.accept_missions()
|
||||
break
|
||||
elif command == '3':
|
||||
print('')
|
||||
commands.Jp_bulk_daily_logins()
|
||||
break
|
||||
elif command == '4':
|
||||
print('')
|
||||
commands.db_download()
|
||||
elif command == '6':
|
||||
commands.glb_db_download()
|
||||
#elif command == '7':
|
||||
# commands.jp_db_download()
|
||||
elif command == '5':
|
||||
webbrowser.open(commands.discordurl, new=0, autoraise=True)
|
||||
elif command == 'exit':
|
||||
exit()
|
||||
else:
|
||||
print(Fore.RED + Style.BRIGHT + "Command not understood")
|
||||
|
||||
# User commands.
|
||||
while True:
|
||||
print('---------------------------------')
|
||||
print(
|
||||
Fore.CYAN + Style.BRIGHT + "Type" + Fore.YELLOW + Style.BRIGHT + " 'help'" + Fore.CYAN + Style.BRIGHT + " to view all commands.")
|
||||
|
||||
# Set up comma separated chain commands. Handled via stdin
|
||||
try:
|
||||
command = input()
|
||||
except:
|
||||
sys.stdin = sys.__stdin__
|
||||
command = input()
|
||||
|
||||
if command == 'exit':
|
||||
break
|
||||
# Pass command to command executor and handle keyboard interrupts.
|
||||
try:
|
||||
commands.user_command_executor(command)
|
||||
except KeyboardInterrupt:
|
||||
print(Fore.CYAN + Style.BRIGHT + 'User interrupted process.')
|
||||
except Exception as e:
|
||||
print(Fore.RED + Style.BRIGHT + repr(e))
|
||||
break
|
||||
elif client.lower() == '2':
|
||||
config.client = 'global'
|
||||
print(' ')
|
||||
while True:
|
||||
print(" ___ __ ____ ")
|
||||
print(" / _ )___ / //_ / ___ ___ ___ ")
|
||||
print(" / _ / _ \/ __// /_/ _ \/ _ \/ -_)")
|
||||
print("/____/\___/\__//___/\___/_//_/\__/")
|
||||
print("-----------------------------------")
|
||||
|
||||
print(" ")
|
||||
print("[ Status ] -> You're curently on Global")
|
||||
print(" ")
|
||||
print("[ 0 ] -> New Account")
|
||||
print("[ 1 ] -> Transfer Account")
|
||||
print("[ 2 ] -> Load From Save")
|
||||
print("[ 3 ] -> Load Fresh Account")
|
||||
print("[ 4 ] -> New Fresh Account")
|
||||
print("[ 5 ] -> Update Both DataBase")
|
||||
print("[ 6 ] -> BotZone Discord Link")
|
||||
print("[ 7 ] -> Update Glb DataBase")
|
||||
print("[ 8 ] -> Update JP DataBase")
|
||||
print(" ")
|
||||
|
||||
command = input('Enter your choice: ')
|
||||
if command == '0':
|
||||
print(' ')
|
||||
config.identifier = commands.signup()
|
||||
commands.save_account()
|
||||
config.access_token, config.secret = commands.signin(config.identifier)
|
||||
commands.tutorial()
|
||||
commands.daily_login()
|
||||
break
|
||||
elif command == '1':
|
||||
print(' ')
|
||||
commands.transfer_account()
|
||||
commands.daily_login()
|
||||
break
|
||||
elif command == '2':
|
||||
print(' ')
|
||||
commands.load_account()
|
||||
commands.daily_login()
|
||||
commands.accept_gifts()
|
||||
commands.accept_missions()
|
||||
break
|
||||
elif command == '4':
|
||||
print(' ')
|
||||
config.identifier = commands.signup()
|
||||
commands.fresh_save_account()
|
||||
config.access_token, config.secret = commands.signin(config.identifier)
|
||||
commands.tutorial()
|
||||
commands.daily_login()
|
||||
break
|
||||
elif command == '3':
|
||||
print(' ')
|
||||
commands.fresh_load_account()
|
||||
commands.daily_login()
|
||||
commands.accept_gifts()
|
||||
commands.accept_missions()
|
||||
break
|
||||
elif command == '5':
|
||||
print(' ')
|
||||
commands.db_download()
|
||||
elif command == '7':
|
||||
commands.glb_db_download()
|
||||
# elif command == '8':
|
||||
# commands.jp_db_download()
|
||||
elif command == '6':
|
||||
webbrowser.open(commands.discordurl, new=0, autoraise=True)
|
||||
elif command == 'exit':
|
||||
exit()
|
||||
else:
|
||||
print(Fore.RED + Style.BRIGHT + "Command not understood")
|
||||
|
||||
# User commands.
|
||||
while True:
|
||||
print('---------------------------------')
|
||||
print(
|
||||
"Type" + " 'help'" + " to view all commands.")
|
||||
|
||||
# Set up comma separated chain commands. Handled via stdin
|
||||
try:
|
||||
command = input()
|
||||
except:
|
||||
sys.stdin = sys.__stdin__
|
||||
command = input()
|
||||
|
||||
if command == 'exit':
|
||||
break
|
||||
# Pass command to command executor and handle keyboard interrupts.
|
||||
try:
|
||||
commands.user_command_executor(command)
|
||||
except KeyboardInterrupt:
|
||||
print(Fore.CYAN + Style.BRIGHT + 'User interrupted process.')
|
||||
except Exception as e:
|
||||
print(Fore.RED + Style.BRIGHT + repr(e))
|
||||
|
||||
break
|
||||
else:
|
||||
print(Fore.RED + Style.BRIGHT + "Command not understood")
|
||||
976
JAMIRU_stage_id.txt
Executable file
976
JAMIRU_stage_id.txt
Executable file
|
|
@ -0,0 +1,976 @@
|
|||
ID: 999999 Name: Tuning Quest Area: 999
|
||||
ID: 946005 Name: PHY Hidden Potential Event Area: 946
|
||||
ID: 946004 Name: STR Hidden Potential Event Area: 946
|
||||
ID: 946003 Name: INT Hidden Potential Event Area: 946
|
||||
ID: 946002 Name: TEQ Hidden Potential Event Area: 946
|
||||
ID: 946001 Name: AGL Hidden Potential Event Area: 946
|
||||
ID: 944001 Name: PHY Hidden Potential Event Area: 944
|
||||
ID: 943001 Name: STR Hidden Potential Event Area: 943
|
||||
ID: 942001 Name: INT Hidden Potential Event Area: 942
|
||||
ID: 941001 Name: TEQ Hidden Potential Event Area: 941
|
||||
ID: 940001 Name: AGL Hidden Potential Event Area: 940
|
||||
ID: 711003 Name: Dragon Stone Stage Area: 711
|
||||
ID: 711002 Name: Potential Orb Stage Area: 711
|
||||
ID: 711001 Name: Zeni Stage Area: 711
|
||||
ID: 710020 Name: "Potara" Only Area: 710
|
||||
ID: 710019 Name: "Majin Buu Saga" Only Area: 710
|
||||
ID: 710018 Name: "Realm of Gods" Only Area: 710
|
||||
ID: 710017 Name: "Resurrected Warriors" Only Area: 710
|
||||
ID: 710016 Name: "Hybrid Saiyans" Only Area: 710
|
||||
ID: 710015 Name: "Peppy Gals" Only Area: 710
|
||||
ID: 710014 Name: "Shadow Dragon Saga" Only Area: 710
|
||||
ID: 710013 Name: "Fusion" Only Area: 710
|
||||
ID: 710012 Name: Extreme Class Only Area: 710
|
||||
ID: 710011 Name: Super Class Only Area: 710
|
||||
ID: 710010 Name: [VS. Super PHY] Super Battle Road Area: 710
|
||||
ID: 710009 Name: [VS. Extreme PHY] Super Battle Road Area: 710
|
||||
ID: 710008 Name: [VS. Super STR] Super Battle Road Area: 710
|
||||
ID: 710007 Name: [VS. Extreme STR] Super Battle Road Area: 710
|
||||
ID: 710006 Name: [VS. Super INT] Super Battle Road Area: 710
|
||||
ID: 710005 Name: [VS. Extreme INT] Super Battle Road Area: 710
|
||||
ID: 710004 Name: [VS. Super TEQ] Super Battle Road Area: 710
|
||||
ID: 710003 Name: [VS. Extreme TEQ] Super Battle Road Area: 710
|
||||
ID: 710002 Name: [VS. Super AGL] Super Battle Road Area: 710
|
||||
ID: 710001 Name: [VS. Extreme AGL] Super Battle Road Area: 710
|
||||
ID: 704003 Name: ?????? Area: 704
|
||||
ID: 704002 Name: ??????? Area: 704
|
||||
ID: 704001 Name: ?????? Area: 704
|
||||
ID: 703004 Name: Final Stage Area: 703
|
||||
ID: 703003 Name: Semifinal Stage Area: 703
|
||||
ID: 703002 Name: 2nd Preliminary Stage Area: 703
|
||||
ID: 703001 Name: Preliminary Stage Area: 703
|
||||
ID: 702003 Name: Final Stage Area: 702
|
||||
ID: 702002 Name: Semifinal Stage Area: 702
|
||||
ID: 702001 Name: Preliminary Stage Area: 702
|
||||
ID: 701007 Name: Dokkan Event Boss Rush 7 Area: 701
|
||||
ID: 701006 Name: Dokkan Event Boss Rush 6 Area: 701
|
||||
ID: 701005 Name: Dokkan Event Boss Rush 5 Area: 701
|
||||
ID: 701004 Name: Dokkan Event Boss Rush 4 Area: 701
|
||||
ID: 701003 Name: Dokkan Event Boss Rush 3 Area: 701
|
||||
ID: 701002 Name: Dokkan Event Boss Rush 2 Area: 701
|
||||
ID: 701001 Name: Dokkan Event Boss Rush 1 Area: 701
|
||||
ID: 604003 Name: Super Saiyan Awakens Area: 604
|
||||
ID: 604002 Name: Vegeta's Confidence Area: 604
|
||||
ID: 604001 Name: Prince's Pride Area: 604
|
||||
ID: 603003 Name: Protector of Future Peace Area: 603
|
||||
ID: 603002 Name: A Gift from Time Traveling Area: 603
|
||||
ID: 603001 Name: "Hope" Returns Area: 603
|
||||
ID: 602004 Name: [VS. Extreme AGL] Summit of the Universe Area: 602
|
||||
ID: 602003 Name: [VS. Extreme STR] Summit of the Universe Area: 602
|
||||
ID: 602002 Name: True Fear Area: 602
|
||||
ID: 602001 Name: Defying the Emperor Area: 602
|
||||
ID: 601004 Name: [VS. Super PHY] Transcended Warrior Area: 601
|
||||
ID: 601003 Name: [VS. Super TEQ] Transcended Warrior Area: 601
|
||||
ID: 601002 Name: The Real Battle Area: 601
|
||||
ID: 601001 Name: Challenging the Legend Area: 601
|
||||
ID: 552001 Name: Go! Warriors of the New Generation! Area: 552
|
||||
ID: 551001 Name: Ever-Evolving Prince Area: 551
|
||||
ID: 550001 Name: Full-Power Showdown! Area: 550
|
||||
ID: 549001 Name: The Omnipotent Saiyan Warrior Area: 549
|
||||
ID: 548001 Name: The Greatest Saiyan Adversary Area: 548
|
||||
ID: 547001 Name: The Deadliest Assassin Area: 547
|
||||
ID: 546001 Name: Infinite Mechanical Power Area: 546
|
||||
ID: 545001 Name: Ever-Evolving Evil Area: 545
|
||||
ID: 544001 Name: Ever-Evolving Power Area: 544
|
||||
ID: 543001 Name: Superb Ranger Area: 543
|
||||
ID: 542001 Name: Transcend Super Saiyan 4! Area: 542
|
||||
ID: 541001 Name: A Heart Filled With Hope Area: 541
|
||||
ID: 540002 Name: Confronting the Strongest of All Universes Area: 540
|
||||
ID: 540001 Name: Jiren the Grey Area: 540
|
||||
ID: 539001 Name: Arrival of the Universe-Crusher Area: 539
|
||||
ID: 538001 Name: Kaboom! Ultra Instinct Area: 538
|
||||
ID: 537001 Name: The Ultimate Pair of the Present World! Area: 537
|
||||
ID: 536001 Name: The Ultimate Pair of the Otherworld! Area: 536
|
||||
ID: 535002 Name: Phantom Majin Resurrected! Area: 535
|
||||
ID: 535001 Name: Mysterious Hero Area: 535
|
||||
ID: 534001 Name: The Unknown Battle Area: 534
|
||||
ID: 533002 Name: The True Golden Frieza Area: 533
|
||||
ID: 533001 Name: Evil Emperor: 24-Hour Revival Area: 533
|
||||
ID: 532001 Name: The Ultimate Super Gogeta Area: 532
|
||||
ID: 531001 Name: All-Time Nastiest Evolution Area: 531
|
||||
ID: 530001 Name: Hell's Ultimate Weapon Area: 530
|
||||
ID: 529001 Name: The Saiyan Veiled with Mysteries Area: 529
|
||||
ID: 528001 Name: Mighty Warrior: 24-Hour Revival Area: 528
|
||||
ID: 527001 Name: Battle of the Strongest Area: 527
|
||||
ID: 526002 Name: The Unrivaled Super Saiyan 4! Area: 526
|
||||
ID: 526001 Name: The Crimson Flash! Super Saiyan 4! Area: 526
|
||||
ID: 525002 Name: The Supreme Super Saiyan 4! Area: 525
|
||||
ID: 525001 Name: The Scarlet Hero! Super Saiyan 4! Area: 525
|
||||
ID: 524002 Name: Battle for Honor and Pride Area: 524
|
||||
ID: 524001 Name: The Epic Battle Begins!! Area: 524
|
||||
ID: 523002 Name: Last Judgment...Or Last Hope Area: 523
|
||||
ID: 523001 Name: The Ultimate Power of a God Area: 523
|
||||
ID: 522001 Name: A New Hope Area: 522
|
||||
ID: 521001 Name: Bespectacled Super Girl Area: 521
|
||||
ID: 520002 Name: Searing Rose-Colored Fury Area: 520
|
||||
ID: 520001 Name: Rose-Tinted Plot Area: 520
|
||||
ID: 519002 Name: Sublime Blue! Area: 519
|
||||
ID: 519001 Name: Fusion in Blue Area: 519
|
||||
ID: 518003 Name: Black Harbinger of Destruction Area: 518
|
||||
ID: 518002 Name: Dark Nightmare Area: 518
|
||||
ID: 518001 Name: A Mysterious Dark Foe Area: 518
|
||||
ID: 517003 Name: Countdown to the Crash Area: 517
|
||||
ID: 517002 Name: The Strongest Shadow Dragon Area: 517
|
||||
ID: 517001 Name: The Unprecedented Foe Area: 517
|
||||
ID: 516001 Name: Emperor's Obsession Area: 516
|
||||
ID: 515003 Name: The Strongest Majin is Born! Area: 515
|
||||
ID: 515002 Name: Horrendous Majin's Onslaught Area: 515
|
||||
ID: 515001 Name: Majin's Transformation Area: 515
|
||||
ID: 514001 Name: Ceaseless Combat Area: 514
|
||||
ID: 513003 Name: One Powerful Super Fusion! Area: 513
|
||||
ID: 513002 Name: Super Gotenks! Area: 513
|
||||
ID: 513001 Name: Fusion of Hope! Area: 513
|
||||
ID: 512003 Name: Ultimate Splendor Area: 512
|
||||
ID: 512002 Name: Meet Vegito Area: 512
|
||||
ID: 512001 Name: Miraculous Fusion Area: 512
|
||||
ID: 511002 Name: God of Destruction's Wrath Area: 511
|
||||
ID: 511001 Name: God of Destruction's Whim Area: 511
|
||||
ID: 510002 Name: The Most Powerful Blow Area: 510
|
||||
ID: 510001 Name: Saiyan's Pride Area: 510
|
||||
ID: 509002 Name: Yamcha's Premonition Area: 509
|
||||
ID: 509001 Name: Yamcha is Beaten! Area: 509
|
||||
ID: 508003 Name: The Ultimate Form Area: 508
|
||||
ID: 508002 Name: The Extreme Force Area: 508
|
||||
ID: 508001 Name: Unawakened Ability Area: 508
|
||||
ID: 507002 Name: Full-Power Final Battle Area: 507
|
||||
ID: 507001 Name: Fear Beyond Death Area: 507
|
||||
ID: 506003 Name: Overwhelming Force of Evil! Area: 506
|
||||
ID: 506002 Name: Demon of War Area: 506
|
||||
ID: 506001 Name: Innocent Monstrosity Area: 506
|
||||
ID: 505003 Name: Fusion Reborn! Area: 505
|
||||
ID: 505002 Name: Peerless Warrior's Victory Area: 505
|
||||
ID: 505001 Name: An Incredible Failure Area: 505
|
||||
ID: 504002 Name: Ultimate Finishing Move Area: 504
|
||||
ID: 504001 Name: Limit-Breaking Saiyan Area: 504
|
||||
ID: 503003 Name: Regression to Evil Area: 503
|
||||
ID: 503002 Name: Never-Ending Nightmare Area: 503
|
||||
ID: 503001 Name: Strange Battle Area: 503
|
||||
ID: 502003 Name: Waking Nightmare Area: 502
|
||||
ID: 502002 Name: The Extreme Terror Area: 502
|
||||
ID: 502001 Name: The Cell Games Area: 502
|
||||
ID: 501003 Name: The Demon Returns Area: 501
|
||||
ID: 501002 Name: Awakening Beyond Area: 501
|
||||
ID: 501001 Name: Prologue to Ruin Area: 501
|
||||
ID: 422002 Name: The Time Patrol Warrior Area: 422
|
||||
ID: 422001 Name: The Space-Time Traveler Area: 422
|
||||
ID: 421002 Name: Proof of Genius Area: 421
|
||||
ID: 421001 Name: Prodigy Prince Area: 421
|
||||
ID: 420002 Name: The Strongest Space Pirate Area: 420
|
||||
ID: 420001 Name: The Ancient Space Pirate Area: 420
|
||||
ID: 419001 Name: Guardian of the Sanctuary Area: 419
|
||||
ID: 418003 Name: Heroes Get Exhausted!? Area: 418
|
||||
ID: 418002 Name: A Pudgy Hero? Area: 418
|
||||
ID: 418001 Name: A Fusion of Super Forces!? Area: 418
|
||||
ID: 417002 Name: Proud Martial Artist Area: 417
|
||||
ID: 417001 Name: Full-Hearted Fighter Area: 417
|
||||
ID: 416002 Name: The Power of Piccolo Reborn Area: 416
|
||||
ID: 416001 Name: Divine Demonic Namekian Warrior Area: 416
|
||||
ID: 415002 Name: Earth-Shaking Power Area: 415
|
||||
ID: 415001 Name: Gentle Destroyer Area: 415
|
||||
ID: 414002 Name: Warrior of Hope Area: 414
|
||||
ID: 414001 Name: The Time-Traveling Warrior Area: 414
|
||||
ID: 413002 Name: Behind the Mask Area: 413
|
||||
ID: 413001 Name: The Masked Martial Artist Area: 413
|
||||
ID: 412002 Name: True Strength Area: 412
|
||||
ID: 412001 Name: The Best Fighter of West Quadrant Area: 412
|
||||
ID: 411002 Name: An Unexpectedly Powerful Man! Area: 411
|
||||
ID: 411001 Name: The Mysterious Mask Area: 411
|
||||
ID: 410001 Name: King Piccolo's Successor Area: 410
|
||||
ID: 409002 Name: An Invasion Bet on Primacy Area: 409
|
||||
ID: 409001 Name: Savage Sovereign Area: 409
|
||||
ID: 408002 Name: Dignity of a Clan Area: 408
|
||||
ID: 408001 Name: Cold-Blooded King Area: 408
|
||||
ID: 406003 Name: Raging Counterstrike Area: 406
|
||||
ID: 406002 Name: The Best Form of Persistence Area: 406
|
||||
ID: 406001 Name: Vicious Mechanical Monarch Area: 406
|
||||
ID: 405002 Name: The Determined Martial Artist Area: 405
|
||||
ID: 405001 Name: Master of Masters Area: 405
|
||||
ID: 404002 Name: The Assassin's Struggle Area: 404
|
||||
ID: 404001 Name: Mercenary Tao Strikes Back Area: 404
|
||||
ID: 403002 Name: Super Saiyan Goku Area: 403
|
||||
ID: 403001 Name: An Epic Showdown Area: 403
|
||||
ID: 401002 Name: The Final Showdown Area: 401
|
||||
ID: 401001 Name: Fearsome Super Elite Area: 401
|
||||
ID: 356001 Name: On the Desert Planet Area: 356
|
||||
ID: 355011 Name: Clash Between the Strongest Area: 355
|
||||
ID: 355010 Name: Nonstop Battles Area: 355
|
||||
ID: 355009 Name: Resentful Saiyan Area: 355
|
||||
ID: 355008 Name: Endless Evolution Area: 355
|
||||
ID: 355007 Name: Wrath or Battle Instinct Area: 355
|
||||
ID: 355006 Name: Low-Class Warrior and the Warrior in Exile Area: 355
|
||||
ID: 355005 Name: Super Saiyan Area: 355
|
||||
ID: 355004 Name: Broly Area: 355
|
||||
ID: 355003 Name: Paragus Area: 355
|
||||
ID: 355002 Name: Planet Vampa Area: 355
|
||||
ID: 355001 Name: Goku and Vegeta Area: 355
|
||||
ID: 354005 Name: Upa's Wish Area: 354
|
||||
ID: 354004 Name: Tien's Distress Area: 354
|
||||
ID: 354003 Name: Battle in Penguin Village! Area: 354
|
||||
ID: 354002 Name: The Mifan Empire's Plot Area: 354
|
||||
ID: 354001 Name: Reach for Victory! Martial Arts Tournament Area: 354
|
||||
ID: 353005 Name: The Terrifying Plan to Destroy the Sun Area: 353
|
||||
ID: 353004 Name: Goku Transforms?! Area: 353
|
||||
ID: 353003 Name: Sleeping Princess Area: 353
|
||||
ID: 353002 Name: Devil's Castle Area: 353
|
||||
ID: 353001 Name: Goku and Krillin Area: 353
|
||||
ID: 352006 Name: A Girl's Wish Area: 352
|
||||
ID: 352005 Name: To the Land of Gurumes! Area: 352
|
||||
ID: 352004 Name: Venerable Master Roshi Area: 352
|
||||
ID: 352003 Name: Yamcha the Hyena Area: 352
|
||||
ID: 352002 Name: In the Nighttime Forest... Area: 352
|
||||
ID: 352001 Name: Encounters and Departures Area: 352
|
||||
ID: 351003 Name: Videl Learns to Fly Area: 351
|
||||
ID: 351002 Name: Intensive Training Begins! Area: 351
|
||||
ID: 351001 Name: Hero of Hercule City Area: 351
|
||||
ID: 349005 Name: Showdown with Coora Area: 349
|
||||
ID: 349004 Name: The Nightmare Returns Area: 349
|
||||
ID: 349003 Name: Super Saiyan Tag Team! Area: 349
|
||||
ID: 349002 Name: Coora's Resurrection Area: 349
|
||||
ID: 349001 Name: New Namek's Threat Area: 349
|
||||
ID: 348004 Name: Aftermath of a Fierce Fight... Area: 348
|
||||
ID: 348003 Name: Accelerating Rampage Area: 348
|
||||
ID: 348002 Name: A Series of Tragedies Area: 348
|
||||
ID: 348001 Name: Birth of a Majin Area: 348
|
||||
ID: 347010 Name: Furious Transformation! Area: 347
|
||||
ID: 347009 Name: Dastardly Space Pirate Area: 347
|
||||
ID: 347008 Name: Mystery Planet Area: 347
|
||||
ID: 347007 Name: A Lone Warrior's Last Battle Area: 347
|
||||
ID: 347006 Name: Futile Struggle Area: 347
|
||||
ID: 347005 Name: Prelude to Doom Area: 347
|
||||
ID: 347004 Name: Frieza's Betrayal Area: 347
|
||||
ID: 347003 Name: Vegeta, Prince of the Saiyans Area: 347
|
||||
ID: 347002 Name: The Phantom Fist Area: 347
|
||||
ID: 347001 Name: Saiyans from Planet Vegeta Area: 347
|
||||
ID: 346008 Name: Body Change Area: 346
|
||||
ID: 346007 Name: The Captain Cometh! Area: 346
|
||||
ID: 346006 Name: Guru in Peril Area: 346
|
||||
ID: 346005 Name: Showdown! Jeice and Burter Area: 346
|
||||
ID: 346004 Name: Goku Finally Arrives! Area: 346
|
||||
ID: 346003 Name: Imminent Showdown Area: 346
|
||||
ID: 346002 Name: Relentless Recoome Area: 346
|
||||
ID: 346001 Name: Behold the Ginyu Force! Area: 346
|
||||
ID: 345007 Name: After the Tables Have Turned Area: 345
|
||||
ID: 345006 Name: Clash! Super Saiyan 4 vs. Super #17 Area: 345
|
||||
ID: 345005 Name: Fusion of Two Android #17s! Area: 345
|
||||
ID: 345004 Name: Formidable Foes Resurrected from Hell Area: 345
|
||||
ID: 345003 Name: Tragic Siblings Area: 345
|
||||
ID: 345002 Name: Hell Demons Cell & Frieza Area: 345
|
||||
ID: 345001 Name: Harbinger of Cataclysm Area: 345
|
||||
ID: 344009 Name: Universe Survival Showdown Area: 344
|
||||
ID: 344008 Name: Mastery of Ultra Instinct! Area: 344
|
||||
ID: 344007 Name: Proud 'Til the Very End Area: 344
|
||||
ID: 344006 Name: Toppo, God of Destruction, Cometh! Area: 344
|
||||
ID: 344005 Name: Onslaught of Fire and Fury Area: 344
|
||||
ID: 344004 Name: Bid for Supreme Dominance Area: 344
|
||||
ID: 344003 Name: Total War! Universe 3 vs. Universe 7 Area: 344
|
||||
ID: 344002 Name: Showdown! Namekians of Universe 6 Area: 344
|
||||
ID: 344001 Name: The Climactic Battle for Love Area: 344
|
||||
ID: 343006 Name: Super Namekian vs. The Power of Friendship Area: 343
|
||||
ID: 343005 Name: An Evil Namekian?! Area: 343
|
||||
ID: 343004 Name: Enter Goku! Area: 343
|
||||
ID: 343003 Name: Demons From Outer Space! Area: 343
|
||||
ID: 343002 Name: Planet in Darkness Area: 343
|
||||
ID: 343001 Name: A Shadow Looming Over Earth Area: 343
|
||||
ID: 341007 Name: Another Battle-Crazed Saiyan Clash! Area: 341
|
||||
ID: 341006 Name: Saiyan Oath Area: 341
|
||||
ID: 341005 Name: Goku vs. Jiren Area: 341
|
||||
ID: 341004 Name: Magical Girl Fighters From Universe 2 Area: 341
|
||||
ID: 341003 Name: The Warrior of Justice Draws Nigh! Area: 341
|
||||
ID: 341002 Name: The Berserker Awakens! Area: 341
|
||||
ID: 341001 Name: The Long-Awaited Tournament of Power Area: 341
|
||||
ID: 340003 Name: Paikuhan's True Power Area: 340
|
||||
ID: 340002 Name: Battle in Hell Area: 340
|
||||
ID: 340001 Name: Champions of the Otherworld Area: 340
|
||||
ID: 339008 Name: Great Conflict Ahead Area: 339
|
||||
ID: 339007 Name: Vegeta's On a Roll! Area: 339
|
||||
ID: 339006 Name: Vegeta and Zarbon Area: 339
|
||||
ID: 339005 Name: Vegeta vs. Dodoria Area: 339
|
||||
ID: 339004 Name: Assault on a Certain Village Area: 339
|
||||
ID: 339003 Name: Vegeta the Traitor Area: 339
|
||||
ID: 339002 Name: Dark Clouds Over Planet Namek Area: 339
|
||||
ID: 339001 Name: To Planet Namek! Area: 339
|
||||
ID: 338006 Name: Wrath of the Dragon! Area: 338
|
||||
ID: 338005 Name: Sorrowful Fate Area: 338
|
||||
ID: 338004 Name: Return of the Phantom Majin Area: 338
|
||||
ID: 338003 Name: Budding Bonds Area: 338
|
||||
ID: 338002 Name: Bewitching Monster Area: 338
|
||||
ID: 338001 Name: Tapion the Hero Area: 338
|
||||
ID: 337004 Name: To a New Realm Area: 337
|
||||
ID: 337003 Name: Vegeta's Rage Area: 337
|
||||
ID: 337002 Name: Birthday Party and the God of Destruction Area: 337
|
||||
ID: 337001 Name: Vegeta's Family Day Area: 337
|
||||
ID: 336004 Name: Raditz's Battle Area: 336
|
||||
ID: 336003 Name: Raditz's Pride Area: 336
|
||||
ID: 336002 Name: Father's Dream Area: 336
|
||||
ID: 336001 Name: Raditz the Weakling Area: 336
|
||||
ID: 335012 Name: Team Universe 7, Assemble! Area: 335
|
||||
ID: 335011 Name: The Tenth Warrior Area: 335
|
||||
ID: 335010 Name: The Emperor of Evil Returns Area: 335
|
||||
ID: 335009 Name: See The Wall That Must Be Passed Area: 335
|
||||
ID: 335008 Name: The Tenshin-Style Dojo's Mystery!? Area: 335
|
||||
ID: 335007 Name: Trading Blows for the First Time Area: 335
|
||||
ID: 335006 Name: High-Spirited Warriors Area: 335
|
||||
ID: 335005 Name: Goku the Recruiter Area: 335
|
||||
ID: 335004 Name: Make Way for Toppo, Warrior of Justice! Area: 335
|
||||
ID: 335003 Name: Bergamo the Crusher Vs. Goku Area: 335
|
||||
ID: 335002 Name: Awaken Your Sleeping Battle Spirit! Area: 335
|
||||
ID: 335001 Name: Losers Erased in the Tournament of Power! Area: 335
|
||||
ID: 334004 Name: Fusion Mayhem! Area: 334
|
||||
ID: 334003 Name: Enter Abo and Kado! Area: 334
|
||||
ID: 334002 Name: Vegeta's Little Brother?! Area: 334
|
||||
ID: 334001 Name: Peaceful Days Area: 334
|
||||
ID: 333005 Name: Broly, Tenacious Beast Area: 333
|
||||
ID: 333004 Name: The Tag Team Challenge Area: 333
|
||||
ID: 333003 Name: The Demon Returns! Area: 333
|
||||
ID: 333002 Name: Showdown! Bio-Warrior Area: 333
|
||||
ID: 333001 Name: Hercule's Secret?! Area: 333
|
||||
ID: 332005 Name: Proof of Courage Area: 332
|
||||
ID: 332004 Name: Lord Yao the Marauder Area: 332
|
||||
ID: 332003 Name: Monster of Mount Paozu Area: 332
|
||||
ID: 332002 Name: The Journey Begins Area: 332
|
||||
ID: 332001 Name: Great Ancestor Area: 332
|
||||
ID: 331006 Name: Stop the Reckless Majin! Area: 331
|
||||
ID: 331005 Name: Defeat the King of Demon Realm! Area: 331
|
||||
ID: 331004 Name: Young Hearts, Liberated! Area: 331
|
||||
ID: 331003 Name: Intercept the Alien Warrior! Area: 331
|
||||
ID: 331002 Name: Pure Heart, Evil Ambition Area: 331
|
||||
ID: 331001 Name: Fight On! Hero of Justice! Area: 331
|
||||
ID: 330006 Name: SS4 vs. Giant Ape Baby Area: 330
|
||||
ID: 330005 Name: The Almighty Super Saiyan 4 Area: 330
|
||||
ID: 330004 Name: Giant Ape Wreckin' Rampage Area: 330
|
||||
ID: 330003 Name: Majin Power Combined Area: 330
|
||||
ID: 330002 Name: The Trouble with Tuffles Area: 330
|
||||
ID: 330001 Name: The Board Game Domain Area: 330
|
||||
ID: 329002 Name: Boss Rabbit's Magic Touch Area: 329
|
||||
ID: 329001 Name: The Rabbit Mob Hits the Scene Area: 329
|
||||
ID: 328007 Name: Final Judgment Area: 328
|
||||
ID: 328006 Name: The Zero Mortals Plan Area: 328
|
||||
ID: 328005 Name: Rematch With Goku Black Area: 328
|
||||
ID: 328004 Name: Trunks' Determination Area: 328
|
||||
ID: 328003 Name: Universe 10 Zamasu Area: 328
|
||||
ID: 328002 Name: Message From the Future Area: 328
|
||||
ID: 328001 Name: A Dark New Enemy Appears Area: 328
|
||||
ID: 327006 Name: Arale Saves the Day! Area: 327
|
||||
ID: 327005 Name: The World's Greatest Assassin! Area: 327
|
||||
ID: 327004 Name: Showdown at Penguin Village! Area: 327
|
||||
ID: 327003 Name: An Ally of Justice Appears! Area: 327
|
||||
ID: 327002 Name: An All-Out Battle for Love?! Area: 327
|
||||
ID: 327001 Name: To Penguin Village! Area: 327
|
||||
ID: 326006 Name: Blast! Family Kamehameha! Area: 326
|
||||
ID: 326005 Name: Broly's Back! Area: 326
|
||||
ID: 326004 Name: Let's Join Forces! Area: 326
|
||||
ID: 326003 Name: Legendary Super Saiyan Area: 326
|
||||
ID: 326002 Name: Fates Intertwined Area: 326
|
||||
ID: 326001 Name: Mysterious New Planet Vegeta Area: 326
|
||||
ID: 325008 Name: The Match Concludes! Area: 325
|
||||
ID: 325007 Name: Meet the Assassin Hit! Area: 325
|
||||
ID: 325006 Name: The Saiyan of Universe 6 Area: 325
|
||||
ID: 325005 Name: Magetta vs. Vegeta Area: 325
|
||||
ID: 325004 Name: The Furious Battle! Area: 325
|
||||
ID: 325003 Name: Frost vs. Goku Area: 325
|
||||
ID: 325002 Name: The Match Begins! Area: 325
|
||||
ID: 325001 Name: Universe 6 vs. Universe 7 Area: 325
|
||||
ID: 324010 Name: The Two-Top on Earth!? Area: 324
|
||||
ID: 324009 Name: Saiyans' and Tuffles' Fate Area: 324
|
||||
ID: 324008 Name: The Revenging Attack! Area: 324
|
||||
ID: 324007 Name: Fight! Super Baby! Area: 324
|
||||
ID: 324006 Name: Nightmarish Battle Area: 324
|
||||
ID: 324005 Name: Return to Earth Area: 324
|
||||
ID: 324004 Name: Ambition Achieved!? Area: 324
|
||||
ID: 324003 Name: Baby vs. The Greatest Namekian Area: 324
|
||||
ID: 324002 Name: The Worst Brotherly Spat!? Area: 324
|
||||
ID: 324001 Name: Target the Saiyans! Area: 324
|
||||
ID: 323010 Name: The Strongest Warrior Awakens! Area: 323
|
||||
ID: 323009 Name: The Decisive Battle at Last! Area: 323
|
||||
ID: 323008 Name: The Quiet Wrath of Goku Area: 323
|
||||
ID: 323007 Name: Ferocity of the Saiyans Area: 323
|
||||
ID: 323006 Name: Attack of the Saiyans Area: 323
|
||||
ID: 323005 Name: The Fight in the Next World Area: 323
|
||||
ID: 323004 Name: Deeds Done by the Full Moon Area: 323
|
||||
ID: 323003 Name: Goodbye, Goku! Area: 323
|
||||
ID: 323002 Name: An Enemy in Common Area: 323
|
||||
ID: 323001 Name: The Mysterious Alien Warrior Area: 323
|
||||
ID: 322010 Name: Baby the Wicked Life Form Area: 322
|
||||
ID: 322009 Name: General Rilldo Area: 322
|
||||
ID: 322008 Name: Release! The All-Out Goku Area: 322
|
||||
ID: 322007 Name: Enigmatic Planet M-2 Area: 322
|
||||
ID: 322006 Name: Luud Activated!! Area: 322
|
||||
ID: 322005 Name: Planet Luud's Plot Area: 322
|
||||
ID: 322004 Name: Hot Pursuit Brothers Area: 322
|
||||
ID: 322003 Name: Planet Gelbo and Zoonama Area: 322
|
||||
ID: 322002 Name: Merchants' Planet Imecka! Area: 322
|
||||
ID: 322001 Name: The Mysterious New Dragon Balls Area: 322
|
||||
ID: 321012 Name: Gohan and Trunks Area: 321
|
||||
ID: 321011 Name: Peace for the Future Area: 321
|
||||
ID: 321010 Name: Long-Cherished Wish Fulfilled Area: 321
|
||||
ID: 321009 Name: Parental Bond Area: 321
|
||||
ID: 321008 Name: The Fruits of Training Area: 321
|
||||
ID: 321007 Name: Chance Meeting with Father Area: 321
|
||||
ID: 321006 Name: Beginning of the Journey Area: 321
|
||||
ID: 321005 Name: Last Hope Area: 321
|
||||
ID: 321004 Name: The Last Fighters Area: 321
|
||||
ID: 321003 Name: The End of Hope Area: 321
|
||||
ID: 321002 Name: The Androids' Arrival Area: 321
|
||||
ID: 321001 Name: Revenge of Frieza and King Cold Area: 321
|
||||
ID: 320024 Name: Galactic Adventurer Area: 320
|
||||
ID: 320023 Name: Explosive Parental Bond Area: 320
|
||||
ID: 320022 Name: Proud Bloodline Area: 320
|
||||
ID: 320021 Name: The Power of the Majin Area: 320
|
||||
ID: 320020 Name: In Defiance of the Heaven Area: 320
|
||||
ID: 320019 Name: God of All Saiyans Area: 320
|
||||
ID: 320018 Name: Limit-Smashing Super Saiyan Area: 320
|
||||
ID: 320017 Name: Fusion for Justice Area: 320
|
||||
ID: 320016 Name: Strength of the Sanctuary Area: 320
|
||||
ID: 320015 Name: Paragon of Justice Area: 320
|
||||
ID: 320014 Name: Strongest Under the Heavens Area: 320
|
||||
ID: 320013 Name: Devastating True Power Area: 320
|
||||
ID: 320012 Name: Unstoppable Parent and Child Area: 320
|
||||
ID: 320011 Name: One Who Wields True Power Area: 320
|
||||
ID: 320010 Name: The Boy From the Future Area: 320
|
||||
ID: 320009 Name: A Legendary Fighter Area: 320
|
||||
ID: 320008 Name: Technique Beyond Limit Area: 320
|
||||
ID: 320007 Name: Bond of Master and Disciple Area: 320
|
||||
ID: 320006 Name: Venerable Master Roshi Area: 320
|
||||
ID: 320005 Name: The Righteous Shen Style Area: 320
|
||||
ID: 320004 Name: Seasoned Martial Artist Area: 320
|
||||
ID: 320003 Name: Golden Combination Area: 320
|
||||
ID: 320002 Name: Youth With a Future Area: 320
|
||||
ID: 320001 Name: Transmogrified Monster Area: 320
|
||||
ID: 319023 Name: The Variable Majin Area: 319
|
||||
ID: 319022 Name: The Dark Prince Returns Area: 319
|
||||
ID: 319021 Name: The Android Born from Hate Area: 319
|
||||
ID: 319020 Name: Wild Hatred Area: 319
|
||||
ID: 319019 Name: Magnified Malice Area: 319
|
||||
ID: 319018 Name: Warrior of Hate Area: 319
|
||||
ID: 319017 Name: Burning for Vengeance Area: 319
|
||||
ID: 319016 Name: Depths of Despair Area: 319
|
||||
ID: 319015 Name: Metallic Demon Area: 319
|
||||
ID: 319014 Name: Wicked Bloodline Area: 319
|
||||
ID: 319013 Name: An Unusual Villain Area: 319
|
||||
ID: 319012 Name: Being of Hate and Ruin Area: 319
|
||||
ID: 319011 Name: Superior Strength Area: 319
|
||||
ID: 319010 Name: Heart Cold as Deep Space Area: 319
|
||||
ID: 319009 Name: Destroyer of the Universe Area: 319
|
||||
ID: 319008 Name: Walking Obliterator Area: 319
|
||||
ID: 319007 Name: Space Pirate Area: 319
|
||||
ID: 319006 Name: Frieza's Right Hand Area: 319
|
||||
ID: 319005 Name: Royal Might Area: 319
|
||||
ID: 319004 Name: Prince of the Saiyans Area: 319
|
||||
ID: 319003 Name: Invincible Warrior Area: 319
|
||||
ID: 319002 Name: Miniature Menace Area: 319
|
||||
ID: 319001 Name: Clayborn Warrior Area: 319
|
||||
ID: 318005 Name: Metal Coora’s Crew Area: 318
|
||||
ID: 318004 Name: The Nightmare Returns Area: 318
|
||||
ID: 318003 Name: Super Saiyan Tag Team Area: 318
|
||||
ID: 318002 Name: Coora’s Resurrection Area: 318
|
||||
ID: 318001 Name: New Namek’s Threat Area: 318
|
||||
ID: 317001 Name: Evil Charisma Area: 317
|
||||
ID: 316001 Name: Joker Area: 316
|
||||
ID: 315011 Name: Blood of the Saiyan Race Area: 315
|
||||
ID: 315010 Name: Sworn Enemy Area: 315
|
||||
ID: 315009 Name: Outclassed Area: 315
|
||||
ID: 315008 Name: Peace Restored Area: 315
|
||||
ID: 315007 Name: Spirit Bomb Miracle Area: 315
|
||||
ID: 315006 Name: Furious Goku Area: 315
|
||||
ID: 315005 Name: Ambitious Turles Area: 315
|
||||
ID: 315004 Name: Crumbling Earth Area: 315
|
||||
ID: 315003 Name: Mechanical Malice Area: 315
|
||||
ID: 315002 Name: Retaliating with Skill Area: 315
|
||||
ID: 315001 Name: Earth’s Greatest Threat Area: 315
|
||||
ID: 314012 Name: Stronger than Ever! Area: 314
|
||||
ID: 314011 Name: The Best Teacher in the Universe Area: 314
|
||||
ID: 314010 Name: Challenging the Destruction God Area: 314
|
||||
ID: 314009 Name: Battle of Gods Area: 314
|
||||
ID: 314008 Name: Super Saiyan God is Born Area: 314
|
||||
ID: 314007 Name: Vegeta's Pride Area: 314
|
||||
ID: 314006 Name: Fusion Counterattack Area: 314
|
||||
ID: 314005 Name: The Strongest Fighter: Gohan Area: 314
|
||||
ID: 314004 Name: Countdown to Destruction Area: 314
|
||||
ID: 314003 Name: Crème Caramel Fury Area: 314
|
||||
ID: 314002 Name: In Search of the Super Saiyan God Area: 314
|
||||
ID: 314001 Name: Destruction God Awakens Area: 314
|
||||
ID: 313001 Name: Stop the Reckless Majin! Area: 313
|
||||
ID: 312001 Name: Defeat the King of Demon Realm! Area: 312
|
||||
ID: 311001 Name: Young Hearts, Liberated! Area: 311
|
||||
ID: 310001 Name: Intercept the Alien Warrior! Area: 310
|
||||
ID: 309001 Name: Pure Heart, Evil Ambition Area: 309
|
||||
ID: 308001 Name: Fight On! Hero of Justice! Area: 308
|
||||
ID: 307010 Name: Strongest Clan in the Universe Area: 307
|
||||
ID: 307009 Name: History of Oppression Area: 307
|
||||
ID: 307008 Name: Like Father, Like Son Area: 307
|
||||
ID: 307007 Name: Strongest Vs. Strongest Area: 307
|
||||
ID: 307006 Name: Goku Revived! Area: 307
|
||||
ID: 307005 Name: Piccolo's Here! Area: 307
|
||||
ID: 307004 Name: Senzu Bean of Hope Area: 307
|
||||
ID: 307003 Name: To Korin's Tower Area: 307
|
||||
ID: 307002 Name: Coora's Squad Strikes! Area: 307
|
||||
ID: 307001 Name: Encroaching Evil Area: 307
|
||||
ID: 306010 Name: The Greatest Challenge Area: 306
|
||||
ID: 306009 Name: Seriously Serious Fight Area: 306
|
||||
ID: 306008 Name: Extreme Peril Area: 306
|
||||
ID: 306007 Name: Formidable Boujack! Area: 306
|
||||
ID: 306006 Name: Vicious Galactic Warrior Area: 306
|
||||
ID: 306005 Name: The Seal is Lifted Area: 306
|
||||
ID: 306004 Name: Mysterious Galactic Warrior Area: 306
|
||||
ID: 306003 Name: The Finals Commence! Area: 306
|
||||
ID: 306002 Name: The Worst Match Ever?! Area: 306
|
||||
ID: 306001 Name: World Tournament Time! Area: 306
|
||||
ID: 305013 Name: Full-Power Whis?! Area: 305
|
||||
ID: 305012 Name: The End of the Battle Beyond Gods Area: 305
|
||||
ID: 305011 Name: A Trial Beyond Divinity Area: 305
|
||||
ID: 305010 Name: Battle of Ultra Evolution Area: 305
|
||||
ID: 305009 Name: Destiny Packs a Punch Area: 305
|
||||
ID: 305008 Name: Chilling Bloodline Area: 305
|
||||
ID: 305007 Name: Beginning of Karma Area: 305
|
||||
ID: 305006 Name: 3rd Transformation Area: 305
|
||||
ID: 305005 Name: Frieza's Transformation Area: 305
|
||||
ID: 305004 Name: Frieza's Fury Area: 305
|
||||
ID: 305003 Name: Ginyu Force Rules Area: 305
|
||||
ID: 305002 Name: Namek Occupation Area: 305
|
||||
ID: 305001 Name: Foreshadowing of Despair Area: 305
|
||||
ID: 304012 Name: Battling the Unknown Area: 304
|
||||
ID: 304011 Name: Indefectible Invasion Area: 304
|
||||
ID: 304010 Name: Frieza's Army Reborn Area: 304
|
||||
ID: 304009 Name: Malevolent Resurgence Area: 304
|
||||
ID: 304008 Name: No Limits! Area: 304
|
||||
ID: 304007 Name: Gotta Get Stronger! Area: 304
|
||||
ID: 304006 Name: On the Shoulders of Gods Area: 304
|
||||
ID: 304005 Name: Top-Level Training Area: 304
|
||||
ID: 304004 Name: Pilaf's Back for More... Area: 304
|
||||
ID: 304003 Name: Problem Solved! Area: 304
|
||||
ID: 304002 Name: Fight for Peace! Area: 304
|
||||
ID: 304001 Name: Prolific Patrolmen Area: 304
|
||||
ID: 303009 Name: Furious Transformation! Area: 303
|
||||
ID: 303008 Name: Dastardly Space Pirate Area: 303
|
||||
ID: 303007 Name: Mystery Planet Area: 303
|
||||
ID: 303006 Name: Last Battle Area: 303
|
||||
ID: 303005 Name: Futile Struggle Area: 303
|
||||
ID: 303004 Name: Prelude to Doom Area: 303
|
||||
ID: 303003 Name: Frieza’s Betrayal Area: 303
|
||||
ID: 303002 Name: Planet Vegeta’s Prince Area: 303
|
||||
ID: 303001 Name: Go Team Bardock! Area: 303
|
||||
ID: 302005 Name: Red-Hot Rumble Area: 302
|
||||
ID: 302004 Name: The Prince Cometh Area: 302
|
||||
ID: 302003 Name: Goku’s Wrath Area: 302
|
||||
ID: 302002 Name: Saiyan Rampage Area: 302
|
||||
ID: 302001 Name: Here Come the Saiyans Area: 302
|
||||
ID: 301005 Name: Last Chance Area: 301
|
||||
ID: 301004 Name: Gohan Erupts! Area: 301
|
||||
ID: 301003 Name: Dire Straits Area: 301
|
||||
ID: 301002 Name: Saiyan Showdown Area: 301
|
||||
ID: 301001 Name: Raditz the Saiyan Area: 301
|
||||
ID: 179002 Name: Clash! Dokkan Butoden Part 2 Area: 179
|
||||
ID: 179001 Name: Clash! Dokkan Butoden Part 1 Area: 179
|
||||
ID: 178001 Name: Challenging the Super Champion! Area: 178
|
||||
ID: 177001 Name: Even More Secret Adventures Area: 177
|
||||
ID: 175003 Name: The Long-awaited Fight! Goku vs. Monaka Area: 175
|
||||
ID: 175002 Name: Chaotic Victory Celebration Area: 175
|
||||
ID: 175001 Name: Universe 6 vs. Universe 7 Area: 175
|
||||
ID: 173007 Name: Final Showdown with Majin Buu Area: 173
|
||||
ID: 173006 Name: The Prince of Destruction Returns Area: 173
|
||||
ID: 173005 Name: Pair Left on a Disappearing Planet Area: 173
|
||||
ID: 173004 Name: Saiyan Attack! Area: 173
|
||||
ID: 173003 Name: The Demon King of Old... Restored! Area: 173
|
||||
ID: 173002 Name: Showdown! Mercenary Tao Area: 173
|
||||
ID: 173001 Name: Reich Pilaf's World Conquest Area: 173
|
||||
ID: 171001 Name: Ghostly Prank Area: 171
|
||||
ID: 169001 Name: Go, Launch, Go! Area: 169
|
||||
ID: 168001 Name: Go, Launch, Go! Area: 168
|
||||
ID: 167001 Name: Go, Launch, Go! Area: 167
|
||||
ID: 166001 Name: Go, Launch, Go! Area: 166
|
||||
ID: 165001 Name: Go, Launch, Go! Area: 165
|
||||
ID: 164001 Name: Go, Launch, Go! Area: 164
|
||||
ID: 163001 Name: Go, Launch, Go! Area: 163
|
||||
ID: 162009 Name: Showdown with Android #21 Area: 162
|
||||
ID: 162008 Name: The Final Battle Looms Area: 162
|
||||
ID: 162007 Name: Reunion with Frieza Area: 162
|
||||
ID: 162006 Name: The Mastermind Revealed Area: 162
|
||||
ID: 162005 Name: SOS from Piccolo Area: 162
|
||||
ID: 162004 Name: Red Ribbon Army's Plot Area: 162
|
||||
ID: 162003 Name: Rescuing Krillin Area: 162
|
||||
ID: 162002 Name: Clone Warrior Area: 162
|
||||
ID: 162001 Name: A Mysterious Pulse and Earth in Peril Area: 162
|
||||
ID: 161001 Name: Little Rangers' Task Area: 161
|
||||
ID: 160004 Name: Return of the Magical Girl Fighters Area: 160
|
||||
ID: 160003 Name: Love Lasts Forever! Area: 160
|
||||
ID: 160002 Name: Believe in Love! Area: 160
|
||||
ID: 160001 Name: Let's Spread Love! Area: 160
|
||||
ID: 159001 Name: Goku Departs! Area: 159
|
||||
ID: 158005 Name: [PHY] Special Training Area: 158
|
||||
ID: 158004 Name: [STR] Special Training Area: 158
|
||||
ID: 158003 Name: [INT] Special Training Area: 158
|
||||
ID: 158002 Name: [TEQ] Special Training Area: 158
|
||||
ID: 158001 Name: [AGL] Special Training Area: 158
|
||||
ID: 157001 Name: [PHY] Special Training Area: 157
|
||||
ID: 156001 Name: [STR] Special Training Area: 156
|
||||
ID: 155001 Name: [INT] Special Training Area: 155
|
||||
ID: 154001 Name: [TEQ] Special Training Area: 154
|
||||
ID: 153001 Name: [AGL] Special Training Area: 153
|
||||
ID: 152001 Name: Majin Buu’s Candy Mischief Area: 152
|
||||
ID: 151001 Name: Forces of the Otherworld Area: 151
|
||||
ID: 150001 Name: Adventure Of Her Own Area: 150
|
||||
ID: 149005 Name: ????????? Area: 149
|
||||
ID: 149004 Name: ????????? Area: 149
|
||||
ID: 149003 Name: ????????? Area: 149
|
||||
ID: 149002 Name: ????????? Area: 149
|
||||
ID: 149001 Name: ????????? Area: 149
|
||||
ID: 147036 Name: Miracle-Makers Never Surrender Area: 147
|
||||
ID: 147035 Name: Rematch with Super Saiyan Rosé! Area: 147
|
||||
ID: 147034 Name: The Truth Will Out Area: 147
|
||||
ID: 147033 Name: A New Dark Enemy Appears! Area: 147
|
||||
ID: 147032 Name: Universe 6's Strongest Warrior Area: 147
|
||||
ID: 147031 Name: Saiyan Pride Area: 147
|
||||
ID: 147030 Name: Vegeta's All-Out Battle Area: 147
|
||||
ID: 147029 Name: The Vengeful Golden Frieza Area: 147
|
||||
ID: 147028 Name: God of Destruction vs. SS God Area: 147
|
||||
ID: 147027 Name: The Shadow Dragons' Master Area: 147
|
||||
ID: 147026 Name: Warrior of the Sun: Nuova Shenron Area: 147
|
||||
ID: 147025 Name: Baby vs. Goku Area: 147
|
||||
ID: 147024 Name: Planet M-2 Area: 147
|
||||
ID: 147023 Name: Finding a Strong Guy! Area: 147
|
||||
ID: 147022 Name: The Journey Unfolds Area: 147
|
||||
ID: 147021 Name: Stronger Than Ever! Area: 147
|
||||
ID: 147020 Name: Battle for the Universe Area: 147
|
||||
ID: 147019 Name: Meet Vegito Area: 147
|
||||
ID: 147018 Name: Warrior's Resolve Area: 147
|
||||
ID: 147017 Name: The Fated Battle! Area: 147
|
||||
ID: 147016 Name: Best of the Boys Area: 147
|
||||
ID: 147015 Name: I Am Saiyaman Area: 147
|
||||
ID: 147014 Name: Successor of the Strongest Area: 147
|
||||
ID: 147013 Name: The Android Cell Area: 147
|
||||
ID: 147012 Name: Awaken as a Super Saiyan Area: 147
|
||||
ID: 147011 Name: The Other Super Saiyan! Area: 147
|
||||
ID: 147010 Name: Legendary Super Saiyan Area: 147
|
||||
ID: 147009 Name: The Showdown Begins Area: 147
|
||||
ID: 147008 Name: Behold the Ginyu Force! Area: 147
|
||||
ID: 147007 Name: Goku vs. Vegeta Area: 147
|
||||
ID: 147006 Name: Ferocity of the Saiyans Area: 147
|
||||
ID: 147005 Name: The Mysterious Alien Warrior Area: 147
|
||||
ID: 147004 Name: Battle for the Future Area: 147
|
||||
ID: 147003 Name: The Demon King Piccolo! Area: 147
|
||||
ID: 147002 Name: The Notorious Mercenary Area: 147
|
||||
ID: 147001 Name: The Adventure Begins Area: 147
|
||||
ID: 146005 Name: PHY Hidden Potential Event Area: 146
|
||||
ID: 146004 Name: STR Hidden Potential Event Area: 146
|
||||
ID: 146003 Name: INT Hidden Potential Event Area: 146
|
||||
ID: 146002 Name: TEQ Hidden Potential Event Area: 146
|
||||
ID: 146001 Name: AGL Hidden Potential Event Area: 146
|
||||
ID: 144001 Name: PHY Hidden Potential Event Area: 144
|
||||
ID: 143001 Name: STR Hidden Potential Event Area: 143
|
||||
ID: 142001 Name: INT Hidden Potential Event Area: 142
|
||||
ID: 141001 Name: TEQ Hidden Potential Event Area: 141
|
||||
ID: 140001 Name: AGL Hidden Potential Event Area: 140
|
||||
ID: 139001 Name: Captain Yamcha's Grand Slam! Area: 139
|
||||
ID: 138001 Name: The Peculiar Penguin Village Area: 138
|
||||
ID: 137001 Name: In the Fused World... Area: 137
|
||||
ID: 136030 Name: ????????!! Area: 136
|
||||
ID: 136029 Name: ?6??????? Area: 136
|
||||
ID: 136028 Name: ??????? Area: 136
|
||||
ID: 136027 Name: ??????????! Area: 136
|
||||
ID: 136026 Name: ???????????? Area: 136
|
||||
ID: 136025 Name: ????????????! Area: 136
|
||||
ID: 136024 Name: ???????!! Area: 136
|
||||
ID: 136023 Name: ???M2 Area: 136
|
||||
ID: 136022 Name: ???????!! Area: 136
|
||||
ID: 136021 Name: ?????… Area: 136
|
||||
ID: 136020 Name: ?????!! Area: 136
|
||||
ID: 136019 Name: ????????? Area: 136
|
||||
ID: 136018 Name: ????? Area: 136
|
||||
ID: 136017 Name: ??????!! Area: 136
|
||||
ID: 136016 Name: ??????!! Area: 136
|
||||
ID: 136015 Name: ?????????????? Area: 136
|
||||
ID: 136014 Name: ?????? Area: 136
|
||||
ID: 136013 Name: ?????? Area: 136
|
||||
ID: 136012 Name: ??????????? Area: 136
|
||||
ID: 136011 Name: ??????????? Area: 136
|
||||
ID: 136010 Name: ???????? Area: 136
|
||||
ID: 136009 Name: ??????? Area: 136
|
||||
ID: 136008 Name: ?????????!! Area: 136
|
||||
ID: 136007 Name: ??????? Area: 136
|
||||
ID: 136006 Name: ???????! Area: 136
|
||||
ID: 136005 Name: ??????? Area: 136
|
||||
ID: 136004 Name: ??????????! Area: 136
|
||||
ID: 136003 Name: ??????????!! Area: 136
|
||||
ID: 136002 Name: ???????“???” Area: 136
|
||||
ID: 136001 Name: ??????? Area: 136
|
||||
ID: 135002 Name: Pan's Next Secret Adventure Area: 135
|
||||
ID: 135001 Name: Pan's Secret Adventure Area: 135
|
||||
ID: 134001 Name: The Genius Bulma's Battle Prep Area: 134
|
||||
ID: 133002 Name: Endless Adventure Area: 133
|
||||
ID: 133001 Name: Adventure of Gratitude Area: 133
|
||||
ID: 132001 Name: Turtle School Training! Area: 132
|
||||
ID: 131001 Name: Hercule’s World Tournament Area: 131
|
||||
ID: 130001 Name: Training in the Clouds Area: 130
|
||||
ID: 126001 Name: Snake Way Area: 126
|
||||
ID: 125001 Name: Snake Way Area: 125
|
||||
ID: 120002 Name: Even More Training Area: 120
|
||||
ID: 120001 Name: Training at Korin's Tower Area: 120
|
||||
ID: 116001 Name: Big Bucks Hercule Challenge Area: 116
|
||||
ID: 115002 Name: Champion’s Real Power! Area: 115
|
||||
ID: 115001 Name: Big Bucks Hercule Challenge Area: 115
|
||||
ID: 111005 Name: [PHY] Awakening Medal Area: 111
|
||||
ID: 111004 Name: [STR] Awakening Medal Area: 111
|
||||
ID: 111003 Name: [INT] Awakening Medal Area: 111
|
||||
ID: 111002 Name: [TEQ] Awakening Medal Area: 111
|
||||
ID: 111001 Name: [AGL] Awakening Medal Area: 111
|
||||
ID: 110001 Name: [PHY] Awakening Medal Area: 110
|
||||
ID: 109001 Name: [STR] Awakening Medal Area: 109
|
||||
ID: 108001 Name: [INT] Awakening Medal Area: 108
|
||||
ID: 107001 Name: [TEQ] Awakening Medal Area: 107
|
||||
ID: 106001 Name: [AGL] Awakening Medal Area: 106
|
||||
ID: 105001 Name: [PHY] Awakening Medal Area: 105
|
||||
ID: 104001 Name: [STR] Awakening Medal Area: 104
|
||||
ID: 103001 Name: [INT] Awakening Medal Area: 103
|
||||
ID: 102001 Name: [TEQ] Awakening Medal Area: 102
|
||||
ID: 101001 Name: [AGL] Awakening Medal Area: 101
|
||||
ID: 27003 Name: Training and Experience Area: 27
|
||||
ID: 27002 Name: Training with Piccolo Area: 27
|
||||
ID: 27001 Name: Resumption Area: 27
|
||||
ID: 26008 Name: Reclaiming Identity Area: 26
|
||||
ID: 26007 Name: An Ace in the Hole Area: 26
|
||||
ID: 26006 Name: Demonic Scientist Area: 26
|
||||
ID: 26005 Name: Dr. Gero's Smirk Area: 26
|
||||
ID: 26004 Name: A Loyal Android Area: 26
|
||||
ID: 26003 Name: Bio-Soldier Area: 26
|
||||
ID: 26002 Name: A Staff Officer's Battle Area: 26
|
||||
ID: 26001 Name: A Heart Lost Area: 26
|
||||
ID: 25008 Name: A Bizarre Reunion Area: 25
|
||||
ID: 25007 Name: A New Sworn Enemy...?! Area: 25
|
||||
ID: 25006 Name: A New Sworn Enemy Area: 25
|
||||
ID: 25005 Name: The Brother of Frieza Area: 25
|
||||
ID: 25004 Name: Fierce Battle against Abo and Kado Area: 25
|
||||
ID: 25003 Name: Abo-Kado Fusion! Area: 25
|
||||
ID: 25002 Name: Alien Warrior Encounter 7 Area: 25
|
||||
ID: 25001 Name: Alien Warrior Encounter 6 Area: 25
|
||||
ID: 24008 Name: Androids #17 and #18 Area: 24
|
||||
ID: 24007 Name: The Ultimate Android Area: 24
|
||||
ID: 24006 Name: #17 x 2 Area: 24
|
||||
ID: 24005 Name: Mysterious #17 Area: 24
|
||||
ID: 24004 Name: Tenacious Scientist Area: 24
|
||||
ID: 24003 Name: Promises Area: 24
|
||||
ID: 24002 Name: One Big Chance Area: 24
|
||||
ID: 24001 Name: A Bad Feeling About This Area: 24
|
||||
ID: 23008 Name: Fighting Runs in the Family Area: 23
|
||||
ID: 23007 Name: Cell's Predicament Area: 23
|
||||
ID: 23006 Name: Have the Tables Turned?! Area: 23
|
||||
ID: 23005 Name: Evolution Area: 23
|
||||
ID: 23004 Name: Contact Area: 23
|
||||
ID: 23003 Name: Cell and Vegeta Area: 23
|
||||
ID: 23002 Name: Decisions Area: 23
|
||||
ID: 23001 Name: A Cruel Twist of Fate Area: 23
|
||||
ID: 22008 Name: Accelerating Danger Area: 22
|
||||
ID: 22007 Name: Indomitable Human Spirit Area: 22
|
||||
ID: 22006 Name: Destroyer of the Universe - 4 Area: 22
|
||||
ID: 22005 Name: Destroyer of the Universe - 3 Area: 22
|
||||
ID: 22004 Name: Destroyer of the Universe - 2 Area: 22
|
||||
ID: 22003 Name: Destroyer of the Universe - 1 Area: 22
|
||||
ID: 22002 Name: Turles Returns! Area: 22
|
||||
ID: 22001 Name: The Nightmare Begins Area: 22
|
||||
ID: 21003 Name: Probe Area: 21
|
||||
ID: 21002 Name: A Mysterious Saiyan Area: 21
|
||||
ID: 21001 Name: After Awakening Area: 21
|
||||
ID: 20008 Name: The Angry Majin Area: 20
|
||||
ID: 20007 Name: Resurrection Area: 20
|
||||
ID: 20006 Name: Countdown Area: 20
|
||||
ID: 20005 Name: Lord of the Demon Realm Area: 20
|
||||
ID: 20004 Name: The Second Assassin Area: 20
|
||||
ID: 20003 Name: The First Assassin Area: 20
|
||||
ID: 20002 Name: Subjugated by Ambition Area: 20
|
||||
ID: 20001 Name: Nothing Ventured... Area: 20
|
||||
ID: 19008 Name: The Mysterious Duo Area: 19
|
||||
ID: 19007 Name: An Unseen Enemy Part 5 Area: 19
|
||||
ID: 19006 Name: An Unseen Enemy Part 4 Area: 19
|
||||
ID: 19005 Name: An Unseen Enemy Part 3 Area: 19
|
||||
ID: 19004 Name: An Unseen Enemy Part 2 Area: 19
|
||||
ID: 19003 Name: An Unseen Enemy Part 1 Area: 19
|
||||
ID: 19002 Name: The Recruited Warrior Area: 19
|
||||
ID: 19001 Name: The Forgotten Champion Area: 19
|
||||
ID: 18008 Name: Master of the Demon Realm, Part 3 Area: 18
|
||||
ID: 18007 Name: Master of the Demon Realm, Part 2 Area: 18
|
||||
ID: 18006 Name: Master of the Demon Realm, Part 1 Area: 18
|
||||
ID: 18005 Name: A Surprising End Area: 18
|
||||
ID: 18004 Name: Frieza's Final Transformation Area: 18
|
||||
ID: 18003 Name: Sovereign of the Warrior Race Area: 18
|
||||
ID: 18002 Name: Commander's Will Area: 18
|
||||
ID: 18001 Name: Coora's Armored Squad Area: 18
|
||||
ID: 17008 Name: Frieza's Second Transformation Area: 17
|
||||
ID: 17007 Name: Frieza's Transformation Area: 17
|
||||
ID: 17006 Name: Deepening Destiny Area: 17
|
||||
ID: 17005 Name: Imperial Power Area: 17
|
||||
ID: 17004 Name: The Elite Force's True Power Area: 17
|
||||
ID: 17003 Name: Zarbon's Transformation Area: 17
|
||||
ID: 17002 Name: Breaking the Siege Area: 17
|
||||
ID: 17001 Name: Frieza's Army Attacks! Area: 17
|
||||
ID: 16008 Name: Ending of the Body Exchange Area: 16
|
||||
ID: 16007 Name: Showdown! New Ginyu Force?! Area: 16
|
||||
ID: 16006 Name: Reunion with Goku? Area: 16
|
||||
ID: 16005 Name: Ginyu's Trespass! Area: 16
|
||||
ID: 16004 Name: Turles the New Saiyan Area: 16
|
||||
ID: 16003 Name: Saiyan Tag Team Returns! Area: 16
|
||||
ID: 16002 Name: Saiyan Trio Area: 16
|
||||
ID: 16001 Name: Reunion with Krillin Area: 16
|
||||
ID: 15003 Name: The Challengers Area: 15
|
||||
ID: 15002 Name: Lost Warrior Area: 15
|
||||
ID: 15001 Name: Extraordinary Evil Area: 15
|
||||
ID: 14008 Name: Nightmarish Android Area: 14
|
||||
ID: 14007 Name: All Guns Blazing Area: 14
|
||||
ID: 14006 Name: Aggressive Circuitry Area: 14
|
||||
ID: 14005 Name: Martial Warrior's Offense Area: 14
|
||||
ID: 14004 Name: Intense Onslaught Area: 14
|
||||
ID: 14003 Name: Ultimate Weapon Unleashed Area: 14
|
||||
ID: 14002 Name: Destiny Repeated Area: 14
|
||||
ID: 14001 Name: In Pursuit of Dr. Gero! Area: 14
|
||||
ID: 13008 Name: Missing Target Area: 13
|
||||
ID: 13007 Name: Bloodcurdling Message Area: 13
|
||||
ID: 13006 Name: Plundered Energy Area: 13
|
||||
ID: 13005 Name: Dr. Gero's Counterattack Area: 13
|
||||
ID: 13004 Name: Ginyu's Big Mistake Area: 13
|
||||
ID: 13003 Name: Unwanted Battle Area: 13
|
||||
ID: 13002 Name: Uninvited Enemies Area: 13
|
||||
ID: 13001 Name: A Peculiar Goku Area: 13
|
||||
ID: 12008 Name: Enter the Savior?! Area: 12
|
||||
ID: 12007 Name: Intellect and Speed Area: 12
|
||||
ID: 12006 Name: Explosive Power Area: 12
|
||||
ID: 12005 Name: Exquisite Team-Up Area: 12
|
||||
ID: 12004 Name: Telekinetic Rampage Area: 12
|
||||
ID: 12003 Name: Battle-Smart Brawler 5 Area: 12
|
||||
ID: 12002 Name: Battle-Smart Brawler 4 Area: 12
|
||||
ID: 12001 Name: Return of the Elites! Area: 12
|
||||
ID: 11008 Name: Best Team There Is Area: 11
|
||||
ID: 11007 Name: Battle-Smart Brawler 3 Area: 11
|
||||
ID: 11006 Name: Battle-Smart Brawler 2 Area: 11
|
||||
ID: 11005 Name: Battle-Smart Brawler 1 Area: 11
|
||||
ID: 11004 Name: The Wayward Invader Area: 11
|
||||
ID: 11003 Name: The Wayward Champion Area: 11
|
||||
ID: 11002 Name: Find Goku! Part 6 Area: 11
|
||||
ID: 11001 Name: Find Goku! Part 5 Area: 11
|
||||
ID: 10008 Name: Conflicting Motives Area: 10
|
||||
ID: 10007 Name: Unexpected Savior Area: 10
|
||||
ID: 10006 Name: Ace in the Hole Area: 10
|
||||
ID: 10005 Name: Dr. Gero's Ambition Area: 10
|
||||
ID: 10004 Name: Red Ribbon's Return 3 Area: 10
|
||||
ID: 10003 Name: Red Ribbon's Return 2 Area: 10
|
||||
ID: 10002 Name: Red Ribbon's Return 1 Area: 10
|
||||
ID: 10001 Name: To the Lab Area: 10
|
||||
ID: 9003 Name: Resolution Area: 9
|
||||
ID: 9002 Name: Super Saiyan Showdown! Area: 9
|
||||
ID: 9001 Name: Ultimate Saiyan Area: 9
|
||||
ID: 8010 Name: Galactic Overlord Frieza Area: 8
|
||||
ID: 8009 Name: Raging Battle Area: 8
|
||||
ID: 8008 Name: Captain Ginyu Arrives! Area: 8
|
||||
ID: 8007 Name: Offense and Defense Part 7 Area: 8
|
||||
ID: 8006 Name: Offense and Defense Part 6 Area: 8
|
||||
ID: 8005 Name: Offense and Defense Part 5 Area: 8
|
||||
ID: 8004 Name: Offense and Defense Part 4 Area: 8
|
||||
ID: 8003 Name: Offense and Defense Part 3 Area: 8
|
||||
ID: 8002 Name: Offense and Defense Part 2 Area: 8
|
||||
ID: 8001 Name: Offense and Defense Part 1 Area: 8
|
||||
ID: 7010 Name: Saiyan's Pride Area: 7
|
||||
ID: 7009 Name: Saiyan Tagteam Area: 7
|
||||
ID: 7008 Name: Elite Warrior Area: 7
|
||||
ID: 7007 Name: Let the Games Begin Area: 7
|
||||
ID: 7006 Name: Saiyan Attack Area: 7
|
||||
ID: 7005 Name: Enter Goku! Area: 7
|
||||
ID: 7004 Name: Find Goku! Part 4 Area: 7
|
||||
ID: 7003 Name: Find Goku! Part 3 Area: 7
|
||||
ID: 7002 Name: Find Goku! Part 2 Area: 7
|
||||
ID: 7001 Name: Find Goku! Part 1 Area: 7
|
||||
ID: 6010 Name: Cell's Ambition Area: 6
|
||||
ID: 6009 Name: Cell Approaches Area: 6
|
||||
ID: 6008 Name: Nightmare Team Assault Area: 6
|
||||
ID: 6007 Name: Unending Energy of Terror Area: 6
|
||||
ID: 6006 Name: Enter Android #17! Area: 6
|
||||
ID: 6005 Name: Android #18's Super Power Area: 6
|
||||
ID: 6004 Name: Android #18's Games Part 3 Area: 6
|
||||
ID: 6003 Name: Android #18's Games Part 2 Area: 6
|
||||
ID: 6002 Name: Android #18's Games Part 1 Area: 6
|
||||
ID: 6001 Name: Android Appearance Area: 6
|
||||
ID: 5010 Name: The Mighty Ginyu Force Area: 5
|
||||
ID: 5009 Name: Purple Comet Area: 5
|
||||
ID: 5008 Name: Red Magma Area: 5
|
||||
ID: 5007 Name: Blue Hurricane Area: 5
|
||||
ID: 5006 Name: Orange-Haired Hazard Area: 5
|
||||
ID: 5005 Name: Psychokinesis Area: 5
|
||||
ID: 5004 Name: Before the Storm Area: 5
|
||||
ID: 5003 Name: Piccolo's Terms Area: 5
|
||||
ID: 5002 Name: Intensive Training Area: 5
|
||||
ID: 5001 Name: Pint-Sized Super Warrior Area: 5
|
||||
ID: 4008 Name: Brutal Counterattack Area: 4
|
||||
ID: 4007 Name: The Beautiful Warrior Zarbon Area: 4
|
||||
ID: 4006 Name: Alien Warrior Encounter 5 Area: 4
|
||||
ID: 4005 Name: Alien Warrior Encounter 4 Area: 4
|
||||
ID: 4004 Name: Pursuer Who Summons Death Area: 4
|
||||
ID: 4003 Name: Alien Warrior Encounter 3 Area: 4
|
||||
ID: 4002 Name: Alien Warrior Encounter 2 Area: 4
|
||||
ID: 4001 Name: Alien Warrior Encounter 1 Area: 4
|
||||
ID: 3008 Name: Fierce Fight for Honor Area: 3
|
||||
ID: 3007 Name: Crane School Pride Area: 3
|
||||
ID: 3006 Name: Revenge of Crane School Area: 3
|
||||
ID: 3005 Name: Turtle School Trial Lesson Area: 3
|
||||
ID: 3004 Name: Clever Krillin Area: 3
|
||||
ID: 3003 Name: Telekinetic Threat Area: 3
|
||||
ID: 3002 Name: World's Greatest Teacher Area: 3
|
||||
ID: 3001 Name: Squad Leader Area: 3
|
||||
ID: 2005 Name: Malicious Android: Cell Area: 2
|
||||
ID: 2004 Name: New Enemy Area: 2
|
||||
ID: 2003 Name: Mysterious Ki Area: 2
|
||||
ID: 2002 Name: Ghost Town Investigation Area: 2
|
||||
ID: 2001 Name: Premonition of Doom Area: 2
|
||||
ID: 1005 Name: Invasion of the Warrior Race Area: 1
|
||||
ID: 1004 Name: Reinvestigation Area: 1
|
||||
ID: 1003 Name: Unrivaled Assassin Area: 1
|
||||
ID: 1002 Name: Pursuing Mercenary Tao Area: 1
|
||||
ID: 1001 Name: After the Tournament... Area: 1
|
||||
ID: 1 Name: To the Tournament! Area: 10001
|
||||
|
||||
The Horrific Cell Games
|
||||
--------------------------------------------
|
||||
The Cell Games 502001 Difficulties: [0, 1, 2] AreaID: 502
|
||||
The Extreme Terror 502002 Difficulties: [2] AreaID: 502
|
||||
Waking Nightmare 502003 Difficulties: [3] AreaID: 502
|
||||
Tournament of Destiny 502004 Difficulties: [2, 4] AreaID: 502
|
||||
|
||||
Transcendent Awakening Surpassing the Strongest
|
||||
--------------------------------------------
|
||||
Let's Go, Gohan! 555001 Difficulties: [2, 4] AreaID: 555
|
||||
|
||||
Extreme Z-Area Androids/Cell Saga
|
||||
-------------------------------------------
|
||||
Invincible Battle Form (Goku) 714001 Difficulties [2,3] AreaID: 714
|
||||
Answers Found in Training (Vegeta) 714002 Difficulties [2,3]
|
||||
|
||||
Infinite Dragon Ball History
|
||||
--------------------------------------
|
||||
Androids/Cell Saga (vs. Super Warriors) 713001 Difficulties: [5] AreaID: 713
|
||||
Androids/Cell Saga (vs. Androids) Difficulties 713002 [5] AreaID: 713
|
||||
|
||||
Evolution of the Ultimate Life Form
|
||||
--------------------------------------
|
||||
The Android Cell 182001 Difficulties [1] AreaID: 182
|
||||
The First Evolution 182002 Difficulties [1] AreaID: 182
|
||||
Perfect Form Achieved 182003 Difficulties [1] AreaID: 182
|
||||
Cell's Offspring 182004 Difficulties [1] AreaID: 182
|
||||
Perfect Form at Full Power 182005 [1] AreaID: 182
|
||||
|
||||
Warrior of Fury! Super Saiyan
|
||||
-----------------------------------
|
||||
This Is It! Super Saiyan! 553001 Difficulties [2,4] AreaID: 553
|
||||
|
||||
Cataclysmic Clash! Final Showdown with Frieza
|
||||
-----------------------------------
|
||||
Come Forth, Porunga! 362001 Difficulties: [0, 2] AreaID: 362
|
||||
Frieza's Fearsome Transformation! 362002 Difficulties: [0, 2] AreaID: 362
|
||||
Fearless Piccolo 362003 Difficulties: [0, 2] AreaID: 362
|
||||
Frieza's Second Transformation 362004 Difficulties: [0, 2] AreaID: 362
|
||||
Frieza or Vegeta? 362005 Difficulties: [0, 2] AreaID: 362
|
||||
The Ultimate Battle Begins! 362006 Difficulties: [0, 2] AreaID: 362
|
||||
Kaioken... Times Twenty?! 362007 Difficulties: [0, 2] AreaID: 362
|
||||
The Last Chance! Large Spirit Bomb 362008 Difficulties: [0, 2] AreaID: 362
|
||||
The Legendary Super Saiyan 362009 Difficulties: [0, 2] AreaID: 362
|
||||
Final Clash Between the Two Warriors 362010 Difficulties: [0, 2] AreaID: 362
|
||||
Quiet Yet Fierce Battle 362011 Difficulties: [0, 2] AreaID: 362
|
||||
End of Everything 362012 Difficulties: [0, 2] AreaID: 362
|
||||
|
||||
Fighting Legend: Goku.
|
||||
-----------------------------------
|
||||
Area id : 712. Stage id : 712001 difficulty [ 5 ]
|
||||
165
LICENSE
165
LICENSE
|
|
@ -1,165 +0,0 @@
|
|||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
||||
483
Lrfarm.py
483
Lrfarm.py
|
|
@ -1,483 +0,0 @@
|
|||
import commands
|
||||
from colorama import init, Fore, Back, Style
|
||||
# Coloroma autoreset
|
||||
init(autoreset=True)
|
||||
|
||||
|
||||
def t():
|
||||
|
||||
print(" Lr Trunks")
|
||||
stage = input('What stage would you like to complete(Proud Bloodline 320022) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Raging Counterstrike 406003) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Dignity of a Clan 408002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(The Strongest Space Pirate 420002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Warrior of Hope 414002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(The Time Patrol Warrior 422002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def mv():
|
||||
print("Majin Vegeta")
|
||||
stage = input('What stage would you like to complete(The Dark Prince Returns 319022) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(15): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(The Strongest Shadow Dragon 517002) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Dark Nightmare 518002) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Fusion in Blue 519001) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Rose-Tinted Plot 520001) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(A New Hope 522001) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def gv():
|
||||
print(" Lr Super Saiyan Goku & Super Saiyan Vegeta")
|
||||
stage = input('What stage would you like to complete(The Ultimate Pair of the Present World 537001) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Ultimate Splendor 512003) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(7): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def b():
|
||||
print("Lr Full Power Boujack (Galactic Warrior)")
|
||||
stage = input('What stage would you like to complete( Extreme Peril 306008) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(25): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def c():
|
||||
print("Lr Cell (Perfect Form) & Cell Jr")
|
||||
stage = input('What stage would you like to complete(Waking Nightmare 502003) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(7): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def tm():
|
||||
print("Lr Trunks (Teen) (Future) & Mai (Future)")
|
||||
stage = input('What stage would you like to complete( The Zero Mortals Plan 328006) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(20): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(Dark Nightmare 518002) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(1): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete( Rose-Tinted Plot 520001) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(1): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(Fusion in Blue 519001) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(1): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete( The Epic Battle Begins 524001) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(1): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(A New Hope 522001) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(2): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete( Last Judgment...Or Last Hope 523002) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(2): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(Searing Rose-Colored Fury 520002) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(2): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete( Sublime Blue! 519002) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(2): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def bw():
|
||||
print("Lr Beerus & Whis")
|
||||
stage = input('What stage would you like to complete(God of Destruction Wrath 511002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(7): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Destruction God Awakens 314001) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(4): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(In Search of the Super Saiyan God 314002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(7): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Vegeta Pride 314007) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(4): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def gg():
|
||||
print("Lr Super Saiyan Gohan (Teen) & Super Saiyan Goten (Kid)")
|
||||
stage = input('What stage would you like to complete(Go! Warriors of the New Generation 552001) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(10): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Blast! Family Kamehameha! 326006) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(20): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def vg():
|
||||
print("Lr Super Saiyan Goku (Angel) & Super Saiyan Vegeta (Angel)")
|
||||
stage = input('What stage would you like to complete(The Ultimate Pair of the Otherworld 536001) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(10): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Fusion Reborn! 326006) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(7): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def tg():
|
||||
print("Lr Trunks (Kid) & Goten (Kid)")
|
||||
stage = input('What stage would you like to complete(An Unexpectedly Powerful Man! 411002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Super Gotenks! 513002) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(One Powerful Super Fusion! 513003) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def gh():
|
||||
print(" Lr Super Saiyan 2 Gohan")
|
||||
stage = input('What stage would you like to complete(Waking Nightmare 502003) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def ggg():
|
||||
print(" Lr Super Saiyan 3 Goku")
|
||||
stage = input('What stage would you like to complete(Super Saiyan Goku 403002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Phantom Majin Resurrected! 535002) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(Mighty Warrior: 24-Hour Revival 528001) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(Ultimate Finishing Move 504002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(4): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def bd():
|
||||
print("Lr Bardock")
|
||||
stage = input('What stage would you like to complete(Saiyans from Planet Vegeta 347001) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(10): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete( 534001 The Unknown Battle) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(347007 A Lone Warriors Last Battle) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete( 602002 True Fear) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(602003 Summit of the Universe) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def gb():
|
||||
print("Lr Goku Black (Super Saiyan Rosé) & Zamasu")
|
||||
stage = input('What stage would you like to complete( 518002 Dark Nightmare) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(519001 Fusion in Blue) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete( 520001 Rose-Tinted Plot) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(522001 A New Hope) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete( 523002 Last Judgment...Or Last Hope) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(524001 The Epic Battle Begins) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(3): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def gf():
|
||||
print("Lr Goku & Frieza (Final Form) (Angel)")
|
||||
stage = input('What stage would you like to complete( 544001 Ever-Evolving Power) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(Ever-Evolving Evil) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(538001 Kaboom! Ultra Instinct) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
"BREAK"
|
||||
stage = input('What stage would you like to complete(533002 The True Golden Frieza) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def by():
|
||||
print("Lr Legendary Super Saiyan Broly")
|
||||
stage = input('What stage would you like to complete(501003 The Demon Returns) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
def android():
|
||||
print("Lr Android 17&18")
|
||||
stage = input('What stage would you like to complete(501002 awakening beyond) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
stage = input('What stage would you like to complete(502002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
stage = input('What stage would you like to complete(503002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
stage = input('What stage would you like to complete(504002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
stage = input('What stage would you like to complete(505002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
stage = input('What stage would you like to complete(506002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
stage = input('What stage would you like to complete(507002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(508002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(510002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(511002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(512002) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(513002) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(514001) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(515002) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(516001) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
def Androids():
|
||||
print("Lr Android 17&18/android#17")
|
||||
stage = input('What stage would you like to complete(543001) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super 2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
stage = input('What stage would you like to complete(366008) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
stage = input('What stage would you like to complete(503002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
stage = input('What stage would you like to complete(366008) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
stage = input('What stage would you like to complete(415002) : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
400
aa.py
400
aa.py
|
|
@ -1,400 +0,0 @@
|
|||
import commands
|
||||
from colorama import init, Fore, Back, Style
|
||||
# Coloroma autoreset
|
||||
init(autoreset=True)
|
||||
|
||||
|
||||
def ss():
|
||||
print("TEQ Super Saiyan God SS Vegito")
|
||||
stage = input('What stage would you like to complete(519002 Sublime Blue!) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def sss():
|
||||
print("PHY Super Saiyan Broly")
|
||||
stage = input('What stage would you like to complete(548001 The Greatest Saiyan Adversary) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def ssss():
|
||||
print("STR Super Gogeta")
|
||||
stage = input('What stage would you like to complete(505003 Fusion Reborn!) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(2): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def s():
|
||||
print("AGL Super Saiyan Gogeta")
|
||||
stage = input('What stage would you like to complete(549001 The Omnipotent Saiyan Warrior) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def a():
|
||||
print("INT SSJ3 Bardock")
|
||||
stage = input('What stage would you like to complete(534001 The Unknown Battle : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def aa():
|
||||
print("STR SSJ4 Goku")
|
||||
stage = input('What stage would you like to complete(525001 The Scarlet Hero! Super Saiyan 4! : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def aaa():
|
||||
print("INT UI Goku")
|
||||
stage = input('What stage would you like to complete(538001 Kaboom! Ultra Instinct : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def aaaa():
|
||||
print("AGL SSJ4 Vegeta")
|
||||
stage = input('What stage would you like to complete(526001 The Crimson Flash! Super Saiyan 4 : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def b():
|
||||
print("PHY FP Frieza")
|
||||
stage = input('What stage would you like to complete(507002 Full-Power Final Battle : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def bb():
|
||||
print("TEQ Golden Frieza")
|
||||
stage = input('What stage would you like to complete(516001 Emperors Obsession Area : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def bbb():
|
||||
print("AGL SSJ3 Goku")
|
||||
stage = input('What stage would you like to complete(504002 Ultimate Finishing Move Area : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(10): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def bbbb():
|
||||
print("TEQ SSJ4 Gogeta")
|
||||
stage = input('What stage would you like to complete(532001 The Ultimate Super Gogeta : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def c():
|
||||
print("INT Super Gogeta")
|
||||
stage = input('What stage would you like to complete(505003 Fusion Reborn!) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def cc():
|
||||
print("SSJ3 Gotenks")
|
||||
stage = input('What stage would you like to complete(513002 Super Gotenks) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
def ccc():
|
||||
print("TEQ FP SSJ4 Goku")
|
||||
stage = input('What stage would you like to complete(542001 Transcend Super Saiyan 4) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def cccc():
|
||||
print("STR Jiren")
|
||||
stage = input('What stage would you like to complete(540002 Confronting the Strongest of All Universes) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def d():
|
||||
print("INT Golden Frieza")
|
||||
stage = input('What stage would you like to complete(533002 The True Golden Frieza) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def dd():
|
||||
print("PHY Android 17")
|
||||
stage = input('What stage would you like to complete(543001 Superb Ranger) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def ddd():
|
||||
print("TEQ Hit")
|
||||
stage = input('What stage would you like to complete(547001 The Deadliest Assassin) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def dddd():
|
||||
print("AGL SSBE Vegeta")
|
||||
stage = input('What stage would you like to complete(524002 Battle for Honor and Pride) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def e():
|
||||
print("PHY Kid Buu")
|
||||
stage = input('What stage would you like to complete(524003 Regression to Evil) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def ee():
|
||||
print("INT Kid Buu")
|
||||
stage = input('What stage would you like to complete(524003 Regression to Evil) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def eee():
|
||||
print("TEQ SSJ3 Goku (Angel)")
|
||||
stage = input('What stage would you like to complete(528001 Mighty Warrior: 24-Hour Revival) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def eeee():
|
||||
print("PHY Goku Black")
|
||||
stage = input('What stage would you like to complete(518002 Dark Nightmare) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def f():
|
||||
print("INT Goku Black")
|
||||
stage = input('What stage would you like to complete(518003 Black Harbinger of Destruction) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def ff():
|
||||
print("TEQ SSG Goku")
|
||||
stage = input('What stage would you like to complete(549001 The Omnipotent Saiyan Warrior) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def ffx():
|
||||
print("STR SSG Vegeta")
|
||||
stage = input('What stage would you like to complete(549001 The Omnipotent Saiyan Warrior) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def fff():
|
||||
print("AGL SSGSS Goku")
|
||||
stage = input('What stage would you like to complete(514001 Ceaseless Combat) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def ffff():
|
||||
print("STR Toppo")
|
||||
stage = input('What stage would you like to complete(524002 Battle for Honor and Pride) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def g():
|
||||
print("STR Rose Goku Black")
|
||||
stage = input('What stage would you like to complete(520002 Searing Rose-Colored Fury) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def gg():
|
||||
print("PHY SSGSS Vegito")
|
||||
stage = input('What stage would you like to complete(519001 Fusion in Blue) : ')
|
||||
difficulty = input('Enter the difficulty|(3:Super): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def ggg():
|
||||
print("STR SSJ3 Goku")
|
||||
stage = input('What stage would you like to complete(504002 Ultimate Finishing Move Area : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(10): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def gggx():
|
||||
print("TEQ SSJ3 Broly")
|
||||
stage = input('What stage would you like to complete(531001 All-Time Nastiest Evolution : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def gggg():
|
||||
print("AGL Transgoku")
|
||||
stage = input('What stage would you like to complete(544001 Ever-Evolving Power : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def h():
|
||||
print("STR SSJ3 Vegeta")
|
||||
stage = input('What stage would you like to complete(510002 The Most Powerful Blow : ')
|
||||
difficulty = input('Enter the difficulty|(2:Z-Hard): ')
|
||||
loop = input('Enter how many times to execute(10): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def hh():
|
||||
print("PHY SSJ3 Gotenks")
|
||||
stage = input('What stage would you like to complete(513003 One Powerful Super Fusion! : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def hhh():
|
||||
print("AGL Turles")
|
||||
stage = input('What stage would you like to complete(539001 Arrival of the Universe-Crusher! : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def hhhh():
|
||||
print("STR Janemba")
|
||||
stage = input('What stage would you like to complete(506003 Overwhelming Force of Evil! : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def j():
|
||||
print("INT Janemba")
|
||||
stage = input('What stage would you like to complete(506003 Overwhelming Force of Evil! : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(2): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def jj():
|
||||
print("TEQ TransFrieza")
|
||||
stage = input('What stage would you like to complete(545001 Ever-Evolving Evil : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(11): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
|
||||
#####################################################################################################################
|
||||
def jjj():
|
||||
print("AGL Broly")
|
||||
stage = input('What stage would you like to complete(548001 The Greatest Saiyan Adversary) : ')
|
||||
difficulty = input('Enter the difficulty|(4:Super2): ')
|
||||
loop = input('Enter how many times to execute(5): ')
|
||||
for i in range(int(loop)):
|
||||
commands.complete_stage(stage, difficulty)
|
||||
|
||||
6456
commands.py
6456
commands.py
File diff suppressed because it is too large
Load diff
121
config.py
121
config.py
|
|
@ -1,121 +0,0 @@
|
|||
from orator import DatabaseManager, Model
|
||||
|
||||
AdId = None
|
||||
UniqueId = None
|
||||
identifier = None
|
||||
access_token = None
|
||||
secret = None
|
||||
client = 'japan'
|
||||
platform = 'android'
|
||||
|
||||
deck = 1
|
||||
allow_stamina_refill = True
|
||||
|
||||
|
||||
### Database Config
|
||||
jp_config = {'mysql': {'driver': 'sqlite', 'database': 'jp.db'}}
|
||||
glb_config = {'mysql': {'driver': 'sqlite', 'database': 'glb.db'}}
|
||||
db_glb = DatabaseManager(glb_config)
|
||||
db_jp = DatabaseManager(jp_config)
|
||||
Model.set_connection_resolver(db_glb)
|
||||
|
||||
class LeaderSkills(Model):
|
||||
|
||||
__table__ = 'leader_skills'
|
||||
|
||||
class LinkSkills(Model):
|
||||
|
||||
__table__ = 'link_skills'
|
||||
|
||||
class AreaTabs(Model):
|
||||
|
||||
__table__ = 'area_tabs'
|
||||
|
||||
class CardSpecials(Model):
|
||||
|
||||
__table__ = 'card_specials'
|
||||
|
||||
class Passives(Model):
|
||||
|
||||
__table__ = 'passive_skill_sets'
|
||||
|
||||
class Supers(Model):
|
||||
|
||||
__table__ = 'specials'
|
||||
|
||||
class ZBattles(Model):
|
||||
|
||||
__table__ = 'z_battle_stage_views'
|
||||
|
||||
class CardCategories(Model):
|
||||
|
||||
__table__ = 'card_categories'
|
||||
|
||||
class CardCardCategories(Model):
|
||||
|
||||
__table__ = 'card_card_categories'
|
||||
|
||||
class TreasureItems(Model):
|
||||
|
||||
__table__ = 'treasure_items'
|
||||
|
||||
|
||||
class AwakeningItems(Model):
|
||||
|
||||
__table__ = 'awakening_items'
|
||||
|
||||
|
||||
class SupportItems(Model):
|
||||
|
||||
__table__ = 'support_items'
|
||||
|
||||
|
||||
class PotentialItems(Model):
|
||||
|
||||
__table__ = 'potential_items'
|
||||
|
||||
class SpecialItems(Model):
|
||||
|
||||
__table__ = 'special_items'
|
||||
|
||||
|
||||
class TrainingItems(Model):
|
||||
|
||||
__table__ = 'training_items'
|
||||
|
||||
|
||||
class Cards(Model):
|
||||
|
||||
__table__ = 'cards'
|
||||
|
||||
|
||||
class Quests(Model):
|
||||
|
||||
__table__ = 'quests'
|
||||
|
||||
class Ranks(Model):
|
||||
|
||||
__table__ = 'rank_statuses'
|
||||
|
||||
|
||||
class TrainingFields(Model):
|
||||
|
||||
__table__ = 'training_fields'
|
||||
|
||||
|
||||
class Sugoroku(Model):
|
||||
|
||||
__table__ = 'sugoroku_maps'
|
||||
|
||||
|
||||
class Area(Model):
|
||||
|
||||
__table__ = 'areas'
|
||||
|
||||
|
||||
class Medal(Model):
|
||||
|
||||
__table__ = 'awakening_items'
|
||||
|
||||
|
||||
|
||||
BIN
database.db
BIN
database.db
Binary file not shown.
BIN
dataenc_glb.db
BIN
dataenc_glb.db
Binary file not shown.
BIN
dataenc_jp.db
BIN
dataenc_jp.db
Binary file not shown.
33
decrypt.py
33
decrypt.py
|
|
@ -1,33 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# Module : decrypt.py
|
||||
# Author : bssthu
|
||||
# Project : pysqlsimplecipher
|
||||
# Creation date : 2016-06-03
|
||||
# Description :
|
||||
#
|
||||
|
||||
|
||||
import sys
|
||||
from pysqlsimplecipher import decryptor
|
||||
|
||||
|
||||
def usage():
|
||||
print('Usage: python decrypt.py encrypted.db password output.db')
|
||||
|
||||
|
||||
def main():
|
||||
# arguments
|
||||
argv = sys.argv
|
||||
if len(argv) != 4:
|
||||
usage()
|
||||
return
|
||||
filename_in = argv[1]
|
||||
password = bytearray(argv[2].encode('utf8'))
|
||||
filename_out = argv[3]
|
||||
|
||||
decryptor.decrypt_file(filename_in, password, filename_out)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
32
decryptor.py
32
decryptor.py
|
|
@ -1,32 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Module : decrypt.py
|
||||
# Author : bssthu
|
||||
# Project : pysqlsimplecipher
|
||||
# Creation date : 2016-06-03
|
||||
# Description :
|
||||
#
|
||||
|
||||
|
||||
import sys
|
||||
from pysqlsimplecipher import decryptor
|
||||
|
||||
|
||||
def usage():
|
||||
print('Usage: python decrypt.py encrypted.db password output.db')
|
||||
|
||||
|
||||
def main(p = '9bf9c6ed9d537c399a6c4513e92ab24717e1a488381e3338593abd923fc8a13b'):
|
||||
|
||||
password = bytearray(p.encode('utf8'))
|
||||
if p == '9bf9c6ed9d537c399a6c4513e92ab24717e1a488381e3338593abd923fc8a13b':
|
||||
filename_in = 'dataenc_glb.db'
|
||||
filename_out = 'glb.db'
|
||||
else:
|
||||
filename_in = 'dataenc_jp.db'
|
||||
filename_out = 'jp.db'
|
||||
|
||||
decryptor.decrypt_file(filename_in, password, filename_out)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
122
dokkan.py
122
dokkan.py
|
|
@ -1,122 +0,0 @@
|
|||
from colorama import init, Fore, Back, Style
|
||||
import commands
|
||||
import config
|
||||
import sys
|
||||
|
||||
# Coloroma autoreset
|
||||
init(autoreset=True)
|
||||
|
||||
|
||||
while True:
|
||||
print(' ')
|
||||
print(Fore.CYAN + Style.BRIGHT + 'Select one of the following')
|
||||
print('---------------------------------')
|
||||
print(' ')
|
||||
# Database Check.
|
||||
while True:
|
||||
print('Check for updated database? (' + Fore.YELLOW + Style.BRIGHT + 'Yes: 1 ' + Style.RESET_ALL + 'or ' + Fore.YELLOW + Style.BRIGHT + 'No: 2' + Style.RESET_ALL + ')',end='')
|
||||
print()
|
||||
db = input(' ')
|
||||
if db.lower() == '1':
|
||||
commands.db_download()
|
||||
break
|
||||
elif db.lower() == '2':
|
||||
break
|
||||
else:
|
||||
print('')
|
||||
continue
|
||||
|
||||
# Daily Logins?
|
||||
print(' ')
|
||||
print(Fore.CYAN + Style.BRIGHT + 'Choose an option')
|
||||
print('---------------------------------')
|
||||
print(' ')
|
||||
while True:
|
||||
print('Perform daily logins on all accounts? (' + Fore.YELLOW + Style.BRIGHT + 'Yes: 1 ' + Style.RESET_ALL + 'or ' + Fore.YELLOW + Style.BRIGHT + 'No: 2' + Style.RESET_ALL + ')',end='')
|
||||
print()
|
||||
db = input(' ')
|
||||
if db.lower() == '1':
|
||||
commands.bulk_daily_logins()
|
||||
break
|
||||
elif db.lower() == '2':
|
||||
break
|
||||
else:
|
||||
continue
|
||||
|
||||
# Decide which client to use.
|
||||
print(' ')
|
||||
print(Fore.CYAN + Style.BRIGHT + 'Choose a version')
|
||||
print('---------------------------------')
|
||||
print(' ')
|
||||
while True:
|
||||
print('Which version? (' + Fore.YELLOW + Style.BRIGHT + 'Jp: 1 ' + Style.RESET_ALL + 'or ' + Fore.YELLOW + Style.BRIGHT + 'Global: 2' + Style.RESET_ALL + ')',end='')
|
||||
print()
|
||||
client = input(" ")
|
||||
if client.lower() == '1':
|
||||
config.client = 'japan'
|
||||
break
|
||||
elif client.lower() == '2':
|
||||
config.client = 'global'
|
||||
break
|
||||
else:
|
||||
continue
|
||||
|
||||
|
||||
# User Options
|
||||
print(' ')
|
||||
while True:
|
||||
print('---------------------------------')
|
||||
print(Fore.CYAN + Style.BRIGHT + 'New Account :' + Fore.YELLOW + Style.BRIGHT + ' 0')
|
||||
print(Fore.CYAN + Style.BRIGHT + 'Transfer Account :' + Fore.YELLOW + Style.BRIGHT + ' 1')
|
||||
print(Fore.CYAN + Style.BRIGHT + 'Load From Save :' + Fore.YELLOW + Style.BRIGHT + ' 2')
|
||||
print('---------------------------------')
|
||||
print(' ')
|
||||
command = input('Enter your choice: ')
|
||||
if command == '0':
|
||||
print(' ')
|
||||
config.identifier = commands.signup()
|
||||
commands.save_account()
|
||||
config.access_token,config.secret = commands.signin(config.identifier)
|
||||
commands.tutorial()
|
||||
commands.daily_login()
|
||||
break
|
||||
elif command == '1':
|
||||
print(' ')
|
||||
commands.transfer_account()
|
||||
commands.daily_login()
|
||||
break
|
||||
elif command == '2':
|
||||
print(' ')
|
||||
commands.load_account()
|
||||
commands.daily_login()
|
||||
commands.accept_gifts()
|
||||
commands.accept_missions()
|
||||
break
|
||||
else:
|
||||
print(Fore.RED + Style.BRIGHT + "Command not understood")
|
||||
|
||||
|
||||
# User commands.
|
||||
while True:
|
||||
print('---------------------------------')
|
||||
print(Fore.CYAN + Style.BRIGHT + "Type" + Fore.YELLOW + Style.BRIGHT + " 'help'" + Fore.CYAN + Style.BRIGHT + " to view all commands.")
|
||||
|
||||
# Set up comma separated chain commands. Handled via stdin
|
||||
try:
|
||||
command = input()
|
||||
except:
|
||||
sys.stdin = sys.__stdin__
|
||||
command = input()
|
||||
|
||||
if command == 'exit':
|
||||
break
|
||||
# Pass command to command executor and handle keyboard interrupts.
|
||||
try:
|
||||
commands.user_command_executor(command)
|
||||
except KeyboardInterrupt:
|
||||
print(Fore.CYAN + Style.BRIGHT + 'User interrupted process.')
|
||||
except Exception as e:
|
||||
print(Fore.RED + Style.BRIGHT + repr(e))
|
||||
|
||||
|
||||
|
||||
33
encrypt.py
33
encrypt.py
|
|
@ -1,33 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# Module : encrypt.py
|
||||
# Author : bssthu
|
||||
# Project : pysqlsimplecipher
|
||||
# Creation date : 2016-06-03
|
||||
# Description :
|
||||
#
|
||||
|
||||
|
||||
import sys
|
||||
from pysqlsimplecipher import encryptor
|
||||
|
||||
|
||||
def usage():
|
||||
print('Usage: python encrypt.py plain.db password output.db')
|
||||
|
||||
|
||||
def main():
|
||||
# arguments
|
||||
argv = sys.argv
|
||||
if len(argv) != 4:
|
||||
usage()
|
||||
return
|
||||
filename_in = argv[1]
|
||||
password = bytearray(argv[2].encode('utf8'))
|
||||
filename_out = argv[3]
|
||||
|
||||
encryptor.encrypt_file(filename_in, password, filename_out)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
188
extra.py
188
extra.py
|
|
@ -1,188 +0,0 @@
|
|||
import commands
|
||||
from colorama import init, Fore, Back, Style
|
||||
# Coloroma autoreset
|
||||
init(autoreset=True)
|
||||
|
||||
|
||||
def sbr_new():
|
||||
|
||||
print('---------------------------------')
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Universe Survival Sagaa Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710021', 5)
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Super Saiyan 3" Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710022', 5)
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Giant Form Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710023', 5)
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Transformation Boost Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710024', 5)
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Ginyu Force Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710025', 5)
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Movie Bosses Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710026', 5)
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Pure Saiyans Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710027', 5)
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Future Saga Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710028', 5)
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Full Power Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710029', 5)
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Androids Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710030', 5)
|
||||
|
||||
|
||||
def sbr_next():
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Super Class Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710011', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Extreme Class Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710012', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Fusion Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710013', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Shadow Dragons Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710014', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Peppy Gals Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710015', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Hybrid Saiyans Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710016', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Resurrected Warriors Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710017', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Realm of Gods Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710018', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Majin Buu Saga Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710019', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Potara Category Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710020', 5)
|
||||
|
||||
print('---------------------------------')
|
||||
|
||||
|
||||
def complete_sbr():
|
||||
print('------------------------------------')
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Super TEQ Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710001', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Extreme TEQ Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710002', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Super INT Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710003', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Extreme INT Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710004', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Super PHY Team')
|
||||
|
||||
commands.complete_stage('710005', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Extreme PHY Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710006', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Super AGL Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710007', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Extreme AGL Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710008', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Super STR Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710009', 5)
|
||||
|
||||
print(Fore.YELLOW + Style.BRIGHT + 'Clear with Extreme STR Team')
|
||||
|
||||
commands.change_team()
|
||||
|
||||
commands.complete_stage('710010', 5)
|
||||
|
||||
|
||||
print('---------------------------------')
|
||||
|
||||
BIN
glb.db
BIN
glb.db
Binary file not shown.
2
help.txt
2
help.txt
|
|
@ -1,2 +0,0 @@
|
|||
1572486763
|
||||
1569982484
|
||||
BIN
jp.db
BIN
jp.db
Binary file not shown.
139
packet.py
139
packet.py
|
|
@ -1,139 +0,0 @@
|
|||
### packet.py contains functions critical to sending requests to the server
|
||||
|
||||
import base64
|
||||
import binascii
|
||||
import config
|
||||
from Crypto.Cipher import AES
|
||||
import hashlib
|
||||
import hmac
|
||||
import json
|
||||
import os
|
||||
import time
|
||||
import uuid
|
||||
|
||||
# Padding for the input string --not
|
||||
# related to encryption itself.
|
||||
|
||||
BLOCK_SIZE = 16 # Bytes
|
||||
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * chr(BLOCK_SIZE
|
||||
- len(s) % BLOCK_SIZE)
|
||||
unpad = lambda s: s[:-ord(s[len(s) - 1:])]
|
||||
|
||||
####################################################################
|
||||
|
||||
def guid():
|
||||
|
||||
# Generates UniqueID & AdIDcompatible with Bandais servers
|
||||
# Returns dict
|
||||
|
||||
UUID = str(uuid.uuid4())
|
||||
UniqueId = str(uuid.uuid4()) + ':' + UUID[0:8]
|
||||
return dict(AdId=str(uuid.uuid4()), UniqueId=UniqueId)
|
||||
|
||||
####################################################################
|
||||
|
||||
def mac(method,action):
|
||||
|
||||
# Creates Mac Authentication header string used when sending requests
|
||||
# returns string
|
||||
|
||||
ts = str(int(round(time.time(), 0)))
|
||||
nonce = ts + ':' + config.AdId
|
||||
if config.client == 'global':
|
||||
value = ts + '\n' + nonce + '\n' + method + '\n' + action + '\n' \
|
||||
+ 'ishin-global.aktsk.com' + '\n' + '3001' + '''
|
||||
|
||||
'''
|
||||
else:
|
||||
value = ts + '\n' + nonce + '\n' + method + '\n' + action + '\n' \
|
||||
+ 'ishin-production.aktsk.jp' + '\n' + '3001' + '''
|
||||
|
||||
'''
|
||||
|
||||
|
||||
hmac_hex_bin = hmac.new(config.secret.encode('utf-8'), value.encode('utf-8'
|
||||
), hashlib.sha256).digest()
|
||||
mac = base64.b64encode(hmac_hex_bin).decode()
|
||||
final = 'MAC ' + 'id=' + '"' + config.access_token + '"' + ' nonce=' + '"' \
|
||||
+ nonce + '"' + ' ts=' + '"' + ts + '"' + ' mac=' + '"' + mac \
|
||||
+ '"'
|
||||
return final
|
||||
|
||||
####################################################################
|
||||
# ================================================================
|
||||
# get_key_and_iv
|
||||
# ================================================================
|
||||
|
||||
def get_key_and_iv(
|
||||
password,
|
||||
salt,
|
||||
klen=32,
|
||||
ilen=16,
|
||||
msgdgst='md5',
|
||||
):
|
||||
'''
|
||||
Derive the key and the IV from the given password and salt.
|
||||
|
||||
This is a niftier implementation than my direct transliteration of
|
||||
the C++ code although I modified to support different digests.
|
||||
|
||||
CITATION: http://stackoverflow.com/questions/13907841/implement-openssl-aes-encryption-in-python
|
||||
|
||||
@param password The password to use as the seed.
|
||||
@param salt The salt.
|
||||
@param klen The key length.
|
||||
@param ilen The initialization vector length.
|
||||
@param msgdgst The message digest algorithm to use.
|
||||
'''
|
||||
|
||||
# equivalent to:
|
||||
# from hashlib import <mdi> as mdf
|
||||
# from hashlib import md5 as mdf
|
||||
# from hashlib import sha512 as mdf
|
||||
|
||||
mdf = getattr(__import__('hashlib', fromlist=[msgdgst]), msgdgst)
|
||||
password = password.encode('ascii', 'ignore') # convert to ASCII
|
||||
|
||||
try:
|
||||
maxlen = klen + ilen
|
||||
keyiv = mdf(password + salt).digest()
|
||||
tmp = [keyiv]
|
||||
while len(tmp) < maxlen:
|
||||
tmp.append(mdf(tmp[-1] + password + salt).digest())
|
||||
keyiv += tmp[-1] # append the last byte
|
||||
key = keyiv[:klen]
|
||||
iv = keyiv[klen:klen + ilen]
|
||||
return (key, iv)
|
||||
except UnicodeDecodeError:
|
||||
return (None, None)
|
||||
|
||||
|
||||
####################################################################
|
||||
def encrypt_sign(data):
|
||||
data = pad(data)
|
||||
key1 = str.encode(data)
|
||||
password = \
|
||||
'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzJ9JaHioVi6rr0TAfr6j'
|
||||
salt = os.urandom(8)
|
||||
(key, iv) = get_key_and_iv(password, salt, klen=32, ilen=16,
|
||||
msgdgst='md5')
|
||||
cipher = AES.new(key, AES.MODE_CBC, iv)
|
||||
a = cipher.encrypt(key1)
|
||||
a = salt + a
|
||||
return base64.b64encode(a).decode()
|
||||
|
||||
|
||||
####################################################################
|
||||
def decrypt_sign(sign):
|
||||
buffer = base64.b64decode(sign)
|
||||
buffer_encoded = base64.b64encode(buffer)
|
||||
password = \
|
||||
'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzJ9JaHioVi6rr0TAfr6j'
|
||||
salt = buffer[0:8]
|
||||
(key, iv) = get_key_and_iv(password, salt, klen=32, ilen=16,
|
||||
msgdgst='md5')
|
||||
data = buffer[8:len(buffer)]
|
||||
cipher = AES.new(key, AES.MODE_CBC, iv)
|
||||
a = unpad(cipher.decrypt(data)).decode('utf8')
|
||||
return json.loads(a)
|
||||
####################################################################
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,19 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# Module : config.py
|
||||
# Author : bssthu
|
||||
# Project : pysqlsimplecipher
|
||||
# Creation date : 2016-06-03
|
||||
# Description :
|
||||
#
|
||||
|
||||
|
||||
salt_mask = 0x3a
|
||||
key_sz = 32
|
||||
key_iter = 64000
|
||||
hmac_key_sz = 32
|
||||
hmac_key_iter = 2
|
||||
page_sz = 1024
|
||||
iv_sz = 16
|
||||
reserve_sz = 48
|
||||
hmac_sz = 20
|
||||
|
|
@ -1,143 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# Module : decryptor.py
|
||||
# Author : bssthu
|
||||
# Project : pysqlsimplecipher
|
||||
# Creation date : 2016-06-03
|
||||
# Description :
|
||||
#
|
||||
|
||||
|
||||
from pysqlsimplecipher import config
|
||||
from pysqlsimplecipher import util
|
||||
|
||||
|
||||
def decrypt_file(filename_in, password, filename_out):
|
||||
if not isinstance(filename_in, str):
|
||||
raise RuntimeError('filename_in must be a str.')
|
||||
if not isinstance(password, bytearray):
|
||||
raise RuntimeError('password must be a bytearray.')
|
||||
if not isinstance(filename_out, str):
|
||||
raise RuntimeError('filename_out must be a str.')
|
||||
|
||||
# read
|
||||
with open(filename_in, 'rb') as fp:
|
||||
raw = fp.read()
|
||||
|
||||
# decrypt
|
||||
dec = decrypt_default(raw, password)
|
||||
|
||||
# write
|
||||
with open(filename_out, 'wb') as fp:
|
||||
fp.write(dec)
|
||||
|
||||
|
||||
def decrypt_default(raw, password):
|
||||
# configs
|
||||
salt_mask = config.salt_mask
|
||||
key_sz = config.key_sz
|
||||
key_iter = config.key_iter
|
||||
hmac_key_sz = config.hmac_key_sz
|
||||
hmac_key_iter = config.hmac_key_iter
|
||||
page_sz = config.page_sz
|
||||
iv_sz = config.iv_sz
|
||||
reserve_sz = config.reserve_sz
|
||||
hmac_sz = config.hmac_sz
|
||||
|
||||
return decrypt(raw, password, salt_mask, key_sz, key_iter, hmac_key_sz, hmac_key_iter, page_sz, iv_sz, reserve_sz, hmac_sz)
|
||||
|
||||
|
||||
def decrypt(raw, password, salt_mask, key_sz, key_iter, hmac_key_sz, hmac_key_iter, page_sz, iv_sz, reserve_sz, hmac_sz):
|
||||
dec = b'SQLite format 3\0'
|
||||
|
||||
# derive key
|
||||
salt_sz = 16
|
||||
salt = raw[:salt_sz]
|
||||
key, hmac_key = util.key_derive(salt, password, salt_mask, key_sz, key_iter, hmac_key_sz, hmac_key_iter)
|
||||
|
||||
# decrypt file header, try with default page size
|
||||
page_sz, reserve_sz = decrypt_page_header(raw, key, salt_sz, page_sz, iv_sz, reserve_sz)
|
||||
if page_sz < 0 or reserve_sz < 0:
|
||||
raise RuntimeError('failed to decide page size or reserve size.')
|
||||
|
||||
# decrypt pages
|
||||
for i in range(0, int(len(raw) / 1024)):
|
||||
page = util.get_page(raw, page_sz, i + 1)
|
||||
if i == 0:
|
||||
# skip salt
|
||||
page = page[salt_sz:]
|
||||
page_content = page[:-reserve_sz]
|
||||
reserve = page[-reserve_sz:]
|
||||
iv = reserve[:iv_sz]
|
||||
# check hmac
|
||||
hmac_old = reserve[iv_sz:iv_sz+hmac_sz]
|
||||
hmac_new = util.generate_hmac(hmac_key, page_content + iv, i + 1)
|
||||
if not hmac_old == hmac_new:
|
||||
raise RuntimeError('hmac check failed in page %d.' % (i+1))
|
||||
# decrypt content
|
||||
page_dec = util.decrypt(page_content, key, iv)
|
||||
dec += page_dec + util.random_bytes(reserve_sz)
|
||||
|
||||
return dec
|
||||
|
||||
|
||||
def decrypt_page_header(raw, key, salt_sz, page_sz, iv_sz, reserve_sz):
|
||||
"""Try to decrypt first page with default config.
|
||||
|
||||
If default page size fail, change page size.
|
||||
When succeed, return page_sz, reserve_sz.
|
||||
If fail, return -1, -1.
|
||||
"""
|
||||
|
||||
if not util.is_valid_page_size(page_sz):
|
||||
page_sz = 512
|
||||
|
||||
new_reserve_sz = try_get_reserve_size_for_specified_page_size(raw, key, salt_sz, page_sz, iv_sz, reserve_sz)
|
||||
if new_reserve_sz > 0: # default page_sz is ok
|
||||
return page_sz, new_reserve_sz
|
||||
|
||||
page_sz = 512
|
||||
while page_sz <= 65536:
|
||||
new_reserve_sz = try_get_reserve_size_for_specified_page_size(raw, key, salt_sz, page_sz, iv_sz, reserve_sz)
|
||||
if new_reserve_sz > 0:
|
||||
return page_sz, new_reserve_sz
|
||||
page_sz <<= 1
|
||||
|
||||
return -1, -1 # fail
|
||||
|
||||
|
||||
def try_get_reserve_size_for_specified_page_size(raw, key, salt_sz, page_sz, iv_sz, reserve_sz):
|
||||
"""Try to decrypt first page with specified page size.
|
||||
|
||||
If default reserve size fail, change reserve size.
|
||||
When succeed, return reserve size.
|
||||
If always fail, return -1.
|
||||
"""
|
||||
|
||||
first_page_content = util.get_page(raw, page_sz, 1)[salt_sz:]
|
||||
|
||||
if reserve_sz >= iv_sz:
|
||||
first_page_dec = decrypt_by_reserve_size(first_page_content, key, iv_sz, reserve_sz)
|
||||
# default reserve_sz is ok
|
||||
if util.is_valid_decrypted_header(first_page_dec) \
|
||||
and page_sz == util.get_page_size_from_database_header(raw[:salt_sz] + first_page_dec) \
|
||||
and reserve_sz == util.get_reserved_size_from_database_header(raw[:salt_sz] + first_page_dec):
|
||||
return reserve_sz
|
||||
|
||||
# try every possible reserve size.
|
||||
# the usable size of a page is at least 480.
|
||||
for reserve_sz in range(iv_sz, page_sz - 480):
|
||||
first_page_dec = decrypt_by_reserve_size(first_page_content, key, iv_sz, reserve_sz)
|
||||
if util.is_valid_decrypted_header(first_page_dec) \
|
||||
and page_sz == util.get_page_size_from_database_header(raw[:salt_sz] + first_page_dec) \
|
||||
and reserve_sz == util.get_reserved_size_from_database_header(raw[:salt_sz] + first_page_dec):
|
||||
return reserve_sz
|
||||
|
||||
return -1 # fail
|
||||
|
||||
|
||||
def decrypt_by_reserve_size(first_page_without_salt, key, iv_sz, reserve_sz):
|
||||
"""Decrypt page content using specified reserve size"""
|
||||
reserve = first_page_without_salt[-reserve_sz:]
|
||||
iv = reserve[:iv_sz]
|
||||
return util.decrypt(first_page_without_salt, key, iv)
|
||||
|
|
@ -1,95 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# Module : encryptor.py
|
||||
# Author : bssthu
|
||||
# Project : pysqlsimplecipher
|
||||
# Creation date : 2016-06-03
|
||||
# Description :
|
||||
#
|
||||
|
||||
|
||||
import hashlib
|
||||
import hmac
|
||||
from pysqlsimplecipher import config
|
||||
from pysqlsimplecipher import util
|
||||
|
||||
|
||||
def check_database_header(header):
|
||||
if not util.is_valid_database_header(header):
|
||||
raise RuntimeError('invalid database header.')
|
||||
|
||||
page_sz = util.get_page_size_from_database_header(header)
|
||||
if not util.is_valid_page_size(page_sz):
|
||||
raise RuntimeError('invalid page size %d.' % page_sz)
|
||||
|
||||
reserve_sz = util.get_reserved_size_from_database_header(header)
|
||||
if reserve_sz == 0:
|
||||
raise RuntimeError('needs reserved space at the end of each page.')
|
||||
|
||||
return page_sz, reserve_sz
|
||||
|
||||
|
||||
def encrypt_file(filename_in, password, filename_out):
|
||||
if not isinstance(filename_in, str):
|
||||
raise RuntimeError('filename_in must be a str.')
|
||||
if not isinstance(password, bytearray):
|
||||
raise RuntimeError('password must be a bytearray.')
|
||||
if not isinstance(filename_out, str):
|
||||
raise RuntimeError('filename_out must be a str.')
|
||||
|
||||
# read
|
||||
with open(filename_in, 'rb') as fp:
|
||||
raw = fp.read()
|
||||
|
||||
# check header
|
||||
page_sz, reserve_sz = check_database_header(raw[:100])
|
||||
|
||||
# encrypt
|
||||
dec = encrypt_default(raw, password, page_sz, reserve_sz)
|
||||
|
||||
# write
|
||||
with open(filename_out, 'wb') as fp:
|
||||
fp.write(dec)
|
||||
|
||||
|
||||
def encrypt_default(raw, password, page_sz, reserve_sz):
|
||||
# configs
|
||||
salt_mask = config.salt_mask
|
||||
key_sz = config.key_sz
|
||||
key_iter = config.key_iter
|
||||
hmac_key_sz = config.hmac_key_sz
|
||||
hmac_key_iter = config.hmac_key_iter
|
||||
iv_sz = config.iv_sz
|
||||
hmac_sz = config.hmac_sz
|
||||
|
||||
if reserve_sz < iv_sz + hmac_sz:
|
||||
raise RuntimeError('reserved space at the end of each page is %d, needs %d.' % (reserve_sz, iv_sz + hmac_sz))
|
||||
|
||||
return encrypt(raw, password, salt_mask, key_sz, key_iter, hmac_key_sz, hmac_key_iter, page_sz, iv_sz, reserve_sz, hmac_sz)
|
||||
|
||||
|
||||
def encrypt(raw, password, salt_mask, key_sz, key_iter, hmac_key_sz, hmac_key_iter, page_sz, iv_sz, reserve_sz, hmac_sz):
|
||||
salt_sz = 16
|
||||
salt = util.random_bytes(salt_sz)
|
||||
enc = salt
|
||||
|
||||
# derive key
|
||||
key, hmac_key = util.key_derive(salt, password, salt_mask, key_sz, key_iter, hmac_key_sz, hmac_key_iter)
|
||||
|
||||
# encrypt pages
|
||||
for i in range(0, int(len(raw) / 1024)):
|
||||
page = util.get_page(raw, page_sz, i + 1)
|
||||
if i == 0:
|
||||
# skip header string
|
||||
page = page[salt_sz:]
|
||||
page_content = page[:-reserve_sz]
|
||||
iv = util.random_bytes(iv_sz)
|
||||
# encrypt content
|
||||
page_enc = util.encrypt(page_content, key, iv)
|
||||
# generate hmac
|
||||
hmac_new = util.generate_hmac(hmac_key, page_enc + iv, i + 1)
|
||||
enc += page_enc + iv + hmac_new
|
||||
if reserve_sz > iv_sz + hmac_sz:
|
||||
enc += util.random_bytes(reserve_sz - iv_sz - hmac_sz)
|
||||
|
||||
return enc
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# Module : util.py
|
||||
# Author : bssthu
|
||||
# Project : pysqlsimplecipher
|
||||
# Creation date : 2016-06-03
|
||||
# Description :
|
||||
#
|
||||
|
||||
|
||||
import os
|
||||
import math
|
||||
import hashlib
|
||||
import hmac
|
||||
import struct
|
||||
from Crypto.Cipher import AES
|
||||
|
||||
|
||||
def encrypt(raw, key, iv):
|
||||
cipher = AES.new(key, AES.MODE_CBC, iv)
|
||||
return cipher.encrypt(raw)
|
||||
|
||||
|
||||
def decrypt(raw, key, iv):
|
||||
cipher = AES.new(key, AES.MODE_CBC, iv)
|
||||
return cipher.decrypt(raw)
|
||||
|
||||
|
||||
def is_valid_database_header(header):
|
||||
return header[:16] == b'SQLite format 3\0' and is_valid_decrypted_header(header[16:])
|
||||
|
||||
|
||||
def is_valid_decrypted_header(header):
|
||||
# skip first 16 bytes
|
||||
if type(header) is str: # python2
|
||||
header = [ord(x) for x in header]
|
||||
return header[21-16] == 64 and header[22-16] == 32 and header[23-16] == 32
|
||||
|
||||
|
||||
def get_page_size_from_database_header(header):
|
||||
if type(header) is str: # python2
|
||||
page_sz = 256 * ord(header[16]) + ord(header[17])
|
||||
else:
|
||||
page_sz = int.from_bytes(header[16:18], 'big')
|
||||
if page_sz == 1: # since SQLite version 3.7.1
|
||||
page_sz = 65536
|
||||
return page_sz
|
||||
|
||||
|
||||
def get_reserved_size_from_database_header(header):
|
||||
if type(header) is str: # python2
|
||||
return ord(header[20])
|
||||
else:
|
||||
return int(header[20])
|
||||
|
||||
|
||||
def is_valid_page_size(page_sz):
|
||||
# page_sz must be power of 2, and greater than 512
|
||||
return page_sz >= 512 and page_sz == 2 ** int(math.log(page_sz, 2))
|
||||
|
||||
|
||||
def get_page(raw, page_sz, page_no):
|
||||
return raw[page_sz*(page_no-1):page_sz*page_no]
|
||||
|
||||
|
||||
def random_bytes(n):
|
||||
return os.urandom(n)
|
||||
|
||||
|
||||
def key_derive(salt, password, salt_mask, key_sz, key_iter, hmac_key_sz, hmac_key_iter):
|
||||
"""Derive an encryption key for page encryption/decryption, an key for hmac generation"""
|
||||
key = hashlib.pbkdf2_hmac('sha1', password, salt, key_iter, key_sz)
|
||||
|
||||
try:
|
||||
hmac_salt = bytearray([x ^ salt_mask for x in salt])
|
||||
hmac_key = hashlib.pbkdf2_hmac('sha1', key, hmac_salt, hmac_key_iter, hmac_key_sz)
|
||||
except TypeError: # python2
|
||||
hmac_salt = b''
|
||||
for x in salt:
|
||||
hmac_salt += chr(ord(x) ^ salt_mask)
|
||||
hmac_key = hashlib.pbkdf2_hmac('sha1', str(key), hmac_salt, hmac_key_iter, hmac_key_sz)
|
||||
return key, hmac_key
|
||||
|
||||
|
||||
def generate_hmac(hmac_key, content, page_no):
|
||||
hmac_obj = hmac.new(hmac_key, content, hashlib.sha1)
|
||||
hmac_obj.update(struct.pack('<i', page_no))
|
||||
return hmac_obj.digest()
|
||||
49
setup.py
Normal file → Executable file
49
setup.py
Normal file → Executable file
|
|
@ -1,22 +1,37 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# Module : setup.py
|
||||
# Author : bssthu
|
||||
# Project : pysqlsimplecipher
|
||||
# Creation date : 2016-06-05
|
||||
# Description :
|
||||
#
|
||||
from distutils.core import setup
|
||||
|
||||
|
||||
from setuptools import setup
|
||||
def get_version(relpath):
|
||||
"""read version info from file without importing it"""
|
||||
from os.path import dirname, join
|
||||
for line in open(join(dirname(__file__), relpath)):
|
||||
if '__version__' in line:
|
||||
if '"' in line:
|
||||
# __version__ = "0.9"
|
||||
return line.split('"')[1]
|
||||
elif "'" in line:
|
||||
return line.split("'")[1]
|
||||
|
||||
setup(
|
||||
name='wget',
|
||||
version=get_version('wget.py'),
|
||||
author='anatoly techtonik <techtonik@gmail.com>',
|
||||
url='http://bitbucket.org/techtonik/python-wget/',
|
||||
|
||||
setup(name='pysqlsimplecipher',
|
||||
version='0.2',
|
||||
url='https://github.com/bssthu/pysqlsimplecipher',
|
||||
license='GNU Lesser General Public License Version 3',
|
||||
author='bssthu',
|
||||
description='A tool for sqlite database encryption or decryption like sqlcipher without install sqlcipher',
|
||||
install_requires=['pycrypto'],
|
||||
packages=['pysqlsimplecipher']
|
||||
description="pure python download utility",
|
||||
license="Public Domain",
|
||||
classifiers=[
|
||||
'Environment :: Console',
|
||||
'License :: Public Domain',
|
||||
'Operating System :: OS Independent',
|
||||
'Programming Language :: Python :: 2',
|
||||
'Programming Language :: Python :: 3',
|
||||
'Topic :: Software Development :: Libraries :: Python Modules',
|
||||
'Topic :: System :: Networking',
|
||||
'Topic :: Utilities',
|
||||
],
|
||||
|
||||
py_modules=['wget'],
|
||||
|
||||
long_description=open('README.txt').read(),
|
||||
)
|
||||
|
|
|
|||
628
wget.py
Executable file
628
wget.py
Executable file
|
|
@ -0,0 +1,628 @@
|
|||
#!/usr/bin/env python
|
||||
"""
|
||||
Download utility as an easy way to get file from the net
|
||||
|
||||
python -m wget <URL>
|
||||
python wget.py <URL>
|
||||
|
||||
Downloads: http://pypi.python.org/pypi/wget/
|
||||
Development: http://bitbucket.org/techtonik/python-wget/
|
||||
|
||||
wget.py is not option compatible with Unix wget utility,
|
||||
to make command line interface intuitive for new people.
|
||||
|
||||
Public domain by anatoly techtonik <techtonik@gmail.com>
|
||||
Also available under the terms of MIT license
|
||||
Copyright (c) 2010-2015 anatoly techtonik
|
||||
"""
|
||||
|
||||
__version__ = "3.2"
|
||||
|
||||
|
||||
import sys, shutil, os
|
||||
import tempfile
|
||||
import math
|
||||
|
||||
PY3K = sys.version_info >= (3, 0)
|
||||
if PY3K:
|
||||
import urllib.request as ulib
|
||||
import urllib.parse as urlparse
|
||||
else:
|
||||
import urllib as ulib
|
||||
import urlparse
|
||||
|
||||
|
||||
# --- workarounds for Python misbehavior ---
|
||||
|
||||
# enable passing unicode arguments from command line in Python 2.x
|
||||
# https://stackoverflow.com/questions/846850/read-unicode-characters
|
||||
def win32_utf8_argv():
|
||||
"""Uses shell32.GetCommandLineArgvW to get sys.argv as a list of Unicode
|
||||
strings.
|
||||
|
||||
Versions 2.x of Python don't support Unicode in sys.argv on
|
||||
Windows, with the underlying Windows API instead replacing multi-byte
|
||||
characters with '?'.
|
||||
"""
|
||||
|
||||
from ctypes import POINTER, byref, cdll, c_int, windll
|
||||
from ctypes.wintypes import LPCWSTR, LPWSTR
|
||||
|
||||
GetCommandLineW = cdll.kernel32.GetCommandLineW
|
||||
GetCommandLineW.argtypes = []
|
||||
GetCommandLineW.restype = LPCWSTR
|
||||
|
||||
CommandLineToArgvW = windll.shell32.CommandLineToArgvW
|
||||
CommandLineToArgvW.argtypes = [LPCWSTR, POINTER(c_int)]
|
||||
CommandLineToArgvW.restype = POINTER(LPWSTR)
|
||||
|
||||
cmd = GetCommandLineW()
|
||||
argc = c_int(0)
|
||||
argv = CommandLineToArgvW(cmd, byref(argc))
|
||||
argnum = argc.value
|
||||
sysnum = len(sys.argv)
|
||||
result = []
|
||||
if argnum > 0:
|
||||
# Remove Python executable and commands if present
|
||||
start = argnum - sysnum
|
||||
for i in range(start, argnum):
|
||||
result.append(argv[i].encode('utf-8'))
|
||||
return result
|
||||
|
||||
|
||||
# enable unicode output to windows console
|
||||
# https://stackoverflow.com/questions/878972/windows-cmd-encoding-change-causes-python-crash
|
||||
def win32_unicode_console():
|
||||
import codecs
|
||||
from ctypes import WINFUNCTYPE, windll, POINTER, byref, c_int
|
||||
from ctypes.wintypes import BOOL, HANDLE, DWORD, LPWSTR, LPCWSTR, LPVOID
|
||||
|
||||
original_stderr = sys.stderr
|
||||
|
||||
# Output exceptions in this code to original_stderr, so that we can at least see them
|
||||
def _complain(message):
|
||||
original_stderr.write(message if isinstance(message, str) else repr(message))
|
||||
original_stderr.write('\n')
|
||||
|
||||
codecs.register(lambda name: codecs.lookup('utf-8') if name == 'cp65001' else None)
|
||||
|
||||
try:
|
||||
GetStdHandle = WINFUNCTYPE(HANDLE, DWORD)(("GetStdHandle", windll.kernel32))
|
||||
STD_OUTPUT_HANDLE = DWORD(-11)
|
||||
STD_ERROR_HANDLE = DWORD(-12)
|
||||
GetFileType = WINFUNCTYPE(DWORD, DWORD)(("GetFileType", windll.kernel32))
|
||||
FILE_TYPE_CHAR = 0x0002
|
||||
FILE_TYPE_REMOTE = 0x8000
|
||||
GetConsoleMode = WINFUNCTYPE(BOOL, HANDLE, POINTER(DWORD))(("GetConsoleMode", windll.kernel32))
|
||||
INVALID_HANDLE_VALUE = DWORD(-1).value
|
||||
|
||||
def not_a_console(handle):
|
||||
if handle == INVALID_HANDLE_VALUE or handle is None:
|
||||
return True
|
||||
return ((GetFileType(handle) & ~FILE_TYPE_REMOTE) != FILE_TYPE_CHAR
|
||||
or GetConsoleMode(handle, byref(DWORD())) == 0)
|
||||
|
||||
old_stdout_fileno = None
|
||||
old_stderr_fileno = None
|
||||
if hasattr(sys.stdout, 'fileno'):
|
||||
old_stdout_fileno = sys.stdout.fileno()
|
||||
if hasattr(sys.stderr, 'fileno'):
|
||||
old_stderr_fileno = sys.stderr.fileno()
|
||||
|
||||
STDOUT_FILENO = 1
|
||||
STDERR_FILENO = 2
|
||||
real_stdout = (old_stdout_fileno == STDOUT_FILENO)
|
||||
real_stderr = (old_stderr_fileno == STDERR_FILENO)
|
||||
|
||||
if real_stdout:
|
||||
hStdout = GetStdHandle(STD_OUTPUT_HANDLE)
|
||||
if not_a_console(hStdout):
|
||||
real_stdout = False
|
||||
|
||||
if real_stderr:
|
||||
hStderr = GetStdHandle(STD_ERROR_HANDLE)
|
||||
if not_a_console(hStderr):
|
||||
real_stderr = False
|
||||
|
||||
if real_stdout or real_stderr:
|
||||
WriteConsoleW = WINFUNCTYPE(BOOL, HANDLE, LPWSTR, DWORD, POINTER(DWORD), LPVOID)(("WriteConsoleW", windll.kernel32))
|
||||
|
||||
class UnicodeOutput:
|
||||
def __init__(self, hConsole, stream, fileno, name):
|
||||
self._hConsole = hConsole
|
||||
self._stream = stream
|
||||
self._fileno = fileno
|
||||
self.closed = False
|
||||
self.softspace = False
|
||||
self.mode = 'w'
|
||||
self.encoding = 'utf-8'
|
||||
self.name = name
|
||||
self.flush()
|
||||
|
||||
def isatty(self):
|
||||
return False
|
||||
|
||||
def close(self):
|
||||
# don't really close the handle, that would only cause problems
|
||||
self.closed = True
|
||||
|
||||
def fileno(self):
|
||||
return self._fileno
|
||||
|
||||
def flush(self):
|
||||
if self._hConsole is None:
|
||||
try:
|
||||
self._stream.flush()
|
||||
except Exception as e:
|
||||
_complain("%s.flush: %r from %r" % (self.name, e, self._stream))
|
||||
raise
|
||||
|
||||
def write(self, text):
|
||||
try:
|
||||
if self._hConsole is None:
|
||||
if not PY3K and isinstance(text, unicode):
|
||||
text = text.encode('utf-8')
|
||||
elif PY3K and isinstance(text, str):
|
||||
text = text.encode('utf-8')
|
||||
self._stream.write(text)
|
||||
else:
|
||||
if not PY3K and not isinstance(text, unicode):
|
||||
text = str(text).decode('utf-8')
|
||||
elif PY3K and not isinstance(text, str):
|
||||
text = text.decode('utf-8')
|
||||
remaining = len(text)
|
||||
while remaining:
|
||||
n = DWORD(0)
|
||||
# There is a shorter-than-documented limitation on the
|
||||
# length of the string passed to WriteConsoleW (see
|
||||
# <http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1232>.
|
||||
retval = WriteConsoleW(self._hConsole, text, min(remaining, 10000), byref(n), None)
|
||||
if retval == 0 or n.value == 0:
|
||||
raise IOError("WriteConsoleW returned %r, n.value = %r" % (retval, n.value))
|
||||
remaining -= n.value
|
||||
if not remaining:
|
||||
break
|
||||
text = text[n.value:]
|
||||
except Exception as e:
|
||||
_complain("%s.write: %r" % (self.name, e))
|
||||
raise
|
||||
|
||||
def writelines(self, lines):
|
||||
try:
|
||||
for line in lines:
|
||||
self.write(line)
|
||||
except Exception as e:
|
||||
_complain("%s.writelines: %r" % (self.name, e))
|
||||
raise
|
||||
|
||||
if real_stdout:
|
||||
sys.stdout = UnicodeOutput(hStdout, None, STDOUT_FILENO, '<Unicode console stdout>')
|
||||
else:
|
||||
sys.stdout = UnicodeOutput(None, sys.stdout, old_stdout_fileno, '<Unicode redirected stdout>')
|
||||
|
||||
if real_stderr:
|
||||
sys.stderr = UnicodeOutput(hStderr, None, STDERR_FILENO, '<Unicode console stderr>')
|
||||
else:
|
||||
sys.stderr = UnicodeOutput(None, sys.stderr, old_stderr_fileno, '<Unicode redirected stderr>')
|
||||
except Exception as e:
|
||||
_complain("exception %r while fixing up sys.stdout and sys.stderr" % (e,))
|
||||
|
||||
|
||||
# --- helpers ---
|
||||
|
||||
def to_unicode(filename):
|
||||
""":return: filename decoded from utf-8 to unicode"""
|
||||
#
|
||||
if PY3K:
|
||||
# [ ] test this on Python 3 + (Windows, Linux)
|
||||
# [ ] port filename_from_headers once this works
|
||||
# [ ] add test to repository / Travis
|
||||
return filename
|
||||
else:
|
||||
if isinstance(filename, unicode):
|
||||
return filename
|
||||
else:
|
||||
return unicode(filename, 'utf-8')
|
||||
|
||||
def filename_from_url(url):
|
||||
""":return: detected filename as unicode or None"""
|
||||
# [ ] test urlparse behavior with unicode url
|
||||
fname = os.path.basename(urlparse.urlparse(url).path)
|
||||
if len(fname.strip(" \n\t.")) == 0:
|
||||
return None
|
||||
return to_unicode(fname)
|
||||
|
||||
def filename_from_headers(headers):
|
||||
"""Detect filename from Content-Disposition headers if present.
|
||||
http://greenbytes.de/tech/tc2231/
|
||||
|
||||
:param: headers as dict, list or string
|
||||
:return: filename from content-disposition header or None
|
||||
"""
|
||||
if type(headers) == str:
|
||||
headers = headers.splitlines()
|
||||
if type(headers) == list:
|
||||
headers = dict([x.split(':', 1) for x in headers])
|
||||
cdisp = headers.get("Content-Disposition")
|
||||
if not cdisp:
|
||||
return None
|
||||
cdtype = cdisp.split(';')
|
||||
if len(cdtype) == 1:
|
||||
return None
|
||||
if cdtype[0].strip().lower() not in ('inline', 'attachment'):
|
||||
return None
|
||||
# several filename params is illegal, but just in case
|
||||
fnames = [x for x in cdtype[1:] if x.strip().startswith('filename=')]
|
||||
if len(fnames) > 1:
|
||||
return None
|
||||
name = fnames[0].split('=')[1].strip(' \t"')
|
||||
name = os.path.basename(name)
|
||||
if not name:
|
||||
return None
|
||||
return name
|
||||
|
||||
def filename_fix_existing(filename):
|
||||
"""Expands name portion of filename with numeric ' (x)' suffix to
|
||||
return filename that doesn't exist already.
|
||||
"""
|
||||
dirname = u'.'
|
||||
name, ext = filename.rsplit('.', 1)
|
||||
names = [x for x in os.listdir(dirname) if x.startswith(name)]
|
||||
names = [x.rsplit('.', 1)[0] for x in names]
|
||||
suffixes = [x.replace(name, '') for x in names]
|
||||
# filter suffixes that match ' (x)' pattern
|
||||
suffixes = [x[2:-1] for x in suffixes
|
||||
if x.startswith(' (') and x.endswith(')')]
|
||||
indexes = [int(x) for x in suffixes
|
||||
if set(x) <= set('0123456789')]
|
||||
idx = 1
|
||||
if indexes:
|
||||
idx += sorted(indexes)[-1]
|
||||
return '%s (%d).%s' % (name, idx, ext)
|
||||
|
||||
|
||||
# --- terminal/console output helpers ---
|
||||
|
||||
def get_console_width():
|
||||
"""Return width of available window area. Autodetection works for
|
||||
Windows and POSIX platforms. Returns 80 for others
|
||||
|
||||
Code from http://bitbucket.org/techtonik/python-pager
|
||||
"""
|
||||
|
||||
if os.name == 'nt':
|
||||
STD_INPUT_HANDLE = -10
|
||||
STD_OUTPUT_HANDLE = -11
|
||||
STD_ERROR_HANDLE = -12
|
||||
|
||||
# get console handle
|
||||
from ctypes import windll, Structure, byref
|
||||
try:
|
||||
from ctypes.wintypes import SHORT, WORD, DWORD
|
||||
except ImportError:
|
||||
# workaround for missing types in Python 2.5
|
||||
from ctypes import (
|
||||
c_short as SHORT, c_ushort as WORD, c_ulong as DWORD)
|
||||
console_handle = windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
|
||||
|
||||
# CONSOLE_SCREEN_BUFFER_INFO Structure
|
||||
class COORD(Structure):
|
||||
_fields_ = [("X", SHORT), ("Y", SHORT)]
|
||||
|
||||
class SMALL_RECT(Structure):
|
||||
_fields_ = [("Left", SHORT), ("Top", SHORT),
|
||||
("Right", SHORT), ("Bottom", SHORT)]
|
||||
|
||||
class CONSOLE_SCREEN_BUFFER_INFO(Structure):
|
||||
_fields_ = [("dwSize", COORD),
|
||||
("dwCursorPosition", COORD),
|
||||
("wAttributes", WORD),
|
||||
("srWindow", SMALL_RECT),
|
||||
("dwMaximumWindowSize", DWORD)]
|
||||
|
||||
sbi = CONSOLE_SCREEN_BUFFER_INFO()
|
||||
ret = windll.kernel32.GetConsoleScreenBufferInfo(
|
||||
console_handle, byref(sbi))
|
||||
if ret == 0:
|
||||
return 0
|
||||
return sbi.srWindow.Right+1
|
||||
|
||||
elif os.name == 'posix':
|
||||
from fcntl import ioctl
|
||||
from termios import TIOCGWINSZ
|
||||
from array import array
|
||||
|
||||
winsize = array("H", [0] * 4)
|
||||
try:
|
||||
ioctl(sys.stdout.fileno(), TIOCGWINSZ, winsize)
|
||||
except IOError:
|
||||
pass
|
||||
return (winsize[1], winsize[0])[0]
|
||||
|
||||
return 80
|
||||
|
||||
|
||||
def bar_thermometer(current, total, width=80):
|
||||
"""Return thermometer style progress bar string. `total` argument
|
||||
can not be zero. The minimum size of bar returned is 3. Example:
|
||||
|
||||
[.......... ]
|
||||
|
||||
Control and trailing symbols (\r and spaces) are not included.
|
||||
See `bar_adaptive` for more information.
|
||||
"""
|
||||
# number of dots on thermometer scale
|
||||
avail_dots = width-2
|
||||
shaded_dots = int(math.floor(float(current) / total * avail_dots))
|
||||
return '[' + '.'*shaded_dots + ' '*(avail_dots-shaded_dots) + ']'
|
||||
|
||||
def bar_adaptive(current, total, width=80):
|
||||
"""Return progress bar string for given values in one of three
|
||||
styles depending on available width:
|
||||
|
||||
[.. ] downloaded / total
|
||||
downloaded / total
|
||||
[.. ]
|
||||
|
||||
if total value is unknown or <= 0, show bytes counter using two
|
||||
adaptive styles:
|
||||
|
||||
%s / unknown
|
||||
%s
|
||||
|
||||
if there is not enough space on the screen, do not display anything
|
||||
|
||||
returned string doesn't include control characters like \r used to
|
||||
place cursor at the beginning of the line to erase previous content.
|
||||
|
||||
this function leaves one free character at the end of string to
|
||||
avoid automatic linefeed on Windows.
|
||||
"""
|
||||
|
||||
# process special case when total size is unknown and return immediately
|
||||
if not total or total < 0:
|
||||
msg = "%s / unknown" % current
|
||||
if len(msg) < width: # leaves one character to avoid linefeed
|
||||
return msg
|
||||
if len("%s" % current) < width:
|
||||
return "%s" % current
|
||||
|
||||
# --- adaptive layout algorithm ---
|
||||
#
|
||||
# [x] describe the format of the progress bar
|
||||
# [x] describe min width for each data field
|
||||
# [x] set priorities for each element
|
||||
# [x] select elements to be shown
|
||||
# [x] choose top priority element min_width < avail_width
|
||||
# [x] lessen avail_width by value if min_width
|
||||
# [x] exclude element from priority list and repeat
|
||||
|
||||
# 10% [.. ] 10/100
|
||||
# pppp bbbbb sssssss
|
||||
|
||||
min_width = {
|
||||
'percent': 4, # 100%
|
||||
'bar': 3, # [.]
|
||||
'size': len("%s" % total)*2 + 3, # 'xxxx / yyyy'
|
||||
}
|
||||
priority = ['percent', 'bar', 'size']
|
||||
|
||||
# select elements to show
|
||||
selected = []
|
||||
avail = width
|
||||
for field in priority:
|
||||
if min_width[field] < avail:
|
||||
selected.append(field)
|
||||
avail -= min_width[field]+1 # +1 is for separator or for reserved space at
|
||||
# the end of line to avoid linefeed on Windows
|
||||
# render
|
||||
output = ''
|
||||
for field in selected:
|
||||
|
||||
if field == 'percent':
|
||||
# fixed size width for percentage
|
||||
output += ('%s%%' % (100 * current // total)).rjust(min_width['percent'])
|
||||
elif field == 'bar': # [. ]
|
||||
# bar takes its min width + all available space
|
||||
output += bar_thermometer(current, total, min_width['bar']+avail)
|
||||
elif field == 'size':
|
||||
# size field has a constant width (min == max)
|
||||
output += ("%s / %s" % (current, total)).rjust(min_width['size'])
|
||||
|
||||
selected = selected[1:]
|
||||
if selected:
|
||||
output += ' ' # add field separator
|
||||
|
||||
return output
|
||||
|
||||
# --/ console helpers
|
||||
|
||||
|
||||
__current_size = 0 # global state variable, which exists solely as a
|
||||
# workaround against Python 3.3.0 regression
|
||||
# http://bugs.python.org/issue16409
|
||||
# fixed in Python 3.3.1
|
||||
def callback_progress(blocks, block_size, total_size, bar_function):
|
||||
"""callback function for urlretrieve that is called when connection is
|
||||
created and when once for each block
|
||||
|
||||
draws adaptive progress bar in terminal/console
|
||||
|
||||
use sys.stdout.write() instead of "print,", because it allows one more
|
||||
symbol at the line end without linefeed on Windows
|
||||
|
||||
:param blocks: number of blocks transferred so far
|
||||
:param block_size: in bytes
|
||||
:param total_size: in bytes, can be -1 if server doesn't return it
|
||||
:param bar_function: another callback function to visualize progress
|
||||
"""
|
||||
global __current_size
|
||||
|
||||
width = min(100, get_console_width())
|
||||
|
||||
if sys.version_info[:3] == (3, 3, 0): # regression workaround
|
||||
if blocks == 0: # first call
|
||||
__current_size = 0
|
||||
else:
|
||||
__current_size += block_size
|
||||
current_size = __current_size
|
||||
else:
|
||||
current_size = min(blocks*block_size, total_size)
|
||||
progress = bar_function(current_size, total_size, width)
|
||||
if progress:
|
||||
sys.stdout.write("\r" + progress)
|
||||
|
||||
|
||||
def detect_filename(url=None, out=None, headers=None, default="download.wget"):
|
||||
"""Return filename for saving file. If no filename is detected from output
|
||||
argument, url or headers, return default (download.wget)
|
||||
"""
|
||||
names = dict(out='', url='', headers='')
|
||||
if out:
|
||||
names["out"] = out or ''
|
||||
if url:
|
||||
names["url"] = filename_from_url(url) or ''
|
||||
if headers:
|
||||
names["headers"] = filename_from_headers(headers) or ''
|
||||
return names["out"] or names["headers"] or names["url"] or default
|
||||
|
||||
def download(url, out=None, bar=bar_adaptive):
|
||||
"""High level function, which downloads URL into tmp file in current
|
||||
directory and then renames it to filename autodetected from either URL
|
||||
or HTTP headers.
|
||||
|
||||
:param bar: function to track download progress (visualize etc.)
|
||||
:param out: output filename or directory
|
||||
:return: filename where URL is downloaded to
|
||||
"""
|
||||
# detect of out is a directory
|
||||
outdir = None
|
||||
if out and os.path.isdir(out):
|
||||
outdir = out
|
||||
out = None
|
||||
|
||||
# get filename for temp file in current directory
|
||||
prefix = detect_filename(url, out)
|
||||
(fd, tmpfile) = tempfile.mkstemp(".tmp", prefix=prefix, dir=".")
|
||||
os.close(fd)
|
||||
os.unlink(tmpfile)
|
||||
|
||||
# set progress monitoring callback
|
||||
def callback_charged(blocks, block_size, total_size):
|
||||
# 'closure' to set bar drawing function in callback
|
||||
callback_progress(blocks, block_size, total_size, bar_function=bar)
|
||||
if bar:
|
||||
callback = callback_charged
|
||||
else:
|
||||
callback = None
|
||||
|
||||
if PY3K:
|
||||
# Python 3 can not quote URL as needed
|
||||
binurl = list(urlparse.urlsplit(url))
|
||||
binurl[2] = urlparse.quote(binurl[2])
|
||||
binurl = urlparse.urlunsplit(binurl)
|
||||
else:
|
||||
binurl = url
|
||||
(tmpfile, headers) = ulib.urlretrieve(binurl, tmpfile, callback)
|
||||
filename = detect_filename(url, out, headers)
|
||||
if outdir:
|
||||
filename = outdir + "/" + filename
|
||||
|
||||
# add numeric ' (x)' suffix if filename already exists
|
||||
if os.path.exists(filename):
|
||||
filename = filename_fix_existing(filename)
|
||||
shutil.move(tmpfile, filename)
|
||||
|
||||
#print headers
|
||||
return filename
|
||||
|
||||
|
||||
usage = """\
|
||||
usage: wget.py [options] URL
|
||||
|
||||
options:
|
||||
-o --output FILE|DIR output filename or directory
|
||||
-h --help
|
||||
--version
|
||||
"""
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) < 2 or "-h" in sys.argv or "--help" in sys.argv:
|
||||
sys.exit(usage)
|
||||
if "--version" in sys.argv:
|
||||
sys.exit("wget.py " + __version__)
|
||||
|
||||
# patch Python 2.x to read unicode from command line
|
||||
if not PY3K and sys.platform == "win32":
|
||||
sys.argv = win32_utf8_argv()
|
||||
# patch Python to write unicode characters to console
|
||||
if sys.platform == "win32":
|
||||
win32_unicode_console()
|
||||
|
||||
from optparse import OptionParser
|
||||
parser = OptionParser()
|
||||
parser.add_option("-o", "--output", dest="output")
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
url = sys.argv[1]
|
||||
filename = download(args[0], out=options.output)
|
||||
|
||||
print("")
|
||||
print("Saved under %s" % filename)
|
||||
|
||||
r"""
|
||||
features that require more tuits for urlretrieve API
|
||||
http://www.python.org/doc/2.6/library/urllib.html#urllib.urlretrieve
|
||||
|
||||
[x] autodetect filename from URL
|
||||
[x] autodetect filename from headers - Content-Disposition
|
||||
http://greenbytes.de/tech/tc2231/
|
||||
[ ] make HEAD request to detect temp filename from Content-Disposition
|
||||
[ ] process HTTP status codes (i.e. 404 error)
|
||||
http://ftp.de.debian.org/debian/pool/iso-codes_3.24.2.orig.tar.bz2
|
||||
[ ] catch KeyboardInterrupt
|
||||
[ ] optionally preserve incomplete file
|
||||
[x] create temp file in current directory
|
||||
[ ] resume download (broken connection)
|
||||
[ ] resume download (incomplete file)
|
||||
[x] show progress indicator
|
||||
http://mail.python.org/pipermail/tutor/2005-May/038797.html
|
||||
[x] do not overwrite downloaded file
|
||||
[x] rename file automatically if exists
|
||||
[x] optionally specify path for downloaded file
|
||||
|
||||
[ ] options plan
|
||||
[x] -h, --help, --version (CHAOS speccy)
|
||||
[ ] clpbar progress bar style
|
||||
_ 30.0Mb at 3.0 Mbps eta: 0:00:20 30% [===== ]
|
||||
[ ] test "bar \r" print with \r at the end of line on Windows
|
||||
[ ] process Python 2.x urllib.ContentTooShortError exception gracefully
|
||||
(ideally retry and continue download)
|
||||
|
||||
(tmpfile, headers) = urllib.urlretrieve(url, tmpfile, callback_progress)
|
||||
File "C:\Python27\lib\urllib.py", line 93, in urlretrieve
|
||||
return _urlopener.retrieve(url, filename, reporthook, data)
|
||||
File "C:\Python27\lib\urllib.py", line 283, in retrieve
|
||||
"of %i bytes" % (read, size), result)
|
||||
urllib.ContentTooShortError: retrieval incomplete: got only 15239952 out of 24807571 bytes
|
||||
|
||||
[ ] find out if urlretrieve may return unicode headers
|
||||
[ ] write files with unicode characters
|
||||
https://bitbucket.org/techtonik/python-wget/issues/7/filename-issue
|
||||
[x] Python 2, Windows
|
||||
[x] Python 3, Windows
|
||||
[ ] Linux
|
||||
[ ] add automatic tests
|
||||
[ ] specify unicode URL from command line
|
||||
[ ] specify unicode output file from command line
|
||||
[ ] test suite for unsafe filenames from url and from headers
|
||||
|
||||
[ ] security checks
|
||||
[ ] filename_from_url
|
||||
[ ] filename_from_headers
|
||||
[ ] MITM redirect from https URL
|
||||
[ ] https certificate check
|
||||
[ ] size+hash check helpers
|
||||
[ ] fail if size is known and mismatch
|
||||
[ ] fail if hash mismatch
|
||||
"""
|
||||
Loading…
Reference in a new issue