download by libtorrent with start and stop
parent
eff2c1c6f3
commit
5dd2c94fed
|
@ -2,6 +2,10 @@
|
|||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="56e91349-2444-4553-bc78-90c2bab49e9c" name="Default" comment="">
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Core.py" afterPath="$PROJECT_DIR$/Core.py" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Libtorrent.py" afterPath="$PROJECT_DIR$/Libtorrent.py" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Localization.py" afterPath="$PROJECT_DIR$/Localization.py" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/functions.py" afterPath="$PROJECT_DIR$/functions.py" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||
</list>
|
||||
<ignored path="plugin.video.torrenter.iws" />
|
||||
|
@ -33,12 +37,52 @@
|
|||
<splitter split-orientation="horizontal" split-proportion="0.5">
|
||||
<split-first>
|
||||
<leaf>
|
||||
<file leaf-file-name="Core.py" pinned="false" current="false" current-in-tab="false">
|
||||
<file leaf-file-name="Core.py" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/Core.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="5865" max-vertical-offset="28220">
|
||||
<caret line="345" column="25" selection-start-line="345" selection-start-column="25" selection-end-line="345" selection-end-column="25" />
|
||||
<folding />
|
||||
<state vertical-scroll-proportion="0.5247019" vertical-offset="1222" max-vertical-offset="4590">
|
||||
<caret line="324" column="43" selection-start-line="324" selection-start-column="43" selection-end-line="324" selection-end-column="43" />
|
||||
<folding>
|
||||
<element signature="e#24#781#1" expanded="false" />
|
||||
<element signature="e#2250#2547#0" expanded="false" />
|
||||
<element signature="e#2584#7017#0" expanded="false" />
|
||||
<element signature="e#7056#19021#0" expanded="false" />
|
||||
<element signature="e#19062#19828#0" expanded="false" />
|
||||
<element signature="e#25916#29025#0" expanded="false" />
|
||||
<element signature="e#29066#30293#0" expanded="false" />
|
||||
<element signature="e#30394#34748#0" expanded="false" />
|
||||
<element signature="e#34796#36860#0" expanded="false" />
|
||||
<element signature="e#36902#37890#0" expanded="false" />
|
||||
<element signature="e#37940#42554#0" expanded="false" />
|
||||
<element signature="e#42619#48972#0" expanded="false" />
|
||||
<element signature="e#49020#49755#0" expanded="false" />
|
||||
<element signature="e#49819#51129#0" expanded="false" />
|
||||
<element signature="e#51178#53137#0" expanded="false" />
|
||||
<element signature="e#53294#54546#0" expanded="false" />
|
||||
<element signature="e#54602#55019#0" expanded="false" />
|
||||
<element signature="e#55061#55170#0" expanded="false" />
|
||||
<element signature="e#55213#55333#0" expanded="false" />
|
||||
<element signature="e#55383#55534#0" expanded="false" />
|
||||
<element signature="e#55587#62547#0" expanded="false" />
|
||||
<element signature="e#62596#62635#0" expanded="false" />
|
||||
<element signature="e#62684#63474#0" expanded="false" />
|
||||
<element signature="e#63524#66451#0" expanded="false" />
|
||||
<element signature="e#66496#67245#0" expanded="false" />
|
||||
<element signature="e#67293#68789#0" expanded="false" />
|
||||
<element signature="e#68834#69707#0" expanded="false" />
|
||||
<element signature="e#69755#75611#0" expanded="false" />
|
||||
<element signature="e#75659#77443#0" expanded="false" />
|
||||
<element signature="e#77493#77589#0" expanded="false" />
|
||||
<element signature="e#77652#78179#0" expanded="false" />
|
||||
<element signature="e#78250#82263#0" expanded="false" />
|
||||
<element signature="e#82307#82349#0" expanded="false" />
|
||||
<element signature="e#82403#85599#0" expanded="false" />
|
||||
<element signature="e#87592#88212#0" expanded="false" />
|
||||
<element signature="e#88255#89036#0" expanded="false" />
|
||||
<element signature="e#89072#89861#0" expanded="false" />
|
||||
<element signature="e#89903#89998#0" expanded="false" />
|
||||
<element signature="e#90048#90196#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
@ -46,55 +90,18 @@
|
|||
<file leaf-file-name="Content.py" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/Content.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="952" max-vertical-offset="4216">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="799" max-vertical-offset="4063">
|
||||
<caret line="56" column="20" selection-start-line="56" selection-start-column="20" selection-end-line="56" selection-end-column="34" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="Libtorrent.py" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/Libtorrent.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.4187192" vertical-offset="816" max-vertical-offset="1785">
|
||||
<caret line="282" column="36" selection-start-line="282" selection-start-column="36" selection-end-line="282" selection-end-column="36" />
|
||||
<folding>
|
||||
<element signature="e#24#785#1" expanded="false" />
|
||||
<element signature="e#1478#2926#0" expanded="false" />
|
||||
<element signature="e#2975#5674#0" expanded="false" />
|
||||
<element signature="e#5713#6697#0" expanded="false" />
|
||||
<element signature="e#6746#7748#0" expanded="false" />
|
||||
<element signature="e#7787#7919#0" expanded="false" />
|
||||
<element signature="e#7960#8094#0" expanded="false" />
|
||||
<element signature="e#8128#8250#0" expanded="false" />
|
||||
<element signature="e#8284#8406#0" expanded="false" />
|
||||
<element signature="e#8456#8503#0" expanded="false" />
|
||||
<element signature="e#8553#8653#0" expanded="false" />
|
||||
<element signature="e#8693#9007#0" expanded="false" />
|
||||
<element signature="e#9053#9221#0" expanded="false" />
|
||||
<element signature="e#9277#9332#0" expanded="false" />
|
||||
<element signature="e#9390#9447#0" expanded="false" />
|
||||
<element signature="e#9484#9663#0" expanded="false" />
|
||||
<element signature="e#9715#10664#0" expanded="false" />
|
||||
<element signature="e#11703#12197#0" expanded="false" />
|
||||
<element signature="e#12235#12837#0" expanded="false" />
|
||||
<element signature="e#12874#12976#0" expanded="false" />
|
||||
<element signature="e#13055#14201#0" expanded="false" />
|
||||
<element signature="e#14250#15954#0" expanded="false" />
|
||||
<element signature="e#15990#16407#0" expanded="false" />
|
||||
<element signature="e#16444#16815#0" expanded="false" />
|
||||
<element signature="e#16861#18101#0" expanded="false" />
|
||||
<element signature="e#18136#18279#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="Downloader.py" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/Downloader.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="1598" max-vertical-offset="2329">
|
||||
<caret line="94" column="33" selection-start-line="94" selection-start-column="33" selection-end-line="94" selection-end-column="33" />
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="1394" max-vertical-offset="2278">
|
||||
<caret line="97" column="33" selection-start-line="97" selection-start-column="33" selection-end-line="97" selection-end-column="33" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
|
@ -110,25 +117,46 @@
|
|||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</split-first>
|
||||
<split-second>
|
||||
<leaf>
|
||||
<file leaf-file-name="Localization.py" pinned="false" current="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/Localization.py">
|
||||
<file leaf-file-name="Libtorrent.py" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/Libtorrent.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.72085387" vertical-offset="3063" max-vertical-offset="3842">
|
||||
<caret line="206" column="36" selection-start-line="206" selection-start-column="36" selection-end-line="206" selection-end-column="36" />
|
||||
<folding />
|
||||
<state vertical-scroll-proportion="-3.25" vertical-offset="2391" max-vertical-offset="4097">
|
||||
<caret line="250" column="39" selection-start-line="250" selection-start-column="39" selection-end-line="250" selection-end-column="39" />
|
||||
<folding>
|
||||
<element signature="e#24#785#1" expanded="false" />
|
||||
<element signature="e#1478#2926#0" expanded="false" />
|
||||
<element signature="e#7820#7952#0" expanded="false" />
|
||||
<element signature="e#7993#8127#0" expanded="false" />
|
||||
<element signature="e#8161#8283#0" expanded="false" />
|
||||
<element signature="e#8317#8439#0" expanded="false" />
|
||||
<element signature="e#8489#8536#0" expanded="false" />
|
||||
<element signature="e#8586#8686#0" expanded="false" />
|
||||
<element signature="e#8726#9040#0" expanded="false" />
|
||||
<element signature="e#9086#9254#0" expanded="false" />
|
||||
<element signature="e#9310#9365#0" expanded="false" />
|
||||
<element signature="e#9423#9480#0" expanded="false" />
|
||||
<element signature="e#9517#9696#0" expanded="false" />
|
||||
<element signature="e#11951#12445#0" expanded="false" />
|
||||
<element signature="e#13122#13224#0" expanded="false" />
|
||||
<element signature="e#13303#14449#0" expanded="false" />
|
||||
<element signature="e#14498#16202#0" expanded="false" />
|
||||
<element signature="e#16238#16655#0" expanded="false" />
|
||||
<element signature="e#17109#18349#0" expanded="false" />
|
||||
<element signature="e#18384#18527#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="KickAssSo.py" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/resources/contenters/KickAssSo.py">
|
||||
</leaf>
|
||||
</split-first>
|
||||
<split-second>
|
||||
<leaf>
|
||||
<file leaf-file-name="Localization.py" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/Localization.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="1105" max-vertical-offset="1734">
|
||||
<caret line="65" column="24" selection-start-line="65" selection-start-column="24" selection-end-line="65" selection-end-column="24" />
|
||||
<state vertical-scroll-proportion="-13.464286" vertical-offset="3176" max-vertical-offset="3893">
|
||||
<caret line="209" column="39" selection-start-line="209" selection-start-column="39" selection-end-line="209" selection-end-column="39" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
|
@ -154,11 +182,11 @@
|
|||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="functions.py" pinned="false" current="false" current-in-tab="false">
|
||||
<file leaf-file-name="functions.py" pinned="false" current="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/functions.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="25279" max-vertical-offset="26435">
|
||||
<caret line="1487" column="21" selection-start-line="1487" selection-start-column="8" selection-end-line="1487" selection-end-column="21" />
|
||||
<state vertical-scroll-proportion="0.39674798" vertical-offset="23726" max-vertical-offset="26163">
|
||||
<caret line="1427" column="30" selection-start-line="1427" selection-start-column="30" selection-end-line="1427" selection-end-column="30" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
|
@ -188,17 +216,17 @@
|
|||
<option value="$PROJECT_DIR$/README.txt" />
|
||||
<option value="$PROJECT_DIR$/resources/contenters/KinoPoisk.py" />
|
||||
<option value="$PROJECT_DIR$/controlcenter.py" />
|
||||
<option value="$PROJECT_DIR$/Downloader.py" />
|
||||
<option value="$PROJECT_DIR$/resources/searchers/NNMClubRu.py" />
|
||||
<option value="$PROJECT_DIR$/Content.py" />
|
||||
<option value="$PROJECT_DIR$/cal.py" />
|
||||
<option value="$PROJECT_DIR$/resources/contenters/KickAssSo.py" />
|
||||
<option value="$PROJECT_DIR$/changelog.txt" />
|
||||
<option value="$PROJECT_DIR$/addon.xml" />
|
||||
<option value="$PROJECT_DIR$/functions.py" />
|
||||
<option value="$PROJECT_DIR$/Localization.py" />
|
||||
<option value="$PROJECT_DIR$/Core.py" />
|
||||
<option value="$PROJECT_DIR$/Libtorrent.py" />
|
||||
<option value="$PROJECT_DIR$/Downloader.py" />
|
||||
<option value="$PROJECT_DIR$/functions.py" />
|
||||
<option value="$PROJECT_DIR$/Core.py" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
|
@ -484,7 +512,11 @@
|
|||
<created>1421159093940</created>
|
||||
<updated>1421159093940</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="11" />
|
||||
<task id="LOCAL-00011" summary="download by libtorrent with pause">
|
||||
<created>1421159105711</created>
|
||||
<updated>1421159105711</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="12" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TodoView" selected-index="0">
|
||||
|
@ -512,7 +544,7 @@
|
|||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.2769744" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.27030033" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3288889" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32925472" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
|
@ -552,11 +584,12 @@
|
|||
<MESSAGE value="return russian trackers" />
|
||||
<MESSAGE value="moveout some minor functions from Core" />
|
||||
<MESSAGE value="download by libtorrent" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="download by libtorrent" />
|
||||
<MESSAGE value="download by libtorrent with pause" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="download by libtorrent with pause" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager>
|
||||
<option name="time" value="2" />
|
||||
<option name="time" value="3" />
|
||||
</breakpoint-manager>
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
|
@ -633,7 +666,47 @@
|
|||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="27387">
|
||||
<caret line="1071" column="32" selection-start-line="1071" selection-start-column="32" selection-end-line="1071" selection-end-column="32" />
|
||||
<folding />
|
||||
<folding>
|
||||
<element signature="e#24#781#1" expanded="false" />
|
||||
<element signature="e#2250#2547#0" expanded="false" />
|
||||
<element signature="e#2584#7017#0" expanded="false" />
|
||||
<element signature="e#7056#19021#0" expanded="false" />
|
||||
<element signature="e#19062#19828#0" expanded="false" />
|
||||
<element signature="e#25916#29025#0" expanded="false" />
|
||||
<element signature="e#29066#30293#0" expanded="false" />
|
||||
<element signature="e#30394#34748#0" expanded="false" />
|
||||
<element signature="e#34796#36860#0" expanded="false" />
|
||||
<element signature="e#36902#37890#0" expanded="false" />
|
||||
<element signature="e#37940#42554#0" expanded="false" />
|
||||
<element signature="e#42619#48972#0" expanded="false" />
|
||||
<element signature="e#49020#49755#0" expanded="false" />
|
||||
<element signature="e#49819#51129#0" expanded="false" />
|
||||
<element signature="e#51178#53137#0" expanded="false" />
|
||||
<element signature="e#53294#54546#0" expanded="false" />
|
||||
<element signature="e#54602#55019#0" expanded="false" />
|
||||
<element signature="e#55061#55170#0" expanded="false" />
|
||||
<element signature="e#55213#55333#0" expanded="false" />
|
||||
<element signature="e#55383#55534#0" expanded="false" />
|
||||
<element signature="e#55587#62547#0" expanded="false" />
|
||||
<element signature="e#62596#62635#0" expanded="false" />
|
||||
<element signature="e#62684#63474#0" expanded="false" />
|
||||
<element signature="e#63524#66451#0" expanded="false" />
|
||||
<element signature="e#66496#67245#0" expanded="false" />
|
||||
<element signature="e#67293#68789#0" expanded="false" />
|
||||
<element signature="e#68834#69707#0" expanded="false" />
|
||||
<element signature="e#69755#75611#0" expanded="false" />
|
||||
<element signature="e#75659#77443#0" expanded="false" />
|
||||
<element signature="e#77493#77589#0" expanded="false" />
|
||||
<element signature="e#77652#78179#0" expanded="false" />
|
||||
<element signature="e#78250#82263#0" expanded="false" />
|
||||
<element signature="e#82307#82349#0" expanded="false" />
|
||||
<element signature="e#82403#85599#0" expanded="false" />
|
||||
<element signature="e#87592#88212#0" expanded="false" />
|
||||
<element signature="e#88255#89036#0" expanded="false" />
|
||||
<element signature="e#89072#89861#0" expanded="false" />
|
||||
<element signature="e#89903#89998#0" expanded="false" />
|
||||
<element signature="e#90048#90196#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
@ -680,7 +753,47 @@
|
|||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="27387">
|
||||
<caret line="1071" column="32" selection-start-line="1071" selection-start-column="32" selection-end-line="1071" selection-end-column="32" />
|
||||
<folding />
|
||||
<folding>
|
||||
<element signature="e#24#781#1" expanded="false" />
|
||||
<element signature="e#2250#2547#0" expanded="false" />
|
||||
<element signature="e#2584#7017#0" expanded="false" />
|
||||
<element signature="e#7056#19021#0" expanded="false" />
|
||||
<element signature="e#19062#19828#0" expanded="false" />
|
||||
<element signature="e#25916#29025#0" expanded="false" />
|
||||
<element signature="e#29066#30293#0" expanded="false" />
|
||||
<element signature="e#30394#34748#0" expanded="false" />
|
||||
<element signature="e#34796#36860#0" expanded="false" />
|
||||
<element signature="e#36902#37890#0" expanded="false" />
|
||||
<element signature="e#37940#42554#0" expanded="false" />
|
||||
<element signature="e#42619#48972#0" expanded="false" />
|
||||
<element signature="e#49020#49755#0" expanded="false" />
|
||||
<element signature="e#49819#51129#0" expanded="false" />
|
||||
<element signature="e#51178#53137#0" expanded="false" />
|
||||
<element signature="e#53294#54546#0" expanded="false" />
|
||||
<element signature="e#54602#55019#0" expanded="false" />
|
||||
<element signature="e#55061#55170#0" expanded="false" />
|
||||
<element signature="e#55213#55333#0" expanded="false" />
|
||||
<element signature="e#55383#55534#0" expanded="false" />
|
||||
<element signature="e#55587#62547#0" expanded="false" />
|
||||
<element signature="e#62596#62635#0" expanded="false" />
|
||||
<element signature="e#62684#63474#0" expanded="false" />
|
||||
<element signature="e#63524#66451#0" expanded="false" />
|
||||
<element signature="e#66496#67245#0" expanded="false" />
|
||||
<element signature="e#67293#68789#0" expanded="false" />
|
||||
<element signature="e#68834#69707#0" expanded="false" />
|
||||
<element signature="e#69755#75611#0" expanded="false" />
|
||||
<element signature="e#75659#77443#0" expanded="false" />
|
||||
<element signature="e#77493#77589#0" expanded="false" />
|
||||
<element signature="e#77652#78179#0" expanded="false" />
|
||||
<element signature="e#78250#82263#0" expanded="false" />
|
||||
<element signature="e#82307#82349#0" expanded="false" />
|
||||
<element signature="e#82403#85599#0" expanded="false" />
|
||||
<element signature="e#87592#88212#0" expanded="false" />
|
||||
<element signature="e#88255#89036#0" expanded="false" />
|
||||
<element signature="e#89072#89861#0" expanded="false" />
|
||||
<element signature="e#89903#89998#0" expanded="false" />
|
||||
<element signature="e#90048#90196#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
@ -727,7 +840,47 @@
|
|||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="25024" max-vertical-offset="26979">
|
||||
<caret line="1472" column="26" selection-start-line="1472" selection-start-column="26" selection-end-line="1472" selection-end-column="26" />
|
||||
<folding />
|
||||
<folding>
|
||||
<element signature="e#24#781#1" expanded="false" />
|
||||
<element signature="e#2250#2547#0" expanded="false" />
|
||||
<element signature="e#2584#7017#0" expanded="false" />
|
||||
<element signature="e#7056#19021#0" expanded="false" />
|
||||
<element signature="e#19062#19828#0" expanded="false" />
|
||||
<element signature="e#25916#29025#0" expanded="false" />
|
||||
<element signature="e#29066#30293#0" expanded="false" />
|
||||
<element signature="e#30394#34748#0" expanded="false" />
|
||||
<element signature="e#34796#36860#0" expanded="false" />
|
||||
<element signature="e#36902#37890#0" expanded="false" />
|
||||
<element signature="e#37940#42554#0" expanded="false" />
|
||||
<element signature="e#42619#48972#0" expanded="false" />
|
||||
<element signature="e#49020#49755#0" expanded="false" />
|
||||
<element signature="e#49819#51129#0" expanded="false" />
|
||||
<element signature="e#51178#53137#0" expanded="false" />
|
||||
<element signature="e#53294#54546#0" expanded="false" />
|
||||
<element signature="e#54602#55019#0" expanded="false" />
|
||||
<element signature="e#55061#55170#0" expanded="false" />
|
||||
<element signature="e#55213#55333#0" expanded="false" />
|
||||
<element signature="e#55383#55534#0" expanded="false" />
|
||||
<element signature="e#55587#62547#0" expanded="false" />
|
||||
<element signature="e#62596#62635#0" expanded="false" />
|
||||
<element signature="e#62684#63474#0" expanded="false" />
|
||||
<element signature="e#63524#66451#0" expanded="false" />
|
||||
<element signature="e#66496#67245#0" expanded="false" />
|
||||
<element signature="e#67293#68789#0" expanded="false" />
|
||||
<element signature="e#68834#69707#0" expanded="false" />
|
||||
<element signature="e#69755#75611#0" expanded="false" />
|
||||
<element signature="e#75659#77443#0" expanded="false" />
|
||||
<element signature="e#77493#77589#0" expanded="false" />
|
||||
<element signature="e#77652#78179#0" expanded="false" />
|
||||
<element signature="e#78250#82263#0" expanded="false" />
|
||||
<element signature="e#82307#82349#0" expanded="false" />
|
||||
<element signature="e#82403#85599#0" expanded="false" />
|
||||
<element signature="e#87592#88212#0" expanded="false" />
|
||||
<element signature="e#88255#89036#0" expanded="false" />
|
||||
<element signature="e#89072#89861#0" expanded="false" />
|
||||
<element signature="e#89903#89998#0" expanded="false" />
|
||||
<element signature="e#90048#90196#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
@ -869,14 +1022,6 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Content.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="599" max-vertical-offset="4063">
|
||||
<caret line="56" column="20" selection-start-line="56" selection-start-column="20" selection-end-line="56" selection-end-column="34" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/addon.xml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.26064736" vertical-offset="0" max-vertical-offset="587">
|
||||
|
@ -892,14 +1037,6 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Downloader.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="1598" max-vertical-offset="2329">
|
||||
<caret line="94" column="33" selection-start-line="94" selection-start-column="33" selection-end-line="94" selection-end-column="33" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/contenters/KickAssSo.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="836" max-vertical-offset="1717">
|
||||
|
@ -916,61 +1053,111 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/functions.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="3334" max-vertical-offset="4760">
|
||||
<caret line="1487" column="21" selection-start-line="1487" selection-start-column="8" selection-end-line="1487" selection-end-column="21" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Core.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="1530" max-vertical-offset="5610">
|
||||
<caret line="345" column="25" selection-start-line="345" selection-start-column="25" selection-end-line="345" selection-end-column="25" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Localization.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.72085387" vertical-offset="3063" max-vertical-offset="3842">
|
||||
<caret line="206" column="36" selection-start-line="206" selection-start-column="36" selection-end-line="206" selection-end-column="36" />
|
||||
<state vertical-scroll-proportion="-13.464286" vertical-offset="3176" max-vertical-offset="3893">
|
||||
<caret line="209" column="39" selection-start-line="209" selection-start-column="39" selection-end-line="209" selection-end-column="39" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Content.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="599" max-vertical-offset="4063">
|
||||
<caret line="56" column="20" selection-start-line="56" selection-start-column="20" selection-end-line="56" selection-end-column="34" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Libtorrent.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.4187192" vertical-offset="816" max-vertical-offset="1785">
|
||||
<caret line="282" column="36" selection-start-line="282" selection-start-column="36" selection-end-line="282" selection-end-column="36" />
|
||||
<state vertical-scroll-proportion="-3.25" vertical-offset="2391" max-vertical-offset="4097">
|
||||
<caret line="250" column="39" selection-start-line="250" selection-start-column="39" selection-end-line="250" selection-end-column="39" />
|
||||
<folding>
|
||||
<element signature="e#24#785#1" expanded="false" />
|
||||
<element signature="e#1478#2926#0" expanded="false" />
|
||||
<element signature="e#2975#5674#0" expanded="false" />
|
||||
<element signature="e#5713#6697#0" expanded="false" />
|
||||
<element signature="e#6746#7748#0" expanded="false" />
|
||||
<element signature="e#7787#7919#0" expanded="false" />
|
||||
<element signature="e#7960#8094#0" expanded="false" />
|
||||
<element signature="e#8128#8250#0" expanded="false" />
|
||||
<element signature="e#8284#8406#0" expanded="false" />
|
||||
<element signature="e#8456#8503#0" expanded="false" />
|
||||
<element signature="e#8553#8653#0" expanded="false" />
|
||||
<element signature="e#8693#9007#0" expanded="false" />
|
||||
<element signature="e#9053#9221#0" expanded="false" />
|
||||
<element signature="e#9277#9332#0" expanded="false" />
|
||||
<element signature="e#9390#9447#0" expanded="false" />
|
||||
<element signature="e#9484#9663#0" expanded="false" />
|
||||
<element signature="e#9715#10664#0" expanded="false" />
|
||||
<element signature="e#11703#12197#0" expanded="false" />
|
||||
<element signature="e#12235#12837#0" expanded="false" />
|
||||
<element signature="e#12874#12976#0" expanded="false" />
|
||||
<element signature="e#13055#14201#0" expanded="false" />
|
||||
<element signature="e#14250#15954#0" expanded="false" />
|
||||
<element signature="e#15990#16407#0" expanded="false" />
|
||||
<element signature="e#16444#16815#0" expanded="false" />
|
||||
<element signature="e#16861#18101#0" expanded="false" />
|
||||
<element signature="e#18136#18279#0" expanded="false" />
|
||||
<element signature="e#7820#7952#0" expanded="false" />
|
||||
<element signature="e#7993#8127#0" expanded="false" />
|
||||
<element signature="e#8161#8283#0" expanded="false" />
|
||||
<element signature="e#8317#8439#0" expanded="false" />
|
||||
<element signature="e#8489#8536#0" expanded="false" />
|
||||
<element signature="e#8586#8686#0" expanded="false" />
|
||||
<element signature="e#8726#9040#0" expanded="false" />
|
||||
<element signature="e#9086#9254#0" expanded="false" />
|
||||
<element signature="e#9310#9365#0" expanded="false" />
|
||||
<element signature="e#9423#9480#0" expanded="false" />
|
||||
<element signature="e#9517#9696#0" expanded="false" />
|
||||
<element signature="e#11951#12445#0" expanded="false" />
|
||||
<element signature="e#13122#13224#0" expanded="false" />
|
||||
<element signature="e#13303#14449#0" expanded="false" />
|
||||
<element signature="e#14498#16202#0" expanded="false" />
|
||||
<element signature="e#16238#16655#0" expanded="false" />
|
||||
<element signature="e#17109#18349#0" expanded="false" />
|
||||
<element signature="e#18384#18527#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Downloader.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="1394" max-vertical-offset="2278">
|
||||
<caret line="97" column="33" selection-start-line="97" selection-start-column="33" selection-end-line="97" selection-end-column="33" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/functions.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.39674798" vertical-offset="23726" max-vertical-offset="26163">
|
||||
<caret line="1427" column="30" selection-start-line="1427" selection-start-column="30" selection-end-line="1427" selection-end-column="30" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Core.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.5247019" vertical-offset="1222" max-vertical-offset="4590">
|
||||
<caret line="324" column="43" selection-start-line="324" selection-start-column="43" selection-end-line="324" selection-end-column="43" />
|
||||
<folding>
|
||||
<element signature="e#24#781#1" expanded="false" />
|
||||
<element signature="e#2250#2547#0" expanded="false" />
|
||||
<element signature="e#2584#7017#0" expanded="false" />
|
||||
<element signature="e#7056#19021#0" expanded="false" />
|
||||
<element signature="e#19062#19828#0" expanded="false" />
|
||||
<element signature="e#25916#29025#0" expanded="false" />
|
||||
<element signature="e#29066#30293#0" expanded="false" />
|
||||
<element signature="e#30394#34748#0" expanded="false" />
|
||||
<element signature="e#34796#36860#0" expanded="false" />
|
||||
<element signature="e#36902#37890#0" expanded="false" />
|
||||
<element signature="e#37940#42554#0" expanded="false" />
|
||||
<element signature="e#42619#48972#0" expanded="false" />
|
||||
<element signature="e#49020#49755#0" expanded="false" />
|
||||
<element signature="e#49819#51129#0" expanded="false" />
|
||||
<element signature="e#51178#53137#0" expanded="false" />
|
||||
<element signature="e#53294#54546#0" expanded="false" />
|
||||
<element signature="e#54602#55019#0" expanded="false" />
|
||||
<element signature="e#55061#55170#0" expanded="false" />
|
||||
<element signature="e#55213#55333#0" expanded="false" />
|
||||
<element signature="e#55383#55534#0" expanded="false" />
|
||||
<element signature="e#55587#62547#0" expanded="false" />
|
||||
<element signature="e#62596#62635#0" expanded="false" />
|
||||
<element signature="e#62684#63474#0" expanded="false" />
|
||||
<element signature="e#63524#66451#0" expanded="false" />
|
||||
<element signature="e#66496#67245#0" expanded="false" />
|
||||
<element signature="e#67293#68789#0" expanded="false" />
|
||||
<element signature="e#68834#69707#0" expanded="false" />
|
||||
<element signature="e#69755#75611#0" expanded="false" />
|
||||
<element signature="e#75659#77443#0" expanded="false" />
|
||||
<element signature="e#77493#77589#0" expanded="false" />
|
||||
<element signature="e#77652#78179#0" expanded="false" />
|
||||
<element signature="e#78250#82263#0" expanded="false" />
|
||||
<element signature="e#82307#82349#0" expanded="false" />
|
||||
<element signature="e#82403#85599#0" expanded="false" />
|
||||
<element signature="e#87592#88212#0" expanded="false" />
|
||||
<element signature="e#88255#89036#0" expanded="false" />
|
||||
<element signature="e#89072#89861#0" expanded="false" />
|
||||
<element signature="e#89903#89998#0" expanded="false" />
|
||||
<element signature="e#90048#90196#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
|
|
77
Core.py
77
Core.py
|
@ -316,6 +316,21 @@ class Core:
|
|||
xbmc.executebuiltin('Container.Refresh')
|
||||
showMessage(self.localize('Download Status'), self.localize('Paused!'))
|
||||
|
||||
if action2 == 'stop':
|
||||
db.update_status(addtime, 'stopped')
|
||||
xbmc.executebuiltin('Container.Refresh')
|
||||
showMessage(self.localize('Download Status'), self.localize('Stopped!'))
|
||||
|
||||
if action2 == 'start':
|
||||
start=db.get_byaddtime(addtime)
|
||||
link, ind=start[6], start[7]
|
||||
storage=get('storage') if get('storage') else ''
|
||||
start_exec='XBMC.RunPlugin(%s)' % ('%s?action=%s&url=%s&ind=%s&storage=%s') % (
|
||||
sys.argv[0], 'downloadLibtorrent', urllib.quote_plus(link.encode('utf-8')), str(ind), storage)
|
||||
xbmc.executebuiltin(start_exec)
|
||||
xbmc.executebuiltin('Container.Refresh')
|
||||
showMessage(self.localize('Download Status'), self.localize('Started!'))
|
||||
|
||||
if action2 == 'unpause':
|
||||
db.update_status(addtime, 'downloading')
|
||||
xbmc.executebuiltin('Container.Refresh')
|
||||
|
@ -328,33 +343,56 @@ class Core:
|
|||
if not action2:
|
||||
items = db.get_all()
|
||||
if items:
|
||||
ListString = 'XBMC.RunPlugin(%s)' % (sys.argv[0] + '?action=DownloadStatus&action2=%s&%s=%s')
|
||||
for addtime, title, path, type, info, status in items:
|
||||
for addtime, title, path, type, info, status, torrent, ind, lastupdate, storage in items:
|
||||
ListString = 'XBMC.RunPlugin('+sys.argv[0] + '?action=DownloadStatus&storage='+urllib.quote_plus(storage.encode('utf-8'))+'&addtime='+str(addtime)+'&action2='
|
||||
jsoninfo=json.loads(urllib.unquote_plus(info))
|
||||
|
||||
if status!='stopped' and int(lastupdate)<int(time.time())-10:
|
||||
status='stopped'
|
||||
db.update_status(addtime, status)
|
||||
|
||||
progress=int(jsoninfo.get('progress'))
|
||||
if status=='pause': status_sign='[||]'
|
||||
else:status_sign='[>]'
|
||||
if status=='pause':
|
||||
status_sign='[||]'
|
||||
img=self.ROOT + '/icons/pause-icon.png'
|
||||
elif status=='stopped':
|
||||
status_sign='[X]'
|
||||
img=self.ROOT + '/icons/stop-icon.png'
|
||||
else:
|
||||
status_sign='[>]'
|
||||
if progress==100:
|
||||
img=self.ROOT + '/icons/upload-icon.png'
|
||||
else:
|
||||
img=self.ROOT + '/icons/download-icon.png'
|
||||
|
||||
title = '[%d%%]%s %s' % (progress, status_sign, title)
|
||||
if jsoninfo.get('seeds')!=None and jsoninfo.get('peers')!=None and \
|
||||
jsoninfo.get('download')!=None and jsoninfo.get('upload')!=None:
|
||||
d,u=int(jsoninfo['download']/ 1000000), int(jsoninfo['upload'] / 1000000)
|
||||
s,p=str(jsoninfo['seeds']),str(jsoninfo['peers'])
|
||||
title='%s [S/L %s/%s][D/U %s/%s (MB/s)]' %(title,s,p,d,u)
|
||||
if status!='pause':
|
||||
contextMenu=[((self.localize('Delete and Stop'), ListString % ('delete', 'addtime', str(addtime)))),
|
||||
((self.localize('Pause'), ListString % ('pause', 'addtime', str(addtime)))),]
|
||||
|
||||
if status=='pause':
|
||||
contextMenu=[(self.localize('Unpause'), ListString+'unpause)'),
|
||||
(self.localize('Delete and Stop'), ListString+'delete)'),]
|
||||
elif status=='stopped':
|
||||
contextMenu=[(self.localize('Start'), ListString+'start)'),
|
||||
(self.localize('Delete'), ListString+'delete)'),]
|
||||
else:
|
||||
contextMenu=[((self.localize('Delete and Stop'), ListString % ('delete', 'addtime', str(addtime)))),
|
||||
((self.localize('Unpause'), ListString % ('unpause', 'addtime', str(addtime)))),]
|
||||
contextMenu=[(self.localize('Pause'), ListString+'pause)'),
|
||||
(self.localize('Stop'), ListString+'stop)'),
|
||||
(self.localize('Delete and Stop'), ListString+'delete)'),]
|
||||
|
||||
if progress==100 or progress>30 and type=='file':
|
||||
link={'action2':'play', 'type':type, 'path':path.encode('utf-8')}
|
||||
self.drawItem('[B]%s[/B]' % title, 'DownloadStatus', link, image='', contextMenu=contextMenu, replaceMenu=False, isFolder=type=='folder')
|
||||
self.drawItem('[B]%s[/B]' % title, 'DownloadStatus', link, image=img, contextMenu=contextMenu, replaceMenu=False, isFolder=type=='folder')
|
||||
else:
|
||||
link={'action2':'notfinished'}
|
||||
self.drawItem(title, 'DownloadStatus', link, image='', contextMenu=contextMenu, replaceMenu=False)
|
||||
self.drawItem(title, 'DownloadStatus', link, image=img, contextMenu=contextMenu, replaceMenu=False)
|
||||
view_style('DownloadStatus')
|
||||
xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
|
||||
xbmc.sleep(30000)
|
||||
xbmc.executebuiltin('Container.Refresh')
|
||||
|
||||
def History(self, params={}):
|
||||
db = HistoryDB()
|
||||
|
@ -1019,13 +1057,18 @@ class Core:
|
|||
if not hash:
|
||||
for data in DownloadList:
|
||||
status = " "
|
||||
img=''
|
||||
if data['status'] in ('seed_pending', 'stopped'):
|
||||
status = TextBB(' [||] ', 'b')
|
||||
elif data['status'] in ('seeding', 'downloading'):
|
||||
status = TextBB(' [>] ', 'b')
|
||||
if data['status']=='seed_pending':img=self.ROOT + '/icons/pause-icon.png'
|
||||
elif data['status']=='stopped': img=self.ROOT + '/icons/stop-icon.png'
|
||||
elif data['status']=='seeding':img=self.ROOT + '/icons/upload-icon.png'
|
||||
elif data['status']=='downloading':img=self.ROOT + '/icons/download-icon.png'
|
||||
menu.append(
|
||||
{"title": '[' + str(data['progress']) + '%]' + status + data['name'] + ' [' + str(
|
||||
data['ratio']) + ']',
|
||||
data['ratio']) + ']', "image":img,
|
||||
"argv": {'hash': str(data['id'])}})
|
||||
elif not tdir:
|
||||
dllist = sorted(Download().listfiles(hash), key=lambda x: x[0])
|
||||
|
@ -1059,6 +1102,7 @@ class Core:
|
|||
for i in menu:
|
||||
app = i['argv']
|
||||
link = json.dumps(app)
|
||||
img = i['image']
|
||||
popup = []
|
||||
if not hash:
|
||||
actions = [('start', self.localize('Start')), ('stop', self.localize('Stop')),
|
||||
|
@ -1075,7 +1119,7 @@ class Core:
|
|||
app['action'] = a
|
||||
popup.append((self.localize(title), contextMenustring % urllib.quote_plus(json.dumps(app))))
|
||||
|
||||
self.drawItem(unicode(i['title']), 'uTorrentBrowser', link, isFolder=folder, contextMenu=popup,
|
||||
self.drawItem(unicode(i['title']), 'uTorrentBrowser', link, image=img, isFolder=folder, contextMenu=popup,
|
||||
replaceMenu=True)
|
||||
view_style('uTorrentBrowser')
|
||||
xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
|
||||
|
@ -1555,7 +1599,9 @@ class Core:
|
|||
|
||||
def downloadLibtorrent(self, params={}):
|
||||
get = params.get
|
||||
self.userStorage(params)
|
||||
storage=get('storage')
|
||||
if not storage: self.userStorage(params)
|
||||
else: self.userStorageDirectory=urllib.unquote_plus(storage).decode('utf-8')
|
||||
try:
|
||||
url = urllib.unquote_plus(get("url"))
|
||||
except:
|
||||
|
@ -1576,7 +1622,8 @@ class Core:
|
|||
url = searcherObject.getTorrentFile(classMatch.group(2))
|
||||
torrent = Downloader.Torrent(self.userStorageDirectory, torrentFilesDirectory=self.torrentFilesDirectory)
|
||||
torrent.initSession()
|
||||
self.__settings__.setSetting("lastTorrent", torrent.saveTorrent(url))
|
||||
url=torrent.saveTorrent(url)
|
||||
self.__settings__.setSetting("lastTorrent", url)
|
||||
if 0 < int(self.__settings__.getSetting("upload_limit")):
|
||||
torrent.setUploadLimit(int(self.__settings__.getSetting("upload_limit")) * 1000000 / 8) #MBits/second
|
||||
if 0 < int(self.__settings__.getSetting("download_limit")):
|
||||
|
|
|
@ -93,6 +93,7 @@ class Libtorrent:
|
|||
if re.match("^magnet\:.+$", torrentUrl):
|
||||
self.magnetLink = torrentUrl
|
||||
self.magnetToTorrent(torrentUrl)
|
||||
self.magnetLink=None
|
||||
return self.torrentFile
|
||||
else:
|
||||
if not xbmcvfs.exists(self.torrentFilesPath):
|
||||
|
@ -252,19 +253,24 @@ class Libtorrent:
|
|||
self.paused=False
|
||||
db=DownloadDB()
|
||||
ContentList=self.getContentList()
|
||||
if len(ContentList)==1 or contentId:
|
||||
if contentId!=None: contentId=int(contentId)
|
||||
if len(ContentList)==1 or contentId not in [None, -1]:
|
||||
if not contentId: contentId=0
|
||||
title=os.path.basename(ContentList[int(contentId)]['title'])
|
||||
path=os.path.join(self.storageDirectory, ContentList[int(contentId)]['title'])
|
||||
title=os.path.basename(ContentList[contentId]['title'])
|
||||
path=os.path.join(self.storageDirectory, ContentList[contentId]['title'])
|
||||
type='file'
|
||||
else:
|
||||
contentId=-1
|
||||
title=ContentList[0]['title'].split('\\')[0]
|
||||
path=os.path.join(self.storageDirectory, title)
|
||||
type='folder'
|
||||
|
||||
add=db.add(title, path, type, {'progress':0}, 'downloading')
|
||||
if add:
|
||||
if None!=contentId:
|
||||
add=db.add(title, path, type, {'progress':0}, 'downloading', self.torrentFile, contentId, self.storageDirectory)
|
||||
get=db.get(title)
|
||||
if add or get[5]=='stopped':
|
||||
if get[5]=='stopped':
|
||||
db.update_status(get[0], 'downloading')
|
||||
if contentId not in [None, -1]:
|
||||
self.continueSession(int(contentId), Offset=0, seeding=False)
|
||||
else:
|
||||
for i in range(self.torrentFileInfo.num_pieces()):
|
||||
|
@ -272,19 +278,17 @@ class Libtorrent:
|
|||
thread.start_new_thread(self.downloadLoop, (title,))
|
||||
|
||||
def downloadLoop(self, title):
|
||||
i=1
|
||||
db=DownloadDB()
|
||||
while db.get(title):
|
||||
xbmc.sleep(1000*i)
|
||||
status='downloading'
|
||||
while db.get(title) and status!='stopped':
|
||||
xbmc.sleep(1000)
|
||||
status=db.get_status(title)
|
||||
if not self.paused:
|
||||
if status=='pause':
|
||||
i=10
|
||||
self.paused=True
|
||||
self.session.pause()
|
||||
else:
|
||||
if status!='pause':
|
||||
i=1
|
||||
self.paused=False
|
||||
self.session.resume()
|
||||
s = self.torrentHandle.status()
|
||||
|
@ -294,11 +298,10 @@ class Libtorrent:
|
|||
info['peers']=s.num_peers
|
||||
info['seeds']=s.num_seeds
|
||||
iterator = int(s.progress * 100)
|
||||
if iterator==100 and status!='seeding':
|
||||
db.update_status(str(db.get(title)), 'seeding')
|
||||
info['progress']=iterator
|
||||
db.update(title, info)
|
||||
self.debug()
|
||||
self.session.remove_torrent(self.torrentHandle)
|
||||
|
||||
def initSession(self):
|
||||
try:
|
||||
|
|
|
@ -205,10 +205,13 @@ dictionary = {
|
|||
'Download has not finished yet':'Загрука не завершена',
|
||||
'Deleted and Stopped!':'Загрузка удалена и остановлена!',
|
||||
'Unpaused!':'Возобновлено!',
|
||||
'Paused!':'Остановлено!',
|
||||
'Paused!':'Приостановлено!',
|
||||
'Stopped!':'Остановлено!',
|
||||
'Started!':'Начинается загрузка!',
|
||||
'Delete and Stop':'Удалить и Остановить',
|
||||
'Unpause':'Возобновить',
|
||||
'Pause':'Пауза',
|
||||
'Delete':'Удалить',
|
||||
}
|
||||
}
|
||||
|
||||
|
|
59
functions.py
59
functions.py
|
@ -1423,52 +1423,43 @@ def delete_russian(ok=False, action='delete'):
|
|||
return False
|
||||
|
||||
class DownloadDB:
|
||||
def __init__(self, version=1.2):
|
||||
def __init__(self, version=1.41):
|
||||
self.name = 'download.db3'
|
||||
self.version = version
|
||||
|
||||
def get_all(self):
|
||||
self._connect()
|
||||
self.cur.execute('select addtime, title, path, type, jsoninfo, status from downloads order by addtime DESC')
|
||||
self.cur.execute('select addtime, title, path, type, jsoninfo, status, torrent, ind, lastupdate, storage from downloads order by addtime DESC')
|
||||
x = self.cur.fetchall()
|
||||
self._close()
|
||||
return x if x else None
|
||||
|
||||
def get(self, title):
|
||||
try:
|
||||
title = title.decode('utf-8')
|
||||
except:
|
||||
pass
|
||||
self._connect()
|
||||
self.cur.execute('select addtime from downloads where title="' + title + '"')
|
||||
self.cur.execute('select addtime, title, path, type, jsoninfo, status, torrent, ind, lastupdate, storage from downloads where title="' + decode(title) + '"')
|
||||
x = self.cur.fetchone()
|
||||
self._close()
|
||||
return x[0] if x else None
|
||||
return x if x else None
|
||||
|
||||
def get_byaddtime(self, addtime):
|
||||
self._connect()
|
||||
self.cur.execute('select addtime, title, path, type, jsoninfo, status, torrent, ind, lastupdate, storage from downloads where addtime="' + str(addtime) + '"')
|
||||
x = self.cur.fetchone()
|
||||
self._close()
|
||||
return x if x else None
|
||||
|
||||
def get_status(self, title):
|
||||
try:
|
||||
title = title.decode('utf-8')
|
||||
except:
|
||||
pass
|
||||
self._connect()
|
||||
self.cur.execute('select status from downloads where title="' + title + '"')
|
||||
self.cur.execute('select status from downloads where title="' + decode(title) + '"')
|
||||
x = self.cur.fetchone()
|
||||
self._close()
|
||||
return x[0] if x else None
|
||||
|
||||
def add(self, title, path, type, info, status):
|
||||
try:
|
||||
title = title.decode('utf-8')
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
path = path.decode('utf-8')
|
||||
except:
|
||||
pass
|
||||
def add(self, title, path, type, info, status, torrent, ind, storage):
|
||||
if not self.get(title):
|
||||
self._connect()
|
||||
self.cur.execute('insert into downloads(addtime, title, path, type, jsoninfo, status)'
|
||||
' values(?,?,?,?,?,?)', (int(time.time()), title, path, type, json.dumps(info), status))
|
||||
self.cur.execute('insert into downloads(addtime, title, path, type, jsoninfo, status, torrent, ind, lastupdate, storage)'
|
||||
' values(?,?,?,?,?,?,?,?,?,?)', (int(time.time()), decode(title), decode(path), type, json.dumps(info), status, decode(torrent), ind, int(time.time()), decode(storage)))
|
||||
self.db.commit()
|
||||
self._close()
|
||||
return True
|
||||
|
@ -1481,19 +1472,19 @@ class DownloadDB:
|
|||
except:
|
||||
pass
|
||||
self._connect()
|
||||
self.cur.execute('UPDATE downloads SET jsoninfo = "' + urllib.quote_plus(json.dumps(info)) + '" where title="' + title+'"')
|
||||
self.cur.execute('UPDATE downloads SET jsoninfo = "' + urllib.quote_plus(json.dumps(info)) + '", lastupdate='+str(int(time.time()))+' where title="' + title+'"')
|
||||
self.db.commit()
|
||||
self._close()
|
||||
|
||||
def update_status(self, addtime, status):
|
||||
self._connect()
|
||||
self.cur.execute('UPDATE downloads SET status = "' + status + '" where addtime="' + addtime+'"')
|
||||
self.cur.execute('UPDATE downloads SET status = "' + status + '" where addtime="' + str(addtime)+'"')
|
||||
self.db.commit()
|
||||
self._close()
|
||||
|
||||
def delete(self, addtime):
|
||||
self._connect()
|
||||
self.cur.execute('delete from downloads where addtime="' + addtime + '"')
|
||||
self.cur.execute('delete from downloads where addtime="' + str(addtime) + '"')
|
||||
self.db.commit()
|
||||
self._close()
|
||||
|
||||
|
@ -1539,7 +1530,7 @@ class DownloadDB:
|
|||
cur.execute('pragma auto_vacuum=1')
|
||||
cur.execute('create table db_ver(version real)')
|
||||
cur.execute(
|
||||
'create table downloads(addtime integer PRIMARY KEY, title varchar(32), path varchar(32), type varchar(32), jsoninfo varchar(32), status varchar(32))')
|
||||
'create table downloads(addtime integer PRIMARY KEY, title varchar(32), path varchar(32), type varchar(32), jsoninfo varchar(32), status varchar(32), torrent varchar(32), ind integer, lastupdate integer, storage varchar(32))')
|
||||
cur.execute('insert into db_ver(version) values(?)', (self.version, ))
|
||||
self.db.commit()
|
||||
cur.close()
|
||||
|
@ -1547,4 +1538,14 @@ class DownloadDB:
|
|||
|
||||
def _close(self):
|
||||
self.cur.close()
|
||||
self.db.close()
|
||||
self.db.close()
|
||||
|
||||
def decode(string, ret=None):
|
||||
try:
|
||||
string = string.decode('utf-8')
|
||||
return string
|
||||
except:
|
||||
if ret:
|
||||
return ret
|
||||
else:
|
||||
return string
|
Loading…
Reference in New Issue