From 9ff8e314afe4f4b4a1a81d59bd0c0e7c17de3600 Mon Sep 17 00:00:00 2001 From: Cal Stephens Date: Wed, 4 Oct 2017 17:03:12 -0400 Subject: [PATCH] Add source for AirlineLogoScraper --- .../project.pbxproj | 278 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 18043 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 + .../xcschemes/xcschememanagement.plist | 14 + source/AirlineLogoScraper/main.swift | 60 ++++ 6 files changed, 364 insertions(+) create mode 100644 source/AirlineLogoScraper.xcodeproj/project.pbxproj create mode 100644 source/AirlineLogoScraper.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 source/AirlineLogoScraper.xcodeproj/project.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 source/AirlineLogoScraper.xcodeproj/xcuserdata/cal.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 source/AirlineLogoScraper.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 source/AirlineLogoScraper/main.swift diff --git a/source/AirlineLogoScraper.xcodeproj/project.pbxproj b/source/AirlineLogoScraper.xcodeproj/project.pbxproj new file mode 100644 index 0000000..eb031bd --- /dev/null +++ b/source/AirlineLogoScraper.xcodeproj/project.pbxproj @@ -0,0 +1,278 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + 2E7EA60C1F84684500B0D340 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E7EA60B1F84684500B0D340 /* main.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 2E7EA6061F84684500B0D340 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 2E7EA6081F84684500B0D340 /* AirlineLogoScraper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = AirlineLogoScraper; sourceTree = BUILT_PRODUCTS_DIR; }; + 2E7EA60B1F84684500B0D340 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2E7EA6051F84684500B0D340 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2E7EA5FF1F84684500B0D340 = { + isa = PBXGroup; + children = ( + 2E7EA60A1F84684500B0D340 /* AirlineLogoScraper */, + 2E7EA6091F84684500B0D340 /* Products */, + ); + sourceTree = ""; + }; + 2E7EA6091F84684500B0D340 /* Products */ = { + isa = PBXGroup; + children = ( + 2E7EA6081F84684500B0D340 /* AirlineLogoScraper */, + ); + name = Products; + sourceTree = ""; + }; + 2E7EA60A1F84684500B0D340 /* AirlineLogoScraper */ = { + isa = PBXGroup; + children = ( + 2E7EA60B1F84684500B0D340 /* main.swift */, + ); + path = AirlineLogoScraper; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 2E7EA6071F84684500B0D340 /* AirlineLogoScraper */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2E7EA60F1F84684500B0D340 /* Build configuration list for PBXNativeTarget "AirlineLogoScraper" */; + buildPhases = ( + 2E7EA6041F84684500B0D340 /* Sources */, + 2E7EA6051F84684500B0D340 /* Frameworks */, + 2E7EA6061F84684500B0D340 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AirlineLogoScraper; + productName = AirlineLogoScraper; + productReference = 2E7EA6081F84684500B0D340 /* AirlineLogoScraper */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 2E7EA6001F84684500B0D340 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0900; + LastUpgradeCheck = 0900; + ORGANIZATIONNAME = "iOS Club"; + TargetAttributes = { + 2E7EA6071F84684500B0D340 = { + CreatedOnToolsVersion = 9.0; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 2E7EA6031F84684500B0D340 /* Build configuration list for PBXProject "AirlineLogoScraper" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 2E7EA5FF1F84684500B0D340; + productRefGroup = 2E7EA6091F84684500B0D340 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2E7EA6071F84684500B0D340 /* AirlineLogoScraper */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 2E7EA6041F84684500B0D340 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2E7EA60C1F84684500B0D340 /* main.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 2E7EA60D1F84684500B0D340 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.12; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 2E7EA60E1F84684500B0D340 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.12; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + }; + name = Release; + }; + 2E7EA6101F84684500B0D340 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + 2E7EA6111F84684500B0D340 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2E7EA6031F84684500B0D340 /* Build configuration list for PBXProject "AirlineLogoScraper" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2E7EA60D1F84684500B0D340 /* Debug */, + 2E7EA60E1F84684500B0D340 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2E7EA60F1F84684500B0D340 /* Build configuration list for PBXNativeTarget "AirlineLogoScraper" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2E7EA6101F84684500B0D340 /* Debug */, + 2E7EA6111F84684500B0D340 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 2E7EA6001F84684500B0D340 /* Project object */; +} diff --git a/source/AirlineLogoScraper.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/source/AirlineLogoScraper.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ee88903 --- /dev/null +++ b/source/AirlineLogoScraper.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/source/AirlineLogoScraper.xcodeproj/project.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate b/source/AirlineLogoScraper.xcodeproj/project.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..a818cebb405c70ab9a0446829822c3ee97e776b3 GIT binary patch literal 18043 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 TO=u|27XGpKNq?ii-Jky#2W0fg literal 0 HcmV?d00001 diff --git a/source/AirlineLogoScraper.xcodeproj/xcuserdata/cal.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/source/AirlineLogoScraper.xcodeproj/xcuserdata/cal.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/source/AirlineLogoScraper.xcodeproj/xcuserdata/cal.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/source/AirlineLogoScraper.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist b/source/AirlineLogoScraper.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..14b96d5 --- /dev/null +++ b/source/AirlineLogoScraper.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + AirlineLogoScraper.xcscheme + + orderHint + 0 + + + + diff --git a/source/AirlineLogoScraper/main.swift b/source/AirlineLogoScraper/main.swift new file mode 100644 index 0000000..e75d06f --- /dev/null +++ b/source/AirlineLogoScraper/main.swift @@ -0,0 +1,60 @@ +// +// main.swift +// AirlineLogoScraper +// +// Created by Cal Stephens on 10/3/17. +// Copyright © 2017 iOS Club. All rights reserved. +// + +import Foundation +import AppKit + +let documents = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! +let airlineLogosFolder = URL(fileURLWithPath: documents.appending("/Airline Logos")) +try! FileManager.default.createDirectory(at: airlineLogosFolder, withIntermediateDirectories: true, attributes: nil) + +let letters = ["A", "B", "C", "D", "E", + "F", "G", "H", "I", "J", "K", "L", + "M", "N", "O", "P", "Q", "R", "S", + "T", "U", "V", "W", "X", "Y", "Z"] + +let numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + +let characters = letters + numbers + +func downloadLogo(_ icaoCode: String) { + let semaphore = DispatchSemaphore(value: 0) + + let logoFetchUrl = URL(string: "https://flightaware.com/images/airline_logos/90p/\(icaoCode).png")! + let logoFileUrl = airlineLogosFolder.appendingPathComponent("/\(icaoCode).png") + + URLSession.shared.dataTask(with: logoFetchUrl, completionHandler: { (data, _, _) -> Void in + defer { + semaphore.signal() + } + + guard let data = data, + NSImage(data: data) != nil else + { + print("nothing for \(icaoCode)") + return + } + + print("downloaded \(icaoCode)") + try? data.write(to: logoFileUrl, options: []) + }).resume() + + semaphore.wait() +} + +for firstLetter in characters { + downloadLogo("\(firstLetter)") + for secondLetter in characters { + downloadLogo("\(firstLetter)\(secondLetter)") + for thirdLetter in characters { + downloadLogo("\(firstLetter)\(secondLetter)\(thirdLetter)") + } + } +} + +