download by libtorrent with start and stop

pull/1/head
DiMartinoXBMC 2015-01-13 20:06:34 +03:00
parent eff2c1c6f3
commit 5dd2c94fed
5 changed files with 429 additions and 188 deletions

View File

@ -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
View File

@ -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")):

View File

@ -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:

View File

@ -205,10 +205,13 @@ dictionary = {
'Download has not finished yet':'Загрука не завершена',
'Deleted and Stopped!':'Загрузка удалена и остановлена!',
'Unpaused!':'Возобновлено!',
'Paused!':'Остановлено!',
'Paused!':'Приостановлено!',
'Stopped!':'Остановлено!',
'Started!':'Начинается загрузка!',
'Delete and Stop':'Удалить и Остановить',
'Unpause':'Возобновить',
'Pause':'Пауза',
'Delete':'Удалить',
}
}

View File

@ -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