3.0
This commit is contained in:
1 parent
2052c84aaa
commit
fa3e8827fa
5 files changed
+435
-198
No files matched your search
@@ -30,3 +30,9 @@ old/slider.py
|
||||
old/slider_screenshot.png
|
||||
old/true_image.png
|
||||
old/weibo.py
|
||||
bin/__pycache__/slider.cpython-36.pyc
|
||||
.idea/workspace.xml
|
||||
bin/img2.png
|
||||
bin/slider_screenshot.png
|
||||
bin/true_image.png
|
||||
test.py
|
||||
Generated
+214
-168
@@ -1,7 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="58acc6c6-8ea5-48bb-95b2-31fcec9a4358" name="Default" comment="" />
|
||||
<list default="true" id="58acc6c6-8ea5-48bb-95b2-31fcec9a4358" name="Default" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/download.py" beforeDir="false" afterPath="$PROJECT_DIR$/download.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/upload.py" beforeDir="false" afterPath="$PROJECT_DIR$/upload.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="TRACKING_ENABLED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
@@ -11,11 +16,11 @@
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="375">
|
||||
<file leaf-file-name="upload.py" pinned="false" current-in-tab="false">
|
||||
<file leaf-file-name="upload.py" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/upload.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="3401">
|
||||
<caret line="179" selection-start-line="179" selection-end-line="179" />
|
||||
<state relative-caret-position="247">
|
||||
<caret line="43" column="17" selection-start-line="43" selection-start-column="17" selection-end-line="43" selection-end-column="17" />
|
||||
<folding>
|
||||
<element signature="e#0#11#0" expanded="true" />
|
||||
</folding>
|
||||
@@ -23,58 +28,69 @@
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="download.py" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/download.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1280">
|
||||
<caret line="75" column="11" selection-start-line="75" selection-start-column="11" selection-end-line="75" selection-end-column="11" />
|
||||
<folding>
|
||||
<element signature="e#0#20#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="work.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/work.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1254">
|
||||
<caret line="73" column="38" selection-start-line="73" selection-start-column="38" selection-end-line="73" selection-end-column="38" />
|
||||
<folding>
|
||||
<element signature="e#0#14#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="start.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/start.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="46">
|
||||
<caret line="32" column="41" selection-start-line="32" selection-start-column="41" selection-end-line="32" selection-end-column="41" />
|
||||
<state relative-caret-position="1159">
|
||||
<caret line="61" column="25" selection-start-line="61" selection-start-column="25" selection-end-line="61" selection-end-column="25" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="slider.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/bin/slider.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="589">
|
||||
<caret line="37" column="20" selection-start-line="37" selection-start-column="20" selection-end-line="37" selection-end-column="20" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="download.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/download.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="437">
|
||||
<caret line="28" column="6" selection-start-line="28" selection-start-column="6" selection-end-line="28" selection-end-column="6" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="slider.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/old/slider.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="304">
|
||||
<caret line="22" column="78" selection-start-line="22" selection-start-column="8" selection-end-line="22" selection-end-column="78" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="test.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/test.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="285">
|
||||
<caret line="24" column="36" selection-start-line="24" selection-start-column="11" selection-end-line="24" selection-end-column="36" />
|
||||
<folding>
|
||||
<element signature="e#472#483#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="bilibili.cookie" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/old/bilibili.cookie">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="configlog.ini" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/configlog.ini">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="627">
|
||||
<caret line="33" column="53" selection-start-line="33" selection-start-column="53" selection-end-line="33" selection-end-column="53" />
|
||||
<state>
|
||||
<caret selection-end-column="38" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="external.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/external.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
@@ -121,20 +137,24 @@
|
||||
<option value="$PROJECT_DIR$/get_cookie.py" />
|
||||
<option value="$PROJECT_DIR$/refresh_cookie.py" />
|
||||
<option value="$PROJECT_DIR$/cookie.py" />
|
||||
<option value="$PROJECT_DIR$/start.py" />
|
||||
<option value="$PROJECT_DIR$/old/bilibili_login.py" />
|
||||
<option value="$PROJECT_DIR$/old/weibo.py" />
|
||||
<option value="$PROJECT_DIR$/old/get_cookie.py" />
|
||||
<option value="$PROJECT_DIR$/old/bilibili_login.py" />
|
||||
<option value="$PROJECT_DIR$/old/slider.py" />
|
||||
<option value="$PROJECT_DIR$/old/bilibili.cookie" />
|
||||
<option value="$PROJECT_DIR$/download.py" />
|
||||
<option value="$PROJECT_DIR$/test.py" />
|
||||
<option value="$PROJECT_DIR$/bin/slider.py" />
|
||||
<option value="$PROJECT_DIR$/start.py" />
|
||||
<option value="$PROJECT_DIR$/upload.py" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds">
|
||||
<option name="x" value="65" />
|
||||
<option name="y" value="220" />
|
||||
<component name="ProjectFrameBounds" extendedState="1">
|
||||
<option name="x" value="346" />
|
||||
<option name="y" value="121" />
|
||||
<option name="width" value="1365" />
|
||||
<option name="height" value="860" />
|
||||
<option name="height" value="880" />
|
||||
</component>
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||
<component name="ProjectView">
|
||||
@@ -142,7 +162,6 @@
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
@@ -150,6 +169,11 @@
|
||||
<item name="bilibiliupload" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="bilibiliupload" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="bilibiliupload" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="bilibiliupload" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="bin" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="bilibiliupload" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="bilibiliupload" type="462c0819:PsiDirectoryNode" />
|
||||
@@ -159,6 +183,7 @@
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scope" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
@@ -186,7 +211,7 @@
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="RunManager" selected="Python.get_cookie (2)">
|
||||
<component name="RunManager" selected="Python.test">
|
||||
<configuration name="bilibili_login" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="bilibiliupload" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
@@ -241,7 +266,7 @@
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
</configuration>
|
||||
<configuration name="refresh_cookie" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<configuration name="test" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="bilibiliupload" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
@@ -253,7 +278,7 @@
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/refresh_cookie.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/test.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
@@ -297,19 +322,19 @@
|
||||
</configuration>
|
||||
<list>
|
||||
<item itemvalue="Python.upload" />
|
||||
<item itemvalue="Python.refresh_cookie" />
|
||||
<item itemvalue="Python.cookie" />
|
||||
<item itemvalue="Python.get_cookie (2)" />
|
||||
<item itemvalue="Python.bilibili_login" />
|
||||
<item itemvalue="Python.weibo" />
|
||||
<item itemvalue="Python.test" />
|
||||
</list>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Python.test" />
|
||||
<item itemvalue="Python.bilibili_login" />
|
||||
<item itemvalue="Python.get_cookie (2)" />
|
||||
<item itemvalue="Python.weibo" />
|
||||
<item itemvalue="Python.bilibili_login" />
|
||||
<item itemvalue="Python.cookie" />
|
||||
<item itemvalue="Python.refresh_cookie" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
@@ -327,57 +352,47 @@
|
||||
<servers />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="311" y="65" width="1090" height="704" extended-state="0" />
|
||||
<frame x="277" y="97" width="1092" height="704" extended-state="0" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.3462998" />
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.2784091" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="bottom" id="Event Log" order="7" side_tool="true" />
|
||||
<window_info anchor="bottom" x="339" y="275" width="1143" height="252" id="Run" order="2" type="WINDOWED" weight="0.32968536" />
|
||||
<window_info anchor="bottom" id="Version Control" order="7" />
|
||||
<window_info anchor="bottom" id="Python Console" order="7" />
|
||||
<window_info anchor="bottom" x="719" y="518" width="758" height="185" id="Run" order="2" type="WINDOWED" weight="0.32968536" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info anchor="bottom" x="33" y="260" width="1274" height="433" id="Terminal" order="7" type="WINDOWED" weight="0.32968536" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info id="Favorites" order="2" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Version Control" order="7" />
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.27935606" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info anchor="right" id="Commander" order="0" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="bottom" x="657" y="352" width="730" height="127" id="Run" order="2" type="WINDOWED" weight="0.32968536" />
|
||||
<window_info anchor="right" id="Data View" order="3" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Event Log" order="7" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info id="Favorites" order="2" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info anchor="bottom" x="33" y="260" width="1274" height="433" id="Terminal" order="7" type="WINDOWED" weight="0.32968536" />
|
||||
<window_info anchor="bottom" id="Python Console" order="7" />
|
||||
</layout>
|
||||
<layout-to-restore>
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.27073553" />
|
||||
<window_info anchor="bottom" x="542" y="621" width="1143" height="252" id="Run" order="2" type="WINDOWED" weight="0.32968536" />
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.2784091" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="right" id="Data View" order="3" />
|
||||
<window_info id="Structure" order="1" weight="0.25" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info anchor="right" id="Commander" order="0" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="bottom" id="Version Control" order="8" />
|
||||
<window_info anchor="bottom" id="Version Control" order="10" />
|
||||
<window_info anchor="bottom" x="361" y="588" width="758" height="185" id="Run" order="2" type="WINDOWED" visible="true" weight="0.32968536" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info anchor="bottom" x="33" y="260" width="1274" height="433" id="Terminal" order="10" type="WINDOWED" weight="0.32968536" />
|
||||
<window_info anchor="bottom" id="Event Log" order="7" side_tool="true" />
|
||||
<window_info anchor="bottom" x="33" y="260" width="1274" height="433" id="Terminal" order="8" type="WINDOWED" weight="0.32968536" />
|
||||
<window_info anchor="bottom" id="Event Log" order="9" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info id="Favorites" order="2" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Python Console" order="9" />
|
||||
<window_info anchor="bottom" id="Python Console" order="7" />
|
||||
</layout-to-restore>
|
||||
</component>
|
||||
<component name="VcsContentAnnotationSettings">
|
||||
@@ -389,61 +404,77 @@
|
||||
</breakpoint-manager>
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python36/Lib/site-packages/selenium/webdriver/common/by.py">
|
||||
<entry file="file://$PROJECT_DIR$/old/bilibili.cookie">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="418">
|
||||
<caret line="22" column="6" selection-start-line="22" selection-start-column="6" selection-end-line="22" selection-end-column="6" />
|
||||
<state>
|
||||
<caret selection-end-column="38" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="779">
|
||||
<caret line="50" column="16" selection-start-line="50" selection-start-column="16" selection-end-line="50" selection-end-column="16" />
|
||||
<folding>
|
||||
<element signature="e#472#483#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/upload.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="722">
|
||||
<caret line="48" column="8" selection-start-line="48" selection-start-column="8" selection-end-line="48" selection-end-column="8" />
|
||||
<folding>
|
||||
<element signature="e#0#11#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/bin/slider.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="2223">
|
||||
<caret line="123" column="13" selection-start-line="123" selection-start-column="13" selection-end-line="123" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/old/slider.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1216">
|
||||
<caret line="66" column="36" selection-start-line="66" selection-start-column="36" selection-end-line="66" selection-end-column="36" />
|
||||
<state relative-caret-position="418">
|
||||
<caret line="28" column="41" selection-start-line="28" selection-start-column="41" selection-end-line="28" selection-end-column="41" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="152">
|
||||
<caret line="15" column="5" selection-start-line="15" selection-start-column="5" selection-end-line="15" selection-end-column="5" />
|
||||
<folding>
|
||||
<element signature="e#472#483#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/old/bilibili.cookie">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret selection-end-column="38" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python36/Lib/site-packages/youtube_dl/YoutubeDL.py" />
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python36/Lib/site-packages/youtube_dl/extractor/adobepass.py" />
|
||||
<entry file="file://$PROJECT_DIR$/download.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="2369">
|
||||
<caret line="110" column="13" selection-start-line="110" selection-start-column="13" selection-end-line="110" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="e#0#20#0" expanded="true" />
|
||||
</folding>
|
||||
<state relative-caret-position="437">
|
||||
<caret line="28" column="6" selection-start-line="28" selection-start-column="6" selection-end-line="28" selection-end-column="6" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/upload.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<folding>
|
||||
<element signature="e#0#11#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/upload.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<folding>
|
||||
<element signature="e#0#11#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/upload.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<folding>
|
||||
<element signature="e#0#11#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python36/Lib/site-packages/youtube_dl/postprocessor/execafterdownload.py" />
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python36/Lib/site-packages/youtube_dl/downloader/dash.py" />
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python36/Lib/site-packages/youtube_dl/downloader/fragment.py" />
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python36/Lib/site-packages/youtube_dl/downloader/hls.py" />
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python36/Lib/site-packages/youtube_dl/extractor/twitch.py" />
|
||||
@@ -534,44 +565,10 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/old/bilibili.cookie">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/cookie.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="621">
|
||||
<caret line="27" column="21" selection-start-line="27" selection-start-column="21" selection-end-line="27" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/old/slider.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1216">
|
||||
<caret line="66" column="36" selection-start-line="66" selection-start-column="36" selection-end-line="66" selection-end-column="36" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/work.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1254">
|
||||
<caret line="73" column="38" selection-start-line="73" selection-start-column="38" selection-end-line="73" selection-end-column="38" />
|
||||
<folding>
|
||||
<element signature="e#0#14#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/start.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="46">
|
||||
<caret line="32" column="41" selection-start-line="32" selection-start-column="41" selection-end-line="32" selection-end-column="41" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/old/bilibili_login.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="133">
|
||||
<caret line="8" selection-start-line="8" selection-end-line="8" selection-end-column="52" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -582,36 +579,85 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/old/weibo.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="190">
|
||||
<caret line="10" column="25" selection-start-line="10" selection-start-column="25" selection-end-line="10" selection-end-column="25" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/old/weibo.py" />
|
||||
<entry file="file://$PROJECT_DIR$/old/get_cookie.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="741">
|
||||
<caret line="42" column="29" selection-start-line="42" selection-start-column="29" selection-end-line="42" selection-end-column="29" />
|
||||
<state relative-caret-position="-26">
|
||||
<caret line="16" column="292" selection-start-line="16" selection-start-column="14" selection-end-line="16" selection-end-column="292" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/upload.py">
|
||||
<entry file="file://$PROJECT_DIR$/cookie.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="3401">
|
||||
<caret line="179" selection-start-line="179" selection-end-line="179" />
|
||||
<state relative-caret-position="513">
|
||||
<caret line="27" column="21" selection-start-line="27" selection-start-column="21" selection-end-line="27" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/old/bilibili_login.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-1760">
|
||||
<caret line="12" column="52" selection-start-line="12" selection-start-column="52" selection-end-line="12" selection-end-column="52" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/old/bilibili.cookie">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret selection-end-column="38" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/old/slider.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="304">
|
||||
<caret line="22" column="78" selection-start-line="22" selection-start-column="8" selection-end-line="22" selection-end-column="78" />
|
||||
<folding>
|
||||
<element signature="e#0#11#0" expanded="true" />
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="285">
|
||||
<caret line="24" column="36" selection-start-line="24" selection-start-column="11" selection-end-line="24" selection-end-column="36" />
|
||||
<folding>
|
||||
<element signature="e#472#483#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/bin/slider.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="589">
|
||||
<caret line="37" column="20" selection-start-line="37" selection-start-column="20" selection-end-line="37" selection-end-column="20" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/download.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1280">
|
||||
<caret line="75" column="11" selection-start-line="75" selection-start-column="11" selection-end-line="75" selection-end-column="11" />
|
||||
<state relative-caret-position="437">
|
||||
<caret line="28" column="6" selection-start-line="28" selection-start-column="6" selection-end-line="28" selection-end-column="6" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/start.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1159">
|
||||
<caret line="61" column="25" selection-start-line="61" selection-start-column="25" selection-end-line="61" selection-end-column="25" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/upload.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="247">
|
||||
<caret line="43" column="17" selection-start-line="43" selection-start-column="17" selection-end-line="43" selection-end-column="17" />
|
||||
<folding>
|
||||
<element signature="e#0#20#0" expanded="true" />
|
||||
<element signature="e#0#11#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
|
||||
+138
@@ -0,0 +1,138 @@
|
||||
import random
|
||||
import time
|
||||
from PIL import Image
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
|
||||
|
||||
class slider_cracker(object):
|
||||
def __init__(self,driver):
|
||||
self.driver = driver
|
||||
self.driver.maximize_window() #最大化窗口
|
||||
|
||||
def get_true_image(self,slider_xpath=r'//*[@id="gc-box"]/div/div[3]/div[1]'):
|
||||
element = WebDriverWait(self.driver, 50).until(EC.element_to_be_clickable((By.XPATH,slider_xpath)))
|
||||
ActionChains(self.driver).move_to_element(element).perform()#鼠标移动到滑动框以显示图片
|
||||
time.sleep(1)
|
||||
true_image = self.get_img('bin/true_image.png')
|
||||
return true_image
|
||||
|
||||
def get_img(self,img_name,img_xpath=r'//*[@id="gc-box"]/div/div[1]/div[2]/div[1]/a[2]'):#260*116
|
||||
screen_shot = self.driver.save_screenshot('bin/slider_screenshot.png')
|
||||
image_element = self.driver.find_element_by_xpath(img_xpath)
|
||||
left = image_element.location['x']
|
||||
top = image_element.location['y'] #selenium截图并获取验证图片location后将其截出保存
|
||||
right = image_element.location['x'] + image_element.size['width']
|
||||
bottom = image_element.location['y'] + image_element.size['height']
|
||||
image = Image.open('bin/slider_screenshot.png')
|
||||
image = image.crop((left, top, right, bottom))
|
||||
image.save(img_name)
|
||||
return image
|
||||
|
||||
def analysis(self,true_image,knob_xpath=r'//*[@id="gc-box"]/div/div[3]/div[2]'):
|
||||
img1 = Image.open('bin/true_image.png')
|
||||
slider_element = self.driver.find_element_by_xpath(knob_xpath)
|
||||
ActionChains(self.driver).click_and_hold(slider_element).perform() #点击滑块后截取残缺图
|
||||
time.sleep(1)
|
||||
img2 = self.get_img('bin/img2.png')
|
||||
img1_width,img1_height = img1.size
|
||||
img2_width,img2_height = img2.size
|
||||
left = 0
|
||||
flag = False
|
||||
|
||||
for i in range(65, img1_width): #遍历x>65的像素点(x<65是拼图块)
|
||||
for j in range(0,img1_height):
|
||||
if not self.is_pixel_equal(img1, img2, i, j):
|
||||
left = i
|
||||
flag = True
|
||||
break
|
||||
if flag:
|
||||
break
|
||||
if left >= 73:
|
||||
left = left + 7 #误差纠正
|
||||
else:
|
||||
left = left
|
||||
return left
|
||||
|
||||
def is_pixel_equal(self, img1, img2, x, y): #通过比较俩图片像素点RGB值差值判断是否为缺口
|
||||
pix1 = img1.load()[x, y]
|
||||
pix2 = img2.load()[x, y]
|
||||
if (abs(pix1[0] - pix2[0] < 60) and abs(pix1[1] - pix2[1] < 60) and abs(pix1[2] - pix2[2] < 60)):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def get_track(self, distance):
|
||||
"""
|
||||
根据偏移量获取移动轨迹
|
||||
:param distance: 偏移量
|
||||
:return: 移动轨迹
|
||||
"""
|
||||
# 移动轨迹
|
||||
track = []
|
||||
# 当前位移
|
||||
current = 0
|
||||
# 减速阈值
|
||||
mid = distance * 4 / 5
|
||||
# 计算间隔
|
||||
t = 0.2
|
||||
# 初速度
|
||||
v = 0
|
||||
|
||||
while current < distance:
|
||||
if current < mid:
|
||||
# 加速度为正2
|
||||
a = 2
|
||||
else:
|
||||
# 加速度为负3
|
||||
a = -3
|
||||
# 初速度v0
|
||||
v0 = v
|
||||
# 当前速度v = v0 + at
|
||||
v = v0 + a * t
|
||||
# 移动距离x = v0t + 1/2 * a * t^2
|
||||
move = v0 * t + 1 / 2 * a * t * t
|
||||
# 当前位移
|
||||
current += move
|
||||
# 加入轨迹
|
||||
track.append(round(move))
|
||||
# print(track)
|
||||
#
|
||||
# print(sum(track))
|
||||
track.append(distance-sum(track))
|
||||
# print(track)
|
||||
# print(sum(track))
|
||||
return track
|
||||
|
||||
def move_to_gap(self, slider, track):
|
||||
"""
|
||||
拖动滑块到缺口处
|
||||
:param slider: 滑块
|
||||
:param track: 轨迹
|
||||
:return:
|
||||
"""
|
||||
ActionChains(self.driver).click_and_hold(slider).perform()
|
||||
for x in track:
|
||||
ActionChains(self.driver).move_by_offset(xoffset=x, yoffset=random.uniform(-2, 2)).perform()
|
||||
time.sleep(0.5)
|
||||
ActionChains(self.driver).release().perform()
|
||||
|
||||
def crack(self):
|
||||
true_image = self.get_true_image()
|
||||
x_offset = self.analysis(true_image)
|
||||
print(x_offset)
|
||||
|
||||
track = self.get_track(x_offset)
|
||||
knob_element = WebDriverWait(self.driver, 50).until(EC.element_to_be_clickable((By.XPATH,r'//*[@id="gc-box"]/div/div[3]/div[2]')))
|
||||
self.move_to_gap(knob_element,track)
|
||||
|
||||
# time.sleep(0.02)
|
||||
# screen_shot = self.driver.save_screenshot('bin/result0.png')
|
||||
# time.sleep(5)
|
||||
# screen_shot = self.driver.save_screenshot('bin/result1.png')
|
||||
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -25,8 +25,8 @@ links_id = {
|
||||
'星际2小herO神族天梯第一视角': ['dmadkr0818'],
|
||||
'星际2Zest神族天梯第一视角': ['sc2_zest'],
|
||||
'星际2PartinG跳跳胖丁神族天梯第一视角':['partingthebigboy'],
|
||||
'星际ForGG火车王人族天梯第一视角': ['forgg'],
|
||||
'星际2NoRegreT莲弟虫族天梯第一视角': ['noregret_']
|
||||
# '星际ForGG火车王人族天梯第一视角': ['forgg'],
|
||||
# '星际2NoRegreT莲弟虫族天梯第一视角': ['noregret_']
|
||||
# 'test':['expertmma','37229'],
|
||||
# 'test1':['byunprime','10003']
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import os
|
||||
from selenium import webdriver
|
||||
import selenium
|
||||
import time
|
||||
from bin.slider import slider_cracker
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
@@ -12,16 +13,9 @@ import logging
|
||||
|
||||
# 10800 18000 4110
|
||||
|
||||
|
||||
logger = logging.getLogger('log01')
|
||||
|
||||
# def excision(Path):
|
||||
# file_size = os.path.getsize(Path)/1024/1024/1024
|
||||
#
|
||||
# print(file_size)
|
||||
#
|
||||
# excision('innovation.flv')
|
||||
|
||||
|
||||
def get_file(filename):
|
||||
file_list = []
|
||||
for file_name in os.listdir():
|
||||
@@ -30,6 +24,11 @@ def get_file(filename):
|
||||
return sorted(file_list)
|
||||
|
||||
|
||||
def remove_filelist(file_list):
|
||||
for r in file_list:
|
||||
os.remove(r)
|
||||
logger.info('删除-' + r)
|
||||
|
||||
def filter_file(file_list):
|
||||
for r in file_list:
|
||||
file_size = os.path.getsize(r) / 1024 / 1024 / 1024
|
||||
@@ -37,9 +36,23 @@ def filter_file(file_list):
|
||||
os.remove(r)
|
||||
logger.info('过滤删除-' + r)
|
||||
|
||||
def upload(video_path, link, title_):
|
||||
|
||||
def upload(video_list, link, title_):
|
||||
|
||||
filename = 'bin/bilibili.cookie'
|
||||
user_name = ''
|
||||
pass_word = ''
|
||||
|
||||
video_path = assemble_videopath(video_list)
|
||||
|
||||
service_log_path = "{}/chromedriver.log".format('/home')
|
||||
options = webdriver.ChromeOptions()
|
||||
|
||||
options.add_argument('headless')
|
||||
driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', chrome_options=options,
|
||||
service_log_path=service_log_path)
|
||||
try:
|
||||
service_log_path = "{}/chromedriver.log".format('/home')
|
||||
# service_log_path = "{}/chromedriver.log".format('/home')
|
||||
# service_log_path = "{}\\chromedriver.log".format('D:\\bilibiliupload')
|
||||
|
||||
|
||||
@@ -47,15 +60,16 @@ def upload(video_path, link, title_):
|
||||
# video_path = 'D:\\p2.flv\nD:\\p1.flv\nD:\\享受星际!!!看会比赛.flv'
|
||||
# link = 'https://www.panda.tv/1160340'
|
||||
|
||||
options = webdriver.ChromeOptions()
|
||||
# options = webdriver.ChromeOptions()
|
||||
#
|
||||
# options.add_argument('headless')
|
||||
|
||||
options.add_argument('headless')
|
||||
# options.add_argument('no-sandbox')
|
||||
# options.binary_location = '/usr/bin/google-chrome-stable'
|
||||
|
||||
|
||||
driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', chrome_options=options,
|
||||
service_log_path=service_log_path)
|
||||
# driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', chrome_options=options,
|
||||
# service_log_path=service_log_path)
|
||||
# driver = webdriver.Chrome(executable_path=r'D:\bilibiliupload\chromedriver.exe',service_log_path=service_log_path)
|
||||
|
||||
driver.get("https://www.bilibili.com")
|
||||
@@ -82,7 +96,7 @@ def upload(video_path, link, title_):
|
||||
# {'domain': '.bilibili.com', 'expiry': 1517221325.776721, 'httpOnly': True, 'name': '_dfcaptcha',
|
||||
# 'path': '/', 'secure': False, 'value': 'a32213f1be85682d37cde24aedc2d135'}]
|
||||
|
||||
with open('bilibili.cookie') as f:
|
||||
with open(filename) as f:
|
||||
new_cookie = json.load(f)
|
||||
|
||||
for cookie in new_cookie:
|
||||
@@ -106,7 +120,7 @@ def upload(video_path, link, title_):
|
||||
|
||||
cookie = driver.get_cookies()
|
||||
#
|
||||
with open('bilibili.cookie', "w") as f:
|
||||
with open(filename, "w") as f:
|
||||
json.dump(cookie, f)
|
||||
|
||||
# logger.info(driver.title)
|
||||
@@ -202,17 +216,50 @@ def upload(video_path, link, title_):
|
||||
|
||||
print('稿件提交完成!')
|
||||
logger.info('%s提交完成!' % title_)
|
||||
remove_filelist(video_list)
|
||||
except selenium.common.exceptions.NoSuchElementException:
|
||||
logger.exception('发生错误')
|
||||
# except selenium.common.exceptions.TimeoutException:
|
||||
# logger.exception('超时')
|
||||
# except:
|
||||
# logger.exception('未知错误')
|
||||
except selenium.common.exceptions.TimeoutException:
|
||||
logger.info('准备更新cookie')
|
||||
# screen_shot = driver.save_screenshot('bin/1.png')
|
||||
WebDriverWait(driver, 10).until(
|
||||
EC.presence_of_element_located((By.XPATH, r'//*[@id="login-username"]')))
|
||||
|
||||
username = driver.find_element_by_xpath(r'//*[@id="login-username"]')
|
||||
username.send_keys(user_name)
|
||||
|
||||
password = driver.find_element_by_xpath('//*[@id="login-passwd"]')
|
||||
password.send_keys(pass_word)
|
||||
|
||||
cracker = slider_cracker(driver)
|
||||
|
||||
cracker.crack()
|
||||
|
||||
time.sleep(5)
|
||||
if driver.title == '投稿 - 哔哩哔哩弹幕视频网 - ( ゜- ゜)つロ 乾杯~ - bilibili':
|
||||
cookie = driver.get_cookies()
|
||||
print(cookie)
|
||||
with open(filename, "w") as f:
|
||||
json.dump(cookie, f)
|
||||
logger.info('更新cookie成功')
|
||||
else:
|
||||
logger.info('更新cookie失败')
|
||||
finally:
|
||||
driver.quit()
|
||||
logger.info('浏览器驱动退出')
|
||||
|
||||
|
||||
def assemble_videopath(file_list):
|
||||
videopath = ''
|
||||
root = os.getcwd()
|
||||
for i in range(len(file_list)):
|
||||
file = file_list[i]
|
||||
videopath += root + '/' + file + '\n'
|
||||
videopath = videopath.rstrip()
|
||||
return videopath
|
||||
|
||||
def uploads(file_name_, url_):
|
||||
|
||||
logger.info('准备上传' + file_name_[:-4])
|
||||
@@ -222,17 +269,17 @@ def uploads(file_name_, url_):
|
||||
filter_file(file_list)
|
||||
file_list = get_file(file_name_)
|
||||
logger.debug('获取%s文件列表' % file_name_[:-4])
|
||||
videopath = ''
|
||||
root = os.getcwd()
|
||||
for i in range(len(file_list)):
|
||||
file = file_list[i]
|
||||
videopath += root + '/' + file + '\n'
|
||||
videopath = videopath.rstrip()
|
||||
upload(video_path=videopath, link=url_, title_=file_name_[:-4])
|
||||
# videopath = ''
|
||||
# root = os.getcwd()
|
||||
# for i in range(len(file_list)):
|
||||
# file = file_list[i]
|
||||
# videopath += root + '/' + file + '\n'
|
||||
# videopath = videopath.rstrip()
|
||||
upload(video_list=file_list, link=url_, title_=file_name_[:-4])
|
||||
|
||||
for r in file_list:
|
||||
os.remove(r)
|
||||
logger.info('删除-' + r)
|
||||
# for r in file_list:
|
||||
# os.remove(r)
|
||||
# logger.info('删除-' + r)
|
||||
|
||||
|
||||
def supplemental_upload(dict, file_name_, key_, url_, value_):
|
||||
|
||||
Reference in new issue
Block a user