Merge pull request #4 from testerSunshine/master

merge
pull/195/head
MonsterTan 2019-01-15 16:18:26 +08:00 committed by GitHub
commit 1fa7d11187
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 277 additions and 692 deletions

9
.dockerignore Executable file
View File

@ -0,0 +1,9 @@
**/*.html
**/*.pyc
**/*.yaml
**/*.log
**/*~
**/.DS_Store
**/Thumbs.db
.idea/
.git/

View File

@ -2,7 +2,7 @@
<module type="PYTHON_MODULE" version="4"> <module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager"> <component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" /> <content url="file://$MODULE_DIR$" />
<orderEntry type="jdk" jdkName="Python 2.7 (qt12306)" jdkType="Python SDK" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
<component name="TestRunnerService"> <component name="TestRunnerService">

View File

@ -4,7 +4,7 @@
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true"> <inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredPackages"> <option name="ignoredPackages">
<value> <value>
<list size="11"> <list size="13">
<item index="0" class="java.lang.String" itemvalue="nose" /> <item index="0" class="java.lang.String" itemvalue="nose" />
<item index="1" class="java.lang.String" itemvalue="locust" /> <item index="1" class="java.lang.String" itemvalue="locust" />
<item index="2" class="java.lang.String" itemvalue="selenium" /> <item index="2" class="java.lang.String" itemvalue="selenium" />
@ -16,6 +16,8 @@
<item index="8" class="java.lang.String" itemvalue="MySQL-python" /> <item index="8" class="java.lang.String" itemvalue="MySQL-python" />
<item index="9" class="java.lang.String" itemvalue="redis" /> <item index="9" class="java.lang.String" itemvalue="redis" />
<item index="10" class="java.lang.String" itemvalue="redis_py_cluster" /> <item index="10" class="java.lang.String" itemvalue="redis_py_cluster" />
<item index="11" class="java.lang.String" itemvalue="requests" />
<item index="12" class="java.lang.String" itemvalue="APScheduler" />
</list> </list>
</value> </value>
</option> </option>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MarkdownExportedFiles">
<htmlFiles />
<imageFiles />
<otherFiles />
</component>
</project>

View File

@ -1,72 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MarkdownProjectSettings">
<PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="NONE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="false" showSelectionInPreview="true" openRemoteLinks="true">
<PanelProvider>
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.panel" providerName="Default - Swing" />
</PanelProvider>
</PreviewSettings>
<ParserSettings gitHubSyntaxChange="false">
<PegdownExtensions>
<option name="ABBREVIATIONS" value="false" />
<option name="ANCHORLINKS" value="true" />
<option name="ASIDE" value="false" />
<option name="ATXHEADERSPACE" value="true" />
<option name="AUTOLINKS" value="true" />
<option name="DEFINITIONS" value="false" />
<option name="DEFINITION_BREAK_DOUBLE_BLANK_LINE" value="false" />
<option name="FENCED_CODE_BLOCKS" value="true" />
<option name="FOOTNOTES" value="false" />
<option name="HARDWRAPS" value="false" />
<option name="HTML_DEEP_PARSER" value="false" />
<option name="INSERTED" value="false" />
<option name="QUOTES" value="false" />
<option name="RELAXEDHRULES" value="true" />
<option name="SMARTS" value="false" />
<option name="STRIKETHROUGH" value="true" />
<option name="SUBSCRIPT" value="false" />
<option name="SUPERSCRIPT" value="false" />
<option name="SUPPRESS_HTML_BLOCKS" value="false" />
<option name="SUPPRESS_INLINE_HTML" value="false" />
<option name="TABLES" value="true" />
<option name="TASKLISTITEMS" value="true" />
<option name="TOC" value="false" />
<option name="WIKILINKS" value="true" />
</PegdownExtensions>
<ParserOptions>
<option name="COMMONMARK_LISTS" value="true" />
<option name="DUMMY" value="false" />
<option name="EMOJI_SHORTCUTS" value="true" />
<option name="FLEXMARK_FRONT_MATTER" value="false" />
<option name="GFM_LOOSE_BLANK_LINE_AFTER_ITEM_PARA" value="false" />
<option name="GFM_TABLE_RENDERING" value="true" />
<option name="GITBOOK_URL_ENCODING" value="false" />
<option name="GITHUB_EMOJI_URL" value="false" />
<option name="GITHUB_LISTS" value="false" />
<option name="GITHUB_WIKI_LINKS" value="true" />
<option name="JEKYLL_FRONT_MATTER" value="false" />
<option name="SIM_TOC_BLANK_LINE_SPACER" value="true" />
</ParserOptions>
</ParserSettings>
<HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" embedUrlContent="false" addPageHeader="true" embedImages="false" embedHttpImages="false">
<GeneratorProvider>
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.generator" providerName="Default Swing HTML Generator" />
</GeneratorProvider>
<headerTop />
<headerBottom />
<bodyTop />
<bodyBottom />
</HtmlSettings>
<CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssTextEnabled="false" isDynamicPageWidth="true">
<StylesheetProvider>
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.css" providerName="Default Swing Stylesheet" />
</StylesheetProvider>
<ScriptProviders />
<cssText />
</CssSettings>
<HtmlExportSettings updateOnSave="false" parentDir="$ProjectFileDir$" targetDir="$ProjectFileDir$" cssDir="" scriptDir="" plainHtml="false" imageDir="" copyLinkedImages="false" imageUniquifyType="0" targetExt="" useTargetExt="false" noCssNoScripts="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" linkFormatType="HTTP_ABSOLUTE" />
<LinkMapSettings>
<textMaps />
</LinkMapSettings>
</component>
</project>

View File

@ -1,3 +0,0 @@
<component name="MarkdownNavigator.ProfileManager">
<settings default="" pdf-export="" />
</component>

View File

@ -3,5 +3,5 @@
<component name="JavaScriptSettings"> <component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" /> <option name="languageLevel" value="ES6" />
</component> </component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7 (qt12306)" project-jdk-type="Python SDK" /> <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6.3 (/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6)" project-jdk-type="Python SDK" />
</project> </project>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/12306.iml" filepath="$PROJECT_DIR$/.idea/12306.iml" />
</modules>
</component>
</project>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@ -1,12 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e3073fd1-1758-4def-8eb5-379307a272f8" name="Default" comment="增加余票不足优先提交功能"> <list default="true" id="4ff88715-dd0d-4e26-8ea7-b7b28038ca10" name="Default" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/12306.iml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/config/ticket_config.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/config/ticket_config.yaml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/inter/Query.py" beforeDir="false" afterPath="$PROJECT_DIR$/inter/Query.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/markdown-exported-files.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/inter/QueryOrderWaitTime.py" beforeDir="false" afterPath="$PROJECT_DIR$/inter/QueryOrderWaitTime.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/markdown-navigator.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/tkcode" beforeDir="false" afterPath="$PROJECT_DIR$/tkcode" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/markdown-navigator/profiles_settings.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" />
</list> </list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" /> <option name="TRACKING_ENABLED" value="true" />
@ -24,8 +28,8 @@
<file leaf-file-name="select_ticket_info.py" pinned="false" current-in-tab="false"> <file leaf-file-name="select_ticket_info.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/init/select_ticket_info.py"> <entry file="file://$PROJECT_DIR$/init/select_ticket_info.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3168"> <state relative-caret-position="1184">
<caret line="243" column="47" selection-start-line="243" selection-start-column="47" selection-end-line="243" selection-end-column="47" /> <caret line="104" column="36" selection-start-line="104" selection-start-column="36" selection-end-line="104" selection-end-column="36" />
</state> </state>
</provider> </provider>
</entry> </entry>
@ -33,80 +37,58 @@
<file leaf-file-name="QueryOrderWaitTime.py" pinned="false" current-in-tab="false"> <file leaf-file-name="QueryOrderWaitTime.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/inter/QueryOrderWaitTime.py"> <entry file="file://$PROJECT_DIR$/inter/QueryOrderWaitTime.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="433"> <state relative-caret-position="48">
<caret line="89" column="32" selection-start-line="89" selection-start-column="32" selection-end-line="89" selection-end-column="32" /> <caret line="34" column="122" selection-start-line="34" selection-start-column="122" selection-end-line="34" selection-end-column="122" />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="GetQueueCountAsync.py" pinned="false" current-in-tab="false"> <file leaf-file-name=".gitignore" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/inter/GetQueueCountAsync.py"> <entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="96"> <state relative-caret-position="64">
<caret line="80" column="8" selection-start-line="80" selection-start-column="8" selection-end-line="80" selection-end-column="8" /> <caret line="4" column="1" selection-start-line="4" selection-start-column="1" selection-end-line="4" selection-end-column="1" />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="GetQueueCount.py" pinned="false" current-in-tab="false"> <file leaf-file-name="TicketEnmu.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/inter/GetQueueCount.py"> <entry file="file://$PROJECT_DIR$/config/TicketEnmu.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="384"> <state relative-caret-position="416">
<caret line="86" column="37" selection-start-line="86" selection-start-column="37" selection-end-line="86" selection-end-column="37" /> <caret line="26" column="4" selection-start-line="26" selection-start-column="4" selection-end-line="26" selection-end-column="4" />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="GetPassengerDTOs.py" pinned="false" current-in-tab="false"> <file leaf-file-name="ticket_config.yaml" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/inter/GetPassengerDTOs.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80">
<caret line="63" column="35" selection-start-line="63" selection-start-column="35" selection-end-line="63" selection-end-column="35" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="GetPassCodeNewOrderAndLogin.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/inter/GetPassCodeNewOrderAndLogin.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="208">
<caret line="15" column="63" selection-start-line="15" selection-start-column="63" selection-end-line="15" selection-end-column="63" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ConfirmSingleForQueueAsys.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/inter/ConfirmSingleForQueueAsys.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-248">
<caret line="13" column="25" selection-start-line="13" selection-start-column="25" selection-end-line="13" selection-end-column="25" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AutoSubmitOrderRequest.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/inter/AutoSubmitOrderRequest.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="340">
<caret line="99" selection-start-line="99" selection-end-line="99" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ticket_config.yaml" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/config/ticket_config.yaml"> <entry file="file://$PROJECT_DIR$/config/ticket_config.yaml">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="448"> <state relative-caret-position="192">
<caret line="28" column="14" selection-start-line="28" selection-start-column="14" selection-end-line="28" selection-end-column="14" /> <caret line="12" column="19" selection-start-line="12" selection-start-column="19" selection-end-line="12" selection-end-column="19" />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="ConfirmSingleForQueue.py" pinned="false" current-in-tab="false"> <file leaf-file-name="requirements.txt" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/inter/ConfirmSingleForQueue.py"> <entry file="file://$PROJECT_DIR$/requirements.txt">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-232"> <state relative-caret-position="96">
<caret line="36" column="98" selection-start-line="36" selection-start-column="61" selection-end-line="36" selection-end-column="98" /> <caret line="6" column="16" selection-start-line="6" selection-start-column="16" selection-end-line="6" selection-end-column="16" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="README.md" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;MarkdownPreviewEditor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="848">
<caret line="53" column="4" selection-start-line="53" selection-start-column="4" selection-end-line="56" selection-end-column="23" />
</first_editor>
<second_editor>
<js_state />
</second_editor>
</state> </state>
</provider> </provider>
</entry> </entry>
@ -120,86 +102,9 @@
</list> </list>
</option> </option>
</component> </component>
<component name="FindInProjectRecents">
<findStrings>
<find>12306account</find>
<find>ticket</find>
<find>联系人不在列表中,请查证后添加</find>
<find>飘飘</find>
<find>select_refresh_interval</find>
<find>正在尝试排队</find>
<find>passengerDTOs</find>
<find>提交订单失败</find>
<find>ifshowPassCodeTime</find>
<find>车票提交通过</find>
<find>query</find>
<find>出票成功</find>
<find>查询到有余票,尝试提交订单</find>
<find>station_seat</find>
<find>ifShowPassCodeTime</find>
<find>checkOrderInfo</find>
<find>/otn/leftTicket/submitOrderRequest</find>
<find>文贤平</find>
<find>当前余票数小于乘车人数,放弃订票</find>
<find>车票提交通过,正在尝试排队</find>
<find>select_url</find>
<find>loginInit</find>
<find>验证码提交安全期,等待</find>
<find>文贤平(二代身份证-43052419950223777X)存在与本次购票行程冲突的车票!!</find>
<find>logininit</find>
<find>confirmSingleForQueueAsys</find>
<find>is_auto_code</find>
<find>idateM</find>
<find>queryMyOrderNoCompleteUrl</find>
<find>queryMyOrderNoComplete</find>
</findStrings>
<replaceStrings>
<replace>is_auto_code</replace>
<replace>auto_code_type</replace>
<replace>self.session.urls</replace>
<replace>self.session.httpClint</replace>
</replaceStrings>
</component>
<component name="Git.Settings"> <component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component> </component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/inter/CheckRandCodeAnsyn.py" />
<option value="$PROJECT_DIR$/inter/getPassCodeNewOrder.py" />
<option value="$PROJECT_DIR$/inter/getPassCodeNewOrderAndLogin.py" />
<option value="$PROJECT_DIR$/inter/ConfirmSingleForQueue.py" />
<option value="$PROJECT_DIR$/init/SelectTicketInfoFast.py" />
<option value="$PROJECT_DIR$/config/ticketConf.py" />
<option value="$PROJECT_DIR$/requirements.txt" />
<option value="$PROJECT_DIR$/.gitignore" />
<option value="$PROJECT_DIR$/run.py" />
<option value="$PROJECT_DIR$/agency/CdnPar.py" />
<option value="$PROJECT_DIR$/agency/cdn_utils.py" />
<option value="$PROJECT_DIR$/inter/GetRandCode.py" />
<option value="$PROJECT_DIR$/init/login.py" />
<option value="$PROJECT_DIR$/inter/GetPassCodeNewOrderAndLogin.py" />
<option value="$PROJECT_DIR$/inter/CheckOrderInfo.py" />
<option value="$PROJECT_DIR$/inter/SubmitOrderRequest.py" />
<option value="$PROJECT_DIR$/inter/GetQueueCount.py" />
<option value="$PROJECT_DIR$/inter/GetQueueCountAsync.py" />
<option value="$PROJECT_DIR$/Update.md" />
<option value="$PROJECT_DIR$/myUrllib/httpUtils.py" />
<option value="$PROJECT_DIR$/inter/ConfirmSingleForQueueAsys.py" />
<option value="$PROJECT_DIR$/inter/CheckUser.py" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/inter/Query.py" />
<option value="$PROJECT_DIR$/init/select_ticket_info.py" />
<option value="$PROJECT_DIR$/inter/GetPassengerDTOs.py" />
<option value="$PROJECT_DIR$/inter/QueryOrderWaitTime.py" />
<option value="$PROJECT_DIR$/tmp/log/2018-10-17.log" />
<option value="$PROJECT_DIR$/config/urlConf.py" />
<option value="$PROJECT_DIR$/inter/AutoSubmitOrderRequest.py" />
<option value="$PROJECT_DIR$/config/ticket_config.yaml" />
</list>
</option>
</component>
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" /> <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" /> <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsGulpfileManager"> <component name="JsGulpfileManager">
@ -209,7 +114,7 @@
<component name="ProjectFrameBounds" fullScreen="true"> <component name="ProjectFrameBounds" fullScreen="true">
<option name="y" value="23" /> <option name="y" value="23" />
<option name="width" value="1440" /> <option name="width" value="1440" />
<option name="height" value="812" /> <option name="height" value="829" />
</component> </component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true"> <component name="ProjectLevelVcsManager" settingsEditedManually="true">
<ConfirmationsSetting value="1" id="Add" /> <ConfirmationsSetting value="1" id="Add" />
@ -226,11 +131,6 @@
<item name="12306" type="b2602c69:ProjectViewProjectNode" /> <item name="12306" type="b2602c69:ProjectViewProjectNode" />
<item name="12306" type="462c0819:PsiDirectoryNode" /> <item name="12306" type="462c0819:PsiDirectoryNode" />
</path> </path>
<path>
<item name="12306" type="b2602c69:ProjectViewProjectNode" />
<item name="12306" type="462c0819:PsiDirectoryNode" />
<item name="config" type="462c0819:PsiDirectoryNode" />
</path>
</expand> </expand>
<select /> <select />
</subPane> </subPane>
@ -239,9 +139,7 @@
</panes> </panes>
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
<property name="SearchEverywhereHistoryKey" value="query&#9;FILE&#9;file:///usr/local/py_work/12306/inter/Query.py&#10;confirmSingleForQueueAsys&#9;FILE&#9;file:///usr/local/py_work/12306/inter/ConfirmSingleForQueueAsys.py&#10;check&#9;FILE&#9;file:///usr/local/py_work/12306/inter/CheckUser.py&#10;url&#9;FILE&#9;file:///usr/local/py_work/12306/config/urlConf.py&#10;get&#9;FILE&#9;file:///usr/local/py_work/12306/inter/GetPassengerDTOs.py&#10;httpc&#9;null&#9;null&#10;tt&#9;FILE&#9;file:///usr/local/py_work/12306/myUrllib/httpUtils.py&#10;urls&#9;null&#9;null&#10;htt&#9;FILE&#9;file:///usr/local/py_work/12306/myUrllib/httpUtils.py&#10;createOrder&#9;null&#9;null&#10;login&#9;FILE&#9;file:///usr/local/py_work/12306/init/login.py&#10;urlc&#9;FILE&#9;file:///usr/local/py_work/12306/config/urlConf.py" />
<property name="WebServerToolWindowFactoryState" value="false" /> <property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" /> <property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
</component> </component>
<component name="RunDashboard"> <component name="RunDashboard">
@ -256,223 +154,12 @@
</list> </list>
</option> </option>
</component> </component>
<component name="RunManager" selected="Python.run">
<configuration name="run" type="PythonConfigurationType" factoryName="Python" temporary="true">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/run.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
</configuration>
<configuration name="select_ticket_info" type="PythonConfigurationType" factoryName="Python" temporary="true">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/init" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/init/select_ticket_info.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
</configuration>
<configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="TARGET" value="" />
<option name="SETTINGS_FILE" value="" />
<option name="CUSTOM_SETTINGS" value="false" />
<option name="USE_OPTIONS" value="false" />
<option name="OPTIONS" value="" />
</configuration>
<configuration default="true" type="PyBehaveRunConfigurationType" factoryName="Behave">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="ADDITIONAL_ARGS" value="" />
</configuration>
<configuration default="true" type="PyLettuceRunConfigurationType" factoryName="Lettuce">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="ADDITIONAL_ARGS" value="" />
</configuration>
<configuration default="true" type="PythonConfigurationType" factoryName="Python">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
</configuration>
<configuration default="true" type="Python.FlaskServer" factoryName="Flask server">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="launchJavascriptDebuger" value="false" />
</configuration>
<configuration default="true" type="Tox" factoryName="Tox">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
</configuration>
<configuration default="true" type="tests" factoryName="Doctests">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
</configuration>
<configuration default="true" type="tests" factoryName="Nosetests">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="_new_regexPattern" value="&quot;&quot;" />
<option name="_new_additionalArguments" value="&quot;&quot;" />
<option name="_new_target" value="&quot;&quot;" />
<option name="_new_targetType" value="&quot;PATH&quot;" />
</configuration>
<configuration default="true" type="tests" factoryName="Twisted Trial">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="_new_additionalArguments" value="&quot;&quot;" />
<option name="_new_target" value="&quot;&quot;" />
<option name="_new_targetType" value="&quot;PATH&quot;" />
</configuration>
<configuration default="true" type="tests" factoryName="Unittests">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="_new_additionalArguments" value="&quot;&quot;" />
<option name="_new_target" value="&quot;&quot;" />
<option name="_new_targetType" value="&quot;PATH&quot;" />
</configuration>
<configuration default="true" type="tests" factoryName="py.test">
<module name="12306" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="_new_keywords" value="&quot;&quot;" />
<option name="_new_additionalArguments" value="&quot;&quot;" />
<option name="_new_target" value="&quot;&quot;" />
<option name="_new_targetType" value="&quot;PATH&quot;" />
</configuration>
<list>
<item itemvalue="Python.run" />
<item itemvalue="Python.select_ticket_info" />
</list>
<recent_temporary>
<list>
<item itemvalue="Python.run" />
<item itemvalue="Python.select_ticket_info" />
</list>
</recent_temporary>
</component>
<component name="SvnConfiguration"> <component name="SvnConfiguration">
<configuration /> <configuration />
</component> </component>
<component name="TaskManager"> <component name="TaskManager">
<task active="true" id="Default" summary="Default task"> <task active="true" id="Default" summary="Default task">
<changelist id="e3073fd1-1758-4def-8eb5-379307a272f8" name="Default" comment="" /> <changelist id="4ff88715-dd0d-4e26-8ea7-b7b28038ca10" name="Default" comment="" />
<created>1535103824843</created> <created>1535103824843</created>
<option name="number" value="Default" /> <option name="number" value="Default" />
<option name="presentableId" value="Default" /> <option name="presentableId" value="Default" />
@ -590,30 +277,27 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1540282122550</updated> <updated>1540282122550</updated>
</task> </task>
<option name="localTasksCounter" value="17" /> <task id="LOCAL-00017" summary="更新群号">
<created>1547460780535</created>
<option name="number" value="00017" />
<option name="presentableId" value="LOCAL-00017" />
<option name="project" value="LOCAL" />
<updated>1547460780535</updated>
</task>
<servers /> <servers />
</component> </component>
<component name="TodoView">
<todo-panel id="selected-file">
<is-autoscroll-to-source value="true" />
</todo-panel>
<todo-panel id="all">
<are-packages-shown value="true" />
<is-autoscroll-to-source value="true" />
</todo-panel>
</component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="0" y="0" width="1440" height="900" extended-state="6" /> <frame x="0" y="0" width="1440" height="900" extended-state="0" />
<editor active="true" /> <editor active="true" />
<layout> <layout>
<window_info anchor="bottom" id="TODO" order="6" weight="0.32969698" /> <window_info anchor="bottom" id="TODO" order="6" weight="0.32969698" />
<window_info anchor="bottom" id="Event Log" order="7" sideWeight="0.5007153" side_tool="true" weight="0.32867134" /> <window_info anchor="bottom" id="Event Log" order="7" sideWeight="0.5007153" side_tool="true" weight="0.32867134" />
<window_info anchor="bottom" id="Database Changes" order="7" show_stripe_button="false" /> <window_info anchor="bottom" id="Database Changes" order="7" show_stripe_button="false" />
<window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.42303032" /> <window_info anchor="bottom" id="Run" order="2" weight="0.42303032" />
<window_info anchor="bottom" id="Version Control" order="7" weight="0.32447553" /> <window_info anchor="bottom" id="Version Control" order="7" weight="0.32447553" />
<window_info anchor="bottom" id="Python Console" order="7" sideWeight="0.49928468" weight="0.32447553" /> <window_info anchor="bottom" id="Python Console" order="7" sideWeight="0.49928468" weight="0.32447553" />
<window_info anchor="bottom" id="Terminal" order="7" sideWeight="0.49928468" weight="0.32484847" /> <window_info anchor="bottom" id="Terminal" order="7" sideWeight="0.49928468" weight="0.32484847" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.3311874" /> <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.33547926" />
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" /> <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
<window_info anchor="right" id="Database" order="3" /> <window_info anchor="right" id="Database" order="3" />
<window_info anchor="right" id="SciView" order="3" /> <window_info anchor="right" id="SciView" order="3" />
@ -632,32 +316,6 @@
<component name="TypeScriptGeneratedFilesManager"> <component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" /> <option name="version" value="1" />
</component> </component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State>
<option name="RECENTLY_FILTERED_USER_GROUPS">
<collection />
</option>
<option name="RECENTLY_FILTERED_BRANCH_GROUPS">
<collection />
</option>
<option name="COLUMN_ORDER">
<list>
<option value="0" />
<option value="1" />
<option value="2" />
<option value="3" />
</list>
</option>
</State>
</value>
</entry>
</map>
</option>
</component>
<component name="VcsContentAnnotationSettings"> <component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" /> <option name="myLimit" value="2678400000" />
</component> </component>
@ -674,28 +332,12 @@
<MESSAGE value="1、优化查询策略&#10;2、快读下单修复&#10;3、关闭cdn功能" /> <MESSAGE value="1、优化查询策略&#10;2、快读下单修复&#10;3、关闭cdn功能" />
<MESSAGE value="update readme" /> <MESSAGE value="update readme" />
<MESSAGE value="1、修改提交订单逻辑问题感谢群里小伙伴发现&#10;2、查询接口修改" /> <MESSAGE value="1、修改提交订单逻辑问题感谢群里小伙伴发现&#10;2、查询接口修改" />
<option name="LAST_COMMIT_MESSAGE" value="1、修改提交订单逻辑问题感谢群里小伙伴发现&#10;2、查询接口修改" /> <MESSAGE value="更新群号" />
</component> <option name="LAST_COMMIT_MESSAGE" value="更新群号" />
<component name="XDebuggerManager">
<breakpoint-manager>
<option name="time" value="18" />
</breakpoint-manager>
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/tmp/log/2018-08-27.log"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-08-27.log" />
<provider selected="true" editor-type-id="text-editor"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-08-24.log" />
<state relative-caret-position="-4727">
<caret line="100" column="79" lean-forward="true" selection-start-line="100" selection-start-column="79" selection-end-line="100" selection-end-column="79" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-08-24.log">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3463">
<caret line="430" column="69" lean-forward="true" selection-start-line="430" selection-start-column="69" selection-end-line="430" selection-end-column="69" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/init/SelectTicketInfoFast.py" /> <entry file="file://$PROJECT_DIR$/init/SelectTicketInfoFast.py" />
<entry file="file://$PROJECT_DIR$/config/emailConf.py"> <entry file="file://$PROJECT_DIR$/config/emailConf.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
@ -704,18 +346,7 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-08-31.log"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-08-31.log" />
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1157" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="64">
<caret line="4" column="1" selection-start-line="4" selection-start-column="1" selection-end-line="4" selection-end-column="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/damatuCode/ruokuai.py"> <entry file="file://$PROJECT_DIR$/damatuCode/ruokuai.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="27"> <state relative-caret-position="27">
@ -731,20 +362,8 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-09-02.log"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-09-02.log" />
<provider selected="true" editor-type-id="text-editor"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-09-04.log" />
<state relative-caret-position="245">
<caret line="84" column="264" selection-start-line="84" selection-start-column="247" selection-end-line="84" selection-end-column="264" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-09-04.log">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="278">
<caret line="40" column="81" selection-start-line="40" selection-start-column="67" selection-end-line="40" selection-end-column="81" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/init/login.py"> <entry file="file://$PROJECT_DIR$/init/login.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330"> <state relative-caret-position="330">
@ -752,13 +371,7 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-09-18.log"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-09-18.log" />
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="570">
<caret line="832" column="21" selection-start-line="832" selection-end-line="832" selection-end-column="21" />
</state>
</provider>
</entry>
<entry file="file://$APPLICATION_HOME_DIR$/helpers/typeshed/stdlib/2/typing.pyi"> <entry file="file://$APPLICATION_HOME_DIR$/helpers/typeshed/stdlib/2/typing.pyi">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="154"> <state relative-caret-position="154">
@ -766,27 +379,9 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-09-19.log"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-09-19.log" />
<provider selected="true" editor-type-id="text-editor"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-09-20.log" />
<state relative-caret-position="500"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-09-21.log" />
<caret line="4952" column="196" selection-start-line="4952" selection-start-column="184" selection-end-line="4952" selection-end-column="196" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-09-20.log">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="163">
<caret line="156" selection-start-line="156" selection-end-line="157" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-09-21.log">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="250">
<caret line="534" column="27" selection-start-line="534" selection-start-column="27" selection-end-line="534" selection-end-column="27" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/run.py"> <entry file="file://$PROJECT_DIR$/run.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state> <state>
@ -811,7 +406,7 @@
<entry file="file://$PROJECT_DIR$/requirements.txt"> <entry file="file://$PROJECT_DIR$/requirements.txt">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="96"> <state relative-caret-position="96">
<caret line="6" column="16" lean-forward="true" selection-start-line="6" selection-start-column="16" selection-end-line="6" selection-end-column="16" /> <caret line="6" column="16" selection-start-line="6" selection-start-column="16" selection-end-line="6" selection-end-column="16" />
</state> </state>
</provider> </provider>
</entry> </entry>
@ -834,13 +429,7 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-09-28.log"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-09-28.log" />
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1058">
<caret line="74" column="122" lean-forward="true" selection-start-line="74" selection-start-column="122" selection-end-line="74" selection-end-column="122" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/inter/GetRandCode.py"> <entry file="file://$PROJECT_DIR$/inter/GetRandCode.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="240"> <state relative-caret-position="240">
@ -865,8 +454,8 @@
<entry file="file://$PROJECT_DIR$/README.md"> <entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;MarkdownPreviewEditor]"> <provider selected="true" editor-type-id="split-provider[text-editor;MarkdownPreviewEditor]">
<state split_layout="SPLIT"> <state split_layout="SPLIT">
<first_editor relative-caret-position="350"> <first_editor relative-caret-position="848">
<caret line="55" lean-forward="true" selection-start-line="51" selection-end-line="55" /> <caret line="53" column="4" selection-start-line="53" selection-start-column="4" selection-end-line="56" selection-end-column="23" />
</first_editor> </first_editor>
<second_editor> <second_editor>
<js_state /> <js_state />
@ -881,20 +470,8 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-09-30.log"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-09-30.log" />
<provider selected="true" editor-type-id="text-editor"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-10-05.log" />
<state relative-caret-position="295">
<caret line="654" selection-start-line="654" selection-end-line="655" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-10-05.log">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="181">
<caret line="36" selection-start-line="36" selection-end-line="37" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/myUrllib/httpUtils.py"> <entry file="file://$PROJECT_DIR$/myUrllib/httpUtils.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="746"> <state relative-caret-position="746">
@ -923,41 +500,19 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-10-06.log"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-10-06.log" />
<provider selected="true" editor-type-id="text-editor"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-10-13.log" />
<state relative-caret-position="304">
<caret line="95" column="36" selection-start-line="95" selection-start-column="36" selection-end-line="95" selection-end-column="36" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-10-13.log">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="129">
<caret line="26" column="6" lean-forward="true" selection-start-line="26" selection-start-column="6" selection-end-line="26" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/inter/Query.py"> <entry file="file://$PROJECT_DIR$/inter/Query.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="784"> <state relative-caret-position="784">
<caret line="49" column="40" selection-start-line="49" selection-start-column="40" selection-end-line="49" selection-end-column="40" /> <caret line="49" column="40" selection-start-line="49" selection-start-column="40" selection-end-line="49" selection-end-column="40" />
<folding>
<element signature="e#15#26#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/TicketEnmu.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="416">
<caret line="26" column="4" selection-start-line="26" selection-start-column="4" selection-end-line="26" selection-end-column="4" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/init/select_ticket_info.py"> <entry file="file://$PROJECT_DIR$/init/select_ticket_info.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3168"> <state relative-caret-position="1184">
<caret line="243" column="47" selection-start-line="243" selection-start-column="47" selection-end-line="243" selection-end-column="47" /> <caret line="104" column="36" selection-start-line="104" selection-start-column="36" selection-end-line="104" selection-end-column="36" />
</state> </state>
</provider> </provider>
</entry> </entry>
@ -968,20 +523,7 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-10-17.log"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-10-17.log" />
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="258">
<caret line="29" column="68" selection-start-line="29" selection-start-column="46" selection-end-line="29" selection-end-column="68" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/inter/QueryOrderWaitTime.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="433">
<caret line="89" column="32" selection-start-line="89" selection-start-column="32" selection-end-line="89" selection-end-column="32" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/inter/GetQueueCountAsync.py"> <entry file="file://$PROJECT_DIR$/inter/GetQueueCountAsync.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="96"> <state relative-caret-position="96">
@ -1033,8 +575,29 @@
</entry> </entry>
<entry file="file://$PROJECT_DIR$/config/ticket_config.yaml"> <entry file="file://$PROJECT_DIR$/config/ticket_config.yaml">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="448"> <state relative-caret-position="192">
<caret line="28" column="14" selection-start-line="28" selection-start-column="14" selection-end-line="28" selection-end-column="14" /> <caret line="12" column="19" selection-start-line="12" selection-start-column="19" selection-end-line="12" selection-end-column="19" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/TicketEnmu.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="416">
<caret line="26" column="4" selection-start-line="26" selection-start-column="4" selection-end-line="26" selection-end-column="4" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/inter/QueryOrderWaitTime.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="48">
<caret line="34" column="122" selection-start-line="34" selection-start-column="122" selection-end-line="34" selection-end-column="122" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="64">
<caret line="4" column="1" selection-start-line="4" selection-start-column="1" selection-end-line="4" selection-end-column="1" />
</state> </state>
</provider> </provider>
</entry> </entry>

View File

@ -47,7 +47,14 @@
![image](https://github.com/testerSunshine/12306/blob/master/uml/uml.png) ![image](https://github.com/testerSunshine/12306/blob/master/uml/uml.png)
- 项目声明: - 项目声明:
- 本软件只供学习交流使用务作为商业用途交流群号286271084(已满) 2群649992274(已满)请加3群(未满) 群号632501142、4群(未满) 群号606340519 - 本软件只供学习交流使用,务作为商业用途,交流群号
- 1群286271084(已满)
- 2群649992274(已满)
- 3群632501142(已满)
- 4群: 606340519(已满)
- 5群: 948526733(未满)
- 6群: 444101020(未满)
- 7群: 660689659(未满)
- 请不要重复加群,一个群就可以了,把机会留给更多人 - 请不要重复加群,一个群就可以了,把机会留给更多人
- **进群先看公告!!!进群先看公告!!!进群先看公告!!! 重要的事情说三遍** - **进群先看公告!!!进群先看公告!!!进群先看公告!!! 重要的事情说三遍**
- 能为你抢到一张回家的票,是我最大的心愿 - 能为你抢到一张回家的票,是我最大的心愿
@ -75,12 +82,16 @@
- 学生票issues [学生票修改](https://github.com/testerSunshine/12306/issues/47) - 学生票issues [学生票修改](https://github.com/testerSunshine/12306/issues/47)
- 依赖安装不对的问题ImportError[requirements.txt问题](https://github.com/testerSunshine/12306/issues/91) - 依赖安装不对的问题ImportError[requirements.txt问题](https://github.com/testerSunshine/12306/issues/91)
- 若快豆子疑问 [点我](https://github.com/testerSunshine/12306/issues/67) - 若快豆子疑问 [点我](https://github.com/testerSunshine/12306/issues/67)
- IOError: 【Errno 0】 Error 问题 [点我](https://github.com/testerSunshine/12306/issues/159)
- 测试下单接口是否可用有两个下单接口随便用哪个都ok - 测试下单接口是否可用有两个下单接口随便用哪个都ok
- 如果下载验证码过期或者下载失败的问题应该是12306封ip的策略多重试几次12306现在封服务器(阿里云和腾讯云)ip比较严重尽量不要放在服务器里面 - 如果下载验证码过期或者下载失败的问题应该是12306封ip的策略多重试几次12306现在封服务器(阿里云和腾讯云)ip比较严重尽量不要放在服务器里面
- 目前12306对服务器ip比较敏感大家还是在自己家里挂着吧
- 如果想使用此项目的gui版本请加群目前只有mac版本
- 感谢一下小伙伴对本项目提供的帮助 - 感谢一下小伙伴对本项目提供的帮助
- @sun7127@126.com - @sun7127@126.com
- @ 才 - @ 才
- @MonsterTan
- 以及所有为此项目提供pr的同学 - 以及所有为此项目提供pr的同学
- [更新日志](Update.md) - [更新日志](Update.md)

View File

@ -6,6 +6,7 @@ import requests
from agency.agency_tools import proxy from agency.agency_tools import proxy
from config.emailConf import sendEmail from config.emailConf import sendEmail
from config.pushbearConf import sendPushBear
def _set_header_default(): def _set_header_default():
@ -39,6 +40,13 @@ class testAll(unittest.TestCase):
""" """
sendEmail("订票小助手测试一下") sendEmail("订票小助手测试一下")
def testPushbear(self):
"""
实测pushbear是否可用
:return:
"""
sendPushBear("pushbear 微信通知测试一下")
# def testConfig(self): # def testConfig(self):
# """ # """
# 测试config是否配置正确 # 测试config是否配置正确

View File

@ -134,3 +134,6 @@
- mac和linux服务器自动对点 - mac和linux服务器自动对点
- 增加预售踩点查询下单经测试误差在0.004s - 增加预售踩点查询下单经测试误差在0.004s
- 2019.01.12更新
- 增加对python3语法的支持
- 删除校验时间很多机器不兼容的问题win10会阻拦对时功能导致大面积报错如果是预售为了不耽误宝贵的时间请手动对时

View File

@ -76,4 +76,4 @@ class CDNProxy:
if __name__ == '__main__': if __name__ == '__main__':
cdn = CDNProxy() cdn = CDNProxy()
cdn.open_cdn_file() print(cdn.open_cdn_file())

View File

@ -15,21 +15,21 @@ def autoSynchroTime():
hosts = ['ntp1.aliyun.com', 'ntp2.aliyun.com', 'ntp3.aliyun.com', 'ntp4.aliyun.com', 'cn.pool.ntp.org'] hosts = ['ntp1.aliyun.com', 'ntp2.aliyun.com', 'ntp3.aliyun.com', 'ntp4.aliyun.com', 'cn.pool.ntp.org']
print(u"正在同步时间请耐心等待30秒左右") print(u"正在同步时间请耐心等待30秒左右,如果下面有错误发送,可以忽略!!")
print(u"系统当前时间{}".format(str(datetime.datetime.now())[:22])) print(u"系统当前时间{}".format(str(datetime.datetime.now())[:22]))
system = platform.system() system = platform.system()
if system == "Windows": # windows 同步时间未测试过参考地址https://www.jianshu.com/p/92ec15da6cc3 if system == "Windows": # windows 同步时间未测试过参考地址https://www.jianshu.com/p/92ec15da6cc3
for host in hosts: for host in hosts:
os.system('w32tm /register') os.popen('w32tm /register')
os.system('net start w32time') os.popen('net start w32time')
os.system('w32tm /config /manualpeerlist:"{}" /syncfromflags:manual /reliable:yes /update'.format(host)) os.popen('w32tm /config /manualpeerlist:"{}" /syncfromflags:manual /reliable:yes /update'.format(host))
os.system('ping -n 3 127.0.0.1 >nul') os.popen('ping -n 3 127.0.0.1 >nul')
sin = os.system('w32tm /resync') sin = os.popen('w32tm /resync')
if sin is 0: if sin is 0:
break break
else: # mac同步地址如果ntpdate未安装brew install ntpdate linux 安装 yum install -y ntpdate else: # mac同步地址如果ntpdate未安装brew install ntpdate linux 安装 yum install -y ntpdate
for host in hosts: for host in hosts:
sin = os.system('ntpdate {}'.format(host)) sin = os.popen('ntpdate {}'.format(host))
if sin is 0: if sin is 0:
break break
print(u"同步后时间:{}".format(str(datetime.datetime.now())[:22])) print(u"同步后时间:{}".format(str(datetime.datetime.now())[:22]))

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import datetime import datetime
import os import os
import random
import sys import sys
import time import time
@ -102,9 +103,9 @@ def getCacheFile(cacheType):
def checkSleepTime(session): def checkSleepTime(session):
now = datetime.datetime.now() now = datetime.datetime.now()
if now.hour >= 23 or now.hour < 6: if now.hour >= 23 or now.hour < 6:
print(u"12306休息时间本程序自动停止,明天早上点将自动运行") print(u"12306休息时间本程序自动停止,明天早上六点点将自动运行")
open_time = datetime.datetime(now.year, now.month, now.day, 6) open_time = datetime.datetime(now.year, now.month, now.day, 6)
if open_time < now: if open_time < now:
open_time += datetime.timedelta(1) open_time += datetime.timedelta(1)
time.sleep((open_time - now).seconds) time.sleep((open_time - now).seconds + round(random.uniform(1, 10)))
session.call_login() session.call_login()

26
config/pushbearConf.py Normal file
View File

@ -0,0 +1,26 @@
# -*- coding: utf8 -*-
__author__ = 'kongkongyzt'
import requests
from config.ticketConf import _get_yaml
PUSH_BEAR_API_PATH = "https://pushbear.ftqq.com/sub"
def sendPushBear(msg):
"""
pushBear微信通知
:param str: 通知内容 content
:return:
"""
conf = _get_yaml()
if conf["pushbear_conf"]["is_pushbear"] and conf["pushbear_conf"]["send_key"].strip() != "":
try:
requests.get("{}?sendkey={}&text=来自12306抢票助手的通知&desp={}".format(PUSH_BEAR_API_PATH, conf["pushbear_conf"]["send_key"].strip(), msg))
print(u"已下发 pushbear 微信通知, 请查收")
except Exception as e:
print(u"pushbear 配置有误 {}".format(e))
else:
pass
if __name__ == '__main__':
sendPushBear(1)

View File

@ -5,7 +5,8 @@ set:
# - 2018-01-06 # - 2018-01-06
# - 2018-01-07 # - 2018-01-07
station_dates: station_dates:
- "2019-02-02" - "2019-02-10"
- "2019-02-11"
# 是否根据时间范围 和 乘车类型 购票 # 是否根据时间范围 和 乘车类型 购票
# 否则将需要手动填写车次 # 否则将需要手动填写车次
@ -30,15 +31,15 @@ set:
# - "G1353" # - "G1353"
# - "G1329" # - "G1329"
station_trains: station_trains:
- "G6172" - "G6153"
- "G6186" - "G6184"
- "G6154" - "G6173"
# 出发城市,比如深圳北,就填深圳就搜得到 # 出发城市,比如深圳北,就填深圳就搜得到
from_station: "广州南" from_station: "邵阳"
# 到达城市 比如深圳北,就填深圳就搜得到 # 到达城市 比如深圳北,就填深圳就搜得到
to_station: "邵阳" to_station: "深圳北"
# 座位(list) 多个座位ex: # 座位(list) 多个座位ex:
# - "商务座" # - "商务座"
@ -54,18 +55,18 @@ set:
- "二等座" - "二等座"
# 当余票小于乘车人,如果选择优先提交,则删减联系人和余票数一致在提交 # 当余票小于乘车人,如果选择优先提交,则删减联系人和余票数一致在提交
is_more_ticket: True is_more_ticket: False
# 乘车人(list) 多个乘车人ex: # 乘车人(list) 多个乘车人ex:
# - "张三" # - "张三"
# - "李四" # - "李四"
ticke_peoples: ticke_peoples:
- "文贤平" - ""
- "李梦云" - ""
# - "梁敏"
# 12306登录账号(list) # 12306登录账号(list)
12306account: 12306account:
- user: "13828728396" - user: "931128603@qq.com"
- pwd: "" - pwd: ""
# 加入小黑屋时间默认为5分钟此功能为了防止僵尸票导致一直下单不成功错过正常的票 # 加入小黑屋时间默认为5分钟此功能为了防止僵尸票导致一直下单不成功错过正常的票
@ -103,10 +104,15 @@ email_conf:
password: "" password: ""
host: "smtp.qq.com" host: "smtp.qq.com"
# 是否开启 pushbear 微信提醒, 使用前需要前往 http://pushbear.ftqq.com 扫码绑定获取 send_key 并关注获得抢票结果通知的公众号
pushbear_conf:
is_pushbear: False
send_key: ""
# 是否开启cdn查询可以更快的检测票票 1为开启2为关闭 # 是否开启cdn查询可以更快的检测票票 1为开启2为关闭
is_cdn: 1 is_cdn: 1
# 下单接口分为两种1 为快速下单2 是普通下单 # 下单接口分为两种1 模拟网页自动捡漏下单不稳定2 模拟车次后面的购票按钮下单(稳如老狗)
order_type: 2 order_type: 2
# 下单模式 1 为预售整点刷新刷新间隔0.1-0.5S, 然后会校验时间比如12点的预售那脚本就会在12.00整检票,刷新订单 # 下单模式 1 为预售整点刷新刷新间隔0.1-0.5S, 然后会校验时间比如12点的预售那脚本就会在12.00整检票,刷新订单

View File

@ -11,7 +11,7 @@ urls = {
"Host": "kyfw.12306.cn", "Host": "kyfw.12306.cn",
"Content-Type": 1, "Content-Type": 1,
"re_try": 10, "re_try": 10,
"re_time": 0.1, "re_time": 1,
"s_time": 0.1, "s_time": 0.1,
"is_logger": True, "is_logger": True,
"is_json": True, "is_json": True,
@ -23,7 +23,7 @@ urls = {
"Host": "kyfw.12306.cn", "Host": "kyfw.12306.cn",
"Content-Type": 1, "Content-Type": 1,
"re_try": 10, "re_try": 10,
"re_time": 0.1, "re_time": 1,
"s_time": 0.1, "s_time": 0.1,
"is_logger": True, "is_logger": True,
"is_json": True, "is_json": True,
@ -36,7 +36,7 @@ urls = {
"Host": "kyfw.12306.cn", "Host": "kyfw.12306.cn",
"Content-Type": 1, "Content-Type": 1,
"re_try": 10, "re_try": 10,
"re_time": 0.1, "re_time": 1,
"s_time": 0.1, "s_time": 0.1,
"is_logger": False, "is_logger": False,
"is_json": False, "is_json": False,
@ -49,7 +49,7 @@ urls = {
"Host": "kyfw.12306.cn", "Host": "kyfw.12306.cn",
"Content-Type": 1, "Content-Type": 1,
"re_try": 10, "re_try": 10,
"re_time": 0.1, "re_time": 1,
"s_time": 0.1, "s_time": 0.1,
"is_logger": False, "is_logger": False,
"is_json": False, "is_json": False,
@ -62,7 +62,7 @@ urls = {
"Host": "kyfw.12306.cn", "Host": "kyfw.12306.cn",
"Content-Type": 1, "Content-Type": 1,
"re_try": 10, "re_try": 10,
"re_time": 0.1, "re_time": 1,
"s_time": 0.1, "s_time": 0.1,
"is_logger": True, "is_logger": True,
"is_json": True, "is_json": True,
@ -73,7 +73,7 @@ urls = {
"Referer": "https://kyfw.12306.cn/otn/index/init", "Referer": "https://kyfw.12306.cn/otn/index/init",
"Host": "kyfw.12306.cn", "Host": "kyfw.12306.cn",
"re_try": 1, "re_try": 1,
"re_time": 0.1, "re_time": 1,
"s_time": 0.1, "s_time": 0.1,
"is_logger": False, "is_logger": False,
"is_json": False, "is_json": False,
@ -84,7 +84,7 @@ urls = {
"Referer": "https://kyfw.12306.cn/otn/index/init", "Referer": "https://kyfw.12306.cn/otn/index/init",
"Host": "kyfw.12306.cn", "Host": "kyfw.12306.cn",
"re_try": 1, "re_try": 1,
"re_time": 0.1, "re_time": 1,
"s_time": 0.1, "s_time": 0.1,
"is_logger": False, "is_logger": False,
"is_test_cdn": True, "is_test_cdn": True,
@ -96,7 +96,7 @@ urls = {
"Referer": "https://kyfw.12306.cn/otn/passport?redirect=/otn/login/userLogin", "Referer": "https://kyfw.12306.cn/otn/passport?redirect=/otn/login/userLogin",
"Host": "kyfw.12306.cn", "Host": "kyfw.12306.cn",
"re_try": 10, "re_try": 10,
"re_time": 0.1, "re_time": 1,
"s_time": 0.01, "s_time": 0.01,
"is_logger": False, "is_logger": False,
"is_json": False, "is_json": False,
@ -107,7 +107,7 @@ urls = {
"Referer": "https://kyfw.12306.cn/otn/passport?redirect=/otn/login/userLogin", "Referer": "https://kyfw.12306.cn/otn/passport?redirect=/otn/login/userLogin",
"Host": "kyfw.12306.cn", "Host": "kyfw.12306.cn",
"re_try": 10, "re_try": 10,
"re_time": 0.1, "re_time": 1,
"s_time": 0.1, "s_time": 0.1,
"is_logger": True, "is_logger": True,
"is_json": True, "is_json": True,
@ -119,7 +119,7 @@ urls = {
"Host": "kyfw.12306.cn", "Host": "kyfw.12306.cn",
"Content-Type": 1, "Content-Type": 1,
"re_try": 10, "re_try": 10,
"re_time": 0.1, "re_time": 1,
"s_time": 0.1, "s_time": 0.1,
"is_logger": True, "is_logger": True,
"is_json": True, "is_json": True,
@ -337,6 +337,18 @@ urls = {
"is_logger": True, "is_logger": True,
"is_json": True, "is_json": True,
}, },
"loginAysnSuggest": { # 快速订单排队
"req_url": "/otn/login/loginAysnSuggest",
"req_type": "post",
"Referer": "https://kyfw.12306.cn/otn/leftTicket/init",
"Content-Type": 1,
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.01,
"s_time": 0.1,
"is_logger": True,
"is_json": True,
},
"cdn_host": { "cdn_host": {
"req_url": "http://ping.chinaz.com/kyfw.12306.cn", "req_url": "http://ping.chinaz.com/kyfw.12306.cn",
"req_type": "post" "req_type": "post"

View File

@ -7,7 +7,10 @@ class RClient(object):
def __init__(self, username, password): def __init__(self, username, password):
self.username = username self.username = username
try:
self.password = md5(password).hexdigest() self.password = md5(password).hexdigest()
except TypeError:
self.password = md5(password.encode('utf-8')).hexdigest()
self.soft_id = '96061' self.soft_id = '96061'
self.soft_key = '6facb9da7bb645ad9c4a229464b2cf89' self.soft_key = '6facb9da7bb645ad9c4a229464b2cf89'
self.base_params = { self.base_params = {

View File

@ -70,7 +70,10 @@ class select:
to_station = ticket_info_config["set"]["to_station"] to_station = ticket_info_config["set"]["to_station"]
station_dates = ticket_info_config["set"]["station_dates"] station_dates = ticket_info_config["set"]["station_dates"]
set_names = ticket_info_config["set"]["set_type"] set_names = ticket_info_config["set"]["set_type"]
try:
set_type = [seat_conf[x.encode("utf-8")] for x in ticket_info_config["set"]["set_type"]] set_type = [seat_conf[x.encode("utf-8")] for x in ticket_info_config["set"]["set_type"]]
except KeyError:
set_type = [seat_conf[x] for x in ticket_info_config["set"]["set_type"]]
is_more_ticket = ticket_info_config["set"]["is_more_ticket"] is_more_ticket = ticket_info_config["set"]["is_more_ticket"]
ticke_peoples = ticket_info_config["set"]["ticke_peoples"] ticke_peoples = ticket_info_config["set"]["ticke_peoples"]
station_trains = ticket_info_config["set"]["station_trains"] station_trains = ticket_info_config["set"]["station_trains"]
@ -93,7 +96,14 @@ class select:
print(u"*" * 50) print(u"*" * 50)
print(u"检查当前python版本为{}目前版本只支持2.7.10-2.7.15".format(sys.version.split(" ")[0])) print(u"检查当前python版本为{}目前版本只支持2.7.10-2.7.15".format(sys.version.split(" ")[0]))
print(u"12306刷票小助手最后更新于2019.01.08请勿作为商业用途交流群号286271084(已满) 2群649992274(已满)请加3群(未满) 群号632501142、4群(未满) 群号606340519") print(u"12306刷票小助手最后更新于2019.01.08请勿作为商业用途交流群号286271084(已满)"
u" 2群649992274(已满)\n"
u" 3群632501142(已满)\n"
u" 4群: 606340519(已满)\n"
u" 5群: 948526733(未满)\n"
u" 6群: 444101020(未满)\n"
u" 7群: 660689659(未满)\n"
)
if is_by_time: if is_by_time:
method_notie = u"购票方式:根据时间区间购票\n可接受最早出发时间:{0}\n可接受最晚抵达时间:{1}\n可接受最长旅途时间:{2}\n可接受列车类型:{3}\n" \ method_notie = u"购票方式:根据时间区间购票\n可接受最早出发时间:{0}\n可接受最晚抵达时间:{1}\n可接受最长旅途时间:{2}\n可接受列车类型:{3}\n" \
.format(minutes_to_time(departure_time), minutes_to_time(arrival_time), minutes_to_time(take_time), .format(minutes_to_time(departure_time), minutes_to_time(arrival_time), minutes_to_time(take_time),
@ -134,8 +144,12 @@ class select:
for i in range(0, len(info)): for i in range(0, len(info)):
n_info = info[i].split('|') n_info = info[i].split('|')
station_name[n_info[1]] = n_info[2] station_name[n_info[1]] = n_info[2]
try:
from_station = station_name[from_station.encode("utf8")] from_station = station_name[from_station.encode("utf8")]
to_station = station_name[to_station.encode("utf8")] to_station = station_name[to_station.encode("utf8")]
except KeyError:
from_station = station_name[from_station]
to_station = station_name[to_station]
return from_station, to_station return from_station, to_station
def call_login(self, auth=False): def call_login(self, auth=False):
@ -182,7 +196,7 @@ class select:
raise ticketConfigException(u"cdn列表为空请先加载cdn") raise ticketConfigException(u"cdn列表为空请先加载cdn")
def main(self): def main(self):
autoSynchroTime() # 同步时间 # autoSynchroTime() # 同步时间
self.cdn_certification() self.cdn_certification()
l = liftTicketInit(self) l = liftTicketInit(self)
l.reqLiftTicketInit() l.reqLiftTicketInit()
@ -193,6 +207,8 @@ class select:
t.start() t.start()
from_station, to_station = self.station_table(self.from_station, self.to_station) from_station, to_station = self.station_table(self.from_station, self.to_station)
num = 0 num = 0
s = getPassengerDTOs(session=self, ticket_peoples=self.ticke_peoples)
s.sendGetPassengerDTOs()
while 1: while 1:
try: try:
num += 1 num += 1

View File

@ -25,7 +25,10 @@ class autoSubmitOrderRequest:
leftTicket, leftTicket,
set_type,): set_type,):
self.set_type = set_type self.set_type = set_type
try:
self.secretStr = urllib.unquote(secretStr) self.secretStr = urllib.unquote(secretStr)
except AttributeError:
self.secretStr = urllib.parse.unquote(secretStr)
self.train_date = train_date self.train_date = train_date
self.query_from_station_name = query_from_station_name self.query_from_station_name = query_from_station_name
self.query_to_station_name = query_to_station_name self.query_to_station_name = query_to_station_name

View File

@ -79,7 +79,7 @@ class confirmSingleForQueue:
if "status" in checkQueueOrderResult and checkQueueOrderResult["status"]: if "status" in checkQueueOrderResult and checkQueueOrderResult["status"]:
c_data = checkQueueOrderResult["data"] if "data" in checkQueueOrderResult else {} c_data = checkQueueOrderResult["data"] if "data" in checkQueueOrderResult else {}
if 'submitStatus' in c_data and c_data['submitStatus'] is True: if 'submitStatus' in c_data and c_data['submitStatus'] is True:
print(u"提交订单成功!") # print(u"提交订单成功!")
qow = queryOrderWaitTime(self.session) qow = queryOrderWaitTime(self.session)
qow.sendQueryOrderWaitTime() qow.sendQueryOrderWaitTime()
else: else:

View File

@ -1,4 +1,6 @@
# coding=utf-8 # coding=utf-8
import json
from config.TicketEnmu import ticket from config.TicketEnmu import ticket
from myException.PassengerUserException import PassengerUserException from myException.PassengerUserException import PassengerUserException
import wrapcache import wrapcache
@ -14,19 +16,21 @@ class getPassengerDTOs:
获取乘客信息 获取乘客信息
:return: :return:
""" """
def __init__(self, session, ticket_peoples, set_type, is_more_ticket_num): def __init__(self, session, ticket_peoples=None, set_type=None, is_more_ticket_num=None):
""" """
:param session: 登录实例 :param session: 登录实例
:param ticket_peoples: 乘客 :param ticket_peoples: 乘客
:param set_type: 坐席 :param set_type: 坐席
""" """
if ticket_peoples is None:
ticket_peoples = []
self.session = session self.session = session
self.ticket_peoples = ticket_peoples self.ticket_peoples = ticket_peoples
self.is_more_ticket_num = is_more_ticket_num self.is_more_ticket_num = is_more_ticket_num
self.set_type = set_type.encode("utf8") self.set_type = set_type
def sendGetPassengerDTOs(self): def sendGetPassengerDTOs(self):
getPassengerDTOsResult = self.session.httpClint.send(self.session.urls["get_passengerDTOs"], {}) getPassengerDTOsResult = self.session.httpClint.send(self.session.urls["get_passengerDTOs"], json.dumps({"_json_att": ""}))
if getPassengerDTOsResult.get("data", False) and getPassengerDTOsResult["data"].get("normal_passengers", False): if getPassengerDTOsResult.get("data", False) and getPassengerDTOsResult["data"].get("normal_passengers", False):
normal_passengers = getPassengerDTOsResult['data']['normal_passengers'] normal_passengers = getPassengerDTOsResult['data']['normal_passengers']
_normal_passenger = [normal_passengers[i] for i in range(len(normal_passengers)) if _normal_passenger = [normal_passengers[i] for i in range(len(normal_passengers)) if
@ -38,8 +42,10 @@ class getPassengerDTOs:
elif getPassengerDTOsResult.get('messages', False): elif getPassengerDTOsResult.get('messages', False):
print(getPassengerDTOsResult.get('messages', False)) print(getPassengerDTOsResult.get('messages', False))
else: else:
print(getPassengerDTOsResult) print(u"警告:您的账号可能买票有问题,获取不到联系人,请测试是否能正常下单,在捡漏或者购票!!!")
raise PassengerUserException(ticket.DTO_NOT_FOUND) print(u"警告:您的账号可能买票有问题,获取不到联系人,请测试是否能正常下单,在捡漏或者购票!!!")
print(u"警告:您的账号可能买票有问题,获取不到联系人,请测试是否能正常下单,在捡漏或者购票!!!")
# raise PassengerUserException(ticket.DTO_NOT_FOUND)
def getPassengerTicketStr(self, set_type): def getPassengerTicketStr(self, set_type):
""" """
@ -57,7 +63,6 @@ class getPassengerDTOs:
'软座': 2, '软座': 2,
'软卧': 4, '软卧': 4,
'硬卧': 3, '硬卧': 3,
'动卧': 1,
} }
return str(passengerTicketStr[set_type.replace(' ', '')]) return str(passengerTicketStr[set_type.replace(' ', '')])

View File

@ -1,5 +1,6 @@
# coding=utf-8 # coding=utf-8
import datetime import datetime
import sys
import time import time
from collections import OrderedDict from collections import OrderedDict
import wrapcache import wrapcache
@ -46,7 +47,10 @@ class getQueueCount:
:return: :return:
""" """
if sys.version_info.major is 2:
new_train_date = filter(None, str(time.asctime(time.strptime(self.station_dates, "%Y-%m-%d"))).split(" ")) new_train_date = filter(None, str(time.asctime(time.strptime(self.station_dates, "%Y-%m-%d"))).split(" "))
else:
new_train_date = list(filter(None, str(time.asctime(time.strptime(self.station_dates, "%Y-%m-%d"))).split(" ")))
data = OrderedDict() data = OrderedDict()
data['train_date'] = "{0} {1} 0{2} {3} 00:00:00 GMT+0800 (中国标准时间)".format( data['train_date'] = "{0} {1} 0{2} {3} 00:00:00 GMT+0800 (中国标准时间)".format(
new_train_date[0], new_train_date[0],

View File

@ -1,5 +1,6 @@
# coding=utf-8 # coding=utf-8
import datetime import datetime
import sys
import time import time
from collections import OrderedDict from collections import OrderedDict
@ -56,7 +57,10 @@ class getQueueCountAsync:
- _json_att 没啥卵用还是带上吧 - _json_att 没啥卵用还是带上吧
:return: :return:
""" """
if sys.version_info.major is 2:
new_train_date = filter(None, str(time.asctime(time.strptime(self.station_dates, "%Y-%m-%d"))).split(" ")) new_train_date = filter(None, str(time.asctime(time.strptime(self.station_dates, "%Y-%m-%d"))).split(" "))
else:
new_train_date = list(filter(None, str(time.asctime(time.strptime(self.station_dates, "%Y-%m-%d"))).split(" ")))
data = OrderedDict() data = OrderedDict()
data['train_date'] = "{0} {1} {2} {3} 00:00:00 GMT+0800 (中国标准时间)".format( data['train_date'] = "{0} {1} {2} {3} 00:00:00 GMT+0800 (中国标准时间)".format(
new_train_date[0], new_train_date[0],

View File

@ -103,7 +103,7 @@ class query:
if result: if result:
for i in value['result']: for i in value['result']:
ticket_info = i.split('|') ticket_info = i.split('|')
if ticket_info[11] == "Y" and ticket_info[1].encode("utf8") == "预订": # 筛选未在开始时间内的车次 if ticket_info[11] == "Y" and ticket_info[1] == "预订": # 筛选未在开始时间内的车次
for j in self._station_seat: for j in self._station_seat:
is_ticket_pass = ticket_info[j] is_ticket_pass = ticket_info[j]
if is_ticket_pass != '' and is_ticket_pass != '' and is_ticket_pass != '*' and self.check_is_need_train( if is_ticket_pass != '' and is_ticket_pass != '' and is_ticket_pass != '*' and self.check_is_need_train(

View File

@ -4,6 +4,7 @@ import time
from config.TicketEnmu import ticket from config.TicketEnmu import ticket
from config.emailConf import sendEmail from config.emailConf import sendEmail
from config.pushbearConf import sendPushBear
from myException.ticketIsExitsException import ticketIsExitsException from myException.ticketIsExitsException import ticketIsExitsException
from myException.ticketNumOutException import ticketNumOutException from myException.ticketNumOutException import ticketNumOutException
@ -42,6 +43,8 @@ class queryOrderWaitTime:
if data and data.get("orderId", ""): if data and data.get("orderId", ""):
sendEmail(ticket.WAIT_ORDER_SUCCESS.format( sendEmail(ticket.WAIT_ORDER_SUCCESS.format(
data.get("orderId", ""))) data.get("orderId", "")))
sendPushBear(ticket.WAIT_ORDER_SUCCESS.format(
data.get("orderId", "")))
raise ticketIsExitsException(ticket.WAIT_ORDER_SUCCESS.format( raise ticketIsExitsException(ticket.WAIT_ORDER_SUCCESS.format(
data.get("orderId"))) data.get("orderId")))
elif data.get("msg", False): elif data.get("msg", False):

View File

@ -19,7 +19,10 @@ class submitOrderRequest:
def __init__(self, session, secretStr, from_station, to_station, train_no, set_type, def __init__(self, session, secretStr, from_station, to_station, train_no, set_type,
passengerTicketStrList, oldPassengerStr, train_date, ticke_peoples): passengerTicketStrList, oldPassengerStr, train_date, ticke_peoples):
self.session = session self.session = session
self.secretStr = secretStr try:
self.secretStr = urllib.unquote(secretStr)
except AttributeError:
self.secretStr = urllib.parse.unquote(secretStr)
self.from_station = from_station self.from_station = from_station
self.to_station = to_station self.to_station = to_station
self.to_station = to_station self.to_station = to_station
@ -34,7 +37,7 @@ class submitOrderRequest:
""" """
:return: :return:
""" """
data = [('secretStr', urllib.unquote(self.secretStr)), # 字符串加密 data = [('secretStr', self.secretStr), # 字符串加密
('train_date', self.train_date), # 出发时间 ('train_date', self.train_date), # 出发时间
('back_train_date', time()), # 返程时间 ('back_train_date', time()), # 返程时间
('tour_flag', 'dc'), # 旅途类型 ('tour_flag', 'dc'), # 旅途类型

BIN
tkcode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB