mirror of
https://github.com/chibicitiberiu/ytsm.git
synced 2024-02-24 05:43:31 +00:00
Fixed synchronize statistics issues. Added current state to readme.
This commit is contained in:
parent
c07d1b61f0
commit
97e7e792f8
@ -4,7 +4,7 @@
|
|||||||
<list default="true" id="245751b6-c863-4572-8723-8499964fe105" name="Default Changelist" comment="">
|
<list default="true" id="245751b6-c863-4572-8723-8499964fe105" name="Default Changelist" comment="">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/YtManagerApp/management/jobs/synchronize.py" beforeDir="false" afterPath="$PROJECT_DIR$/YtManagerApp/management/jobs/synchronize.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/YtManagerApp/management/jobs/synchronize.py" beforeDir="false" afterPath="$PROJECT_DIR$/YtManagerApp/management/jobs/synchronize.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/external/pytaw/pytaw/youtube.py" beforeDir="false" afterPath="$PROJECT_DIR$/external/pytaw/pytaw/youtube.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/readme.md" beforeDir="false" afterPath="$PROJECT_DIR$/readme.md" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
@ -151,7 +151,7 @@
|
|||||||
<entry key="gitignore" value="1" />
|
<entry key="gitignore" value="1" />
|
||||||
<entry key="html" value="4" />
|
<entry key="html" value="4" />
|
||||||
<entry key="ini" value="5" />
|
<entry key="ini" value="5" />
|
||||||
<entry key="md" value="6" />
|
<entry key="md" value="7" />
|
||||||
<entry key="py" value="49" />
|
<entry key="py" value="49" />
|
||||||
<entry key="scss" value="2" />
|
<entry key="scss" value="2" />
|
||||||
<entry key="ytmanagerapp_channel" value="1" />
|
<entry key="ytmanagerapp_channel" value="1" />
|
||||||
@ -164,7 +164,7 @@
|
|||||||
<entry key="Database Element" value="7" />
|
<entry key="Database Element" value="7" />
|
||||||
<entry key="HTML" value="4" />
|
<entry key="HTML" value="4" />
|
||||||
<entry key="Ini" value="5" />
|
<entry key="Ini" value="5" />
|
||||||
<entry key="Markdown" value="6" />
|
<entry key="Markdown" value="7" />
|
||||||
<entry key="PLAIN_TEXT" value="1" />
|
<entry key="PLAIN_TEXT" value="1" />
|
||||||
<entry key="Python" value="49" />
|
<entry key="Python" value="49" />
|
||||||
<entry key="SCSS" value="2" />
|
<entry key="SCSS" value="2" />
|
||||||
@ -175,8 +175,8 @@
|
|||||||
<entry key="Django Console" value="265" />
|
<entry key="Django Console" value="265" />
|
||||||
<entry key="html" value="12" />
|
<entry key="html" value="12" />
|
||||||
<entry key="ini" value="2" />
|
<entry key="ini" value="2" />
|
||||||
<entry key="md" value="3860" />
|
<entry key="md" value="4844" />
|
||||||
<entry key="py" value="3255" />
|
<entry key="py" value="3277" />
|
||||||
<entry key="py@youtube-channel-manager" value="41" />
|
<entry key="py@youtube-channel-manager" value="41" />
|
||||||
</counts>
|
</counts>
|
||||||
</usages-collector>
|
</usages-collector>
|
||||||
@ -186,9 +186,9 @@
|
|||||||
<entry key="CommandLine" value="23" />
|
<entry key="CommandLine" value="23" />
|
||||||
<entry key="HTML" value="12" />
|
<entry key="HTML" value="12" />
|
||||||
<entry key="Ini" value="2" />
|
<entry key="Ini" value="2" />
|
||||||
<entry key="Markdown" value="3856" />
|
<entry key="Markdown" value="4840" />
|
||||||
<entry key="PLAIN_TEXT" value="18" />
|
<entry key="PLAIN_TEXT" value="18" />
|
||||||
<entry key="Python" value="3520" />
|
<entry key="Python" value="3542" />
|
||||||
</counts>
|
</counts>
|
||||||
</usages-collector>
|
</usages-collector>
|
||||||
</session>
|
</session>
|
||||||
@ -198,8 +198,8 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/YtManagerApp/management/jobs/synchronize.py">
|
<entry file="file://$PROJECT_DIR$/YtManagerApp/management/jobs/synchronize.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="375">
|
<state relative-caret-position="525">
|
||||||
<caret line="31" column="33" selection-start-line="31" selection-start-column="33" selection-end-line="31" selection-end-column="33" />
|
<caret line="41" selection-start-line="41" selection-end-line="41" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#12#0" expanded="true" />
|
<element signature="e#0#12#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -208,10 +208,22 @@
|
|||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file pinned="false" current-in-tab="true">
|
<file pinned="false" current-in-tab="true">
|
||||||
|
<entry file="file://$PROJECT_DIR$/readme.md">
|
||||||
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
|
<state split_layout="SPLIT">
|
||||||
|
<first_editor relative-caret-position="330">
|
||||||
|
<caret line="22" column="15" lean-forward="true" selection-start-line="22" selection-start-column="15" selection-end-line="22" selection-end-column="15" />
|
||||||
|
</first_editor>
|
||||||
|
<second_editor />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/external/pytaw/pytaw/youtube.py">
|
<entry file="file://$PROJECT_DIR$/external/pytaw/pytaw/youtube.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="429">
|
<state relative-caret-position="-11204">
|
||||||
<caret line="171" column="32" selection-start-line="171" selection-start-column="32" selection-end-line="171" selection-end-column="32" />
|
<caret line="163" column="29" selection-start-line="163" selection-start-column="29" selection-end-line="163" selection-end-column="29" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#18#0" expanded="true" />
|
<element signature="e#0#18#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -334,10 +346,10 @@
|
|||||||
<option value="$PROJECT_DIR$/YtManagerApp/templates/YtManagerApp/master_default.html" />
|
<option value="$PROJECT_DIR$/YtManagerApp/templates/YtManagerApp/master_default.html" />
|
||||||
<option value="$PROJECT_DIR$/YtManagerApp/templates/YtManagerApp/index.html" />
|
<option value="$PROJECT_DIR$/YtManagerApp/templates/YtManagerApp/index.html" />
|
||||||
<option value="$PROJECT_DIR$/YtManager/settings.py" />
|
<option value="$PROJECT_DIR$/YtManager/settings.py" />
|
||||||
<option value="$PROJECT_DIR$/readme.md" />
|
|
||||||
<option value="$PROJECT_DIR$/YtManagerApp/templates/YtManagerApp/controls/subscription_delete_modal.html" />
|
<option value="$PROJECT_DIR$/YtManagerApp/templates/YtManagerApp/controls/subscription_delete_modal.html" />
|
||||||
<option value="$PROJECT_DIR$/YtManagerApp/management/jobs/synchronize.py" />
|
|
||||||
<option value="$PROJECT_DIR$/external/pytaw/pytaw/youtube.py" />
|
<option value="$PROJECT_DIR$/external/pytaw/pytaw/youtube.py" />
|
||||||
|
<option value="$PROJECT_DIR$/YtManagerApp/management/jobs/synchronize.py" />
|
||||||
|
<option value="$PROJECT_DIR$/readme.md" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
@ -626,20 +638,20 @@
|
|||||||
<frame x="0" y="0" width="1920" height="1048" extended-state="6" />
|
<frame x="0" y="0" width="1920" height="1048" extended-state="6" />
|
||||||
<editor active="true" />
|
<editor active="true" />
|
||||||
<layout>
|
<layout>
|
||||||
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.17697228" />
|
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.17697228" />
|
||||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||||
<window_info id="Favorites" order="2" side_tool="true" />
|
<window_info id="Favorites" order="2" side_tool="true" />
|
||||||
<window_info anchor="bottom" id="Message" order="0" />
|
<window_info anchor="bottom" id="Message" order="0" />
|
||||||
<window_info anchor="bottom" id="Find" order="1" sideWeight="0.49520257" weight="0.38152173" />
|
<window_info anchor="bottom" id="Find" order="1" sideWeight="0.49520257" weight="0.38152173" />
|
||||||
<window_info anchor="bottom" id="Run" order="2" sideWeight="0.52238804" weight="0.32717392" />
|
<window_info anchor="bottom" id="Run" order="2" sideWeight="0.521855" visible="true" weight="0.32717392" />
|
||||||
<window_info anchor="bottom" id="Cvs" order="3" weight="0.25" />
|
<window_info anchor="bottom" id="Cvs" order="3" weight="0.25" />
|
||||||
<window_info anchor="bottom" id="Inspection" order="4" weight="0.4" />
|
<window_info anchor="bottom" id="Inspection" order="4" weight="0.4" />
|
||||||
<window_info active="true" anchor="bottom" id="Debug" order="5" sideWeight="0.49093816" visible="true" weight="0.37608695" />
|
<window_info anchor="bottom" id="Debug" order="5" sideWeight="0.49093816" weight="0.37608695" />
|
||||||
<window_info anchor="bottom" id="TODO" order="6" weight="0.329718" />
|
<window_info anchor="bottom" id="TODO" order="6" weight="0.329718" />
|
||||||
<window_info anchor="bottom" id="manage.py@youtube-channel-manager" order="7" sideWeight="0.49573562" weight="0.49347827" />
|
<window_info anchor="bottom" id="manage.py@youtube-channel-manager" order="7" sideWeight="0.49573562" weight="0.49347827" />
|
||||||
<window_info anchor="bottom" id="Docker" order="8" show_stripe_button="false" />
|
<window_info anchor="bottom" id="Docker" order="8" show_stripe_button="false" />
|
||||||
<window_info anchor="bottom" id="Database Changes" order="9" weight="0.3285968" />
|
<window_info anchor="bottom" id="Database Changes" order="9" weight="0.3285968" />
|
||||||
<window_info anchor="bottom" id="Event Log" order="10" sideWeight="0.5090618" side_tool="true" visible="true" weight="0.37608695" />
|
<window_info anchor="bottom" id="Event Log" order="10" sideWeight="0.478145" side_tool="true" visible="true" weight="0.32717392" />
|
||||||
<window_info anchor="bottom" id="Version Control" order="11" sideWeight="0.49840087" weight="0.15326087" />
|
<window_info anchor="bottom" id="Version Control" order="11" sideWeight="0.49840087" weight="0.15326087" />
|
||||||
<window_info anchor="bottom" id="Terminal" order="12" sideWeight="0.49573562" weight="0.3576087" />
|
<window_info anchor="bottom" id="Terminal" order="12" sideWeight="0.49573562" weight="0.3576087" />
|
||||||
<window_info anchor="bottom" id="Python Console" order="13" sideWeight="0.49626866" weight="0.33804348" />
|
<window_info anchor="bottom" id="Python Console" order="13" sideWeight="0.49626866" weight="0.33804348" />
|
||||||
@ -682,22 +694,6 @@
|
|||||||
<component name="VcsContentAnnotationSettings">
|
<component name="VcsContentAnnotationSettings">
|
||||||
<option name="myLimit" value="2678400000" />
|
<option name="myLimit" value="2678400000" />
|
||||||
</component>
|
</component>
|
||||||
<component name="XDebuggerManager">
|
|
||||||
<breakpoint-manager>
|
|
||||||
<breakpoints>
|
|
||||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
|
||||||
<url>file://$PROJECT_DIR$/YtManagerApp/management/jobs/synchronize.py</url>
|
|
||||||
<line>31</line>
|
|
||||||
<option name="timeStamp" value="2" />
|
|
||||||
</line-breakpoint>
|
|
||||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
|
||||||
<url>file://$PROJECT_DIR$/external/pytaw/pytaw/youtube.py</url>
|
|
||||||
<line>160</line>
|
|
||||||
<option name="timeStamp" value="3" />
|
|
||||||
</line-breakpoint>
|
|
||||||
</breakpoints>
|
|
||||||
</breakpoint-manager>
|
|
||||||
</component>
|
|
||||||
<component name="editorHistoryManager">
|
<component name="editorHistoryManager">
|
||||||
<entry file="file://$PROJECT_DIR$/YtManagerApp/views/controls/modal.py">
|
<entry file="file://$PROJECT_DIR$/YtManagerApp/views/controls/modal.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
@ -915,16 +911,6 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/readme.md">
|
|
||||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
|
||||||
<state split_layout="SPLIT">
|
|
||||||
<first_editor>
|
|
||||||
<caret column="2" selection-start-column="2" selection-end-column="2" />
|
|
||||||
</first_editor>
|
|
||||||
<second_editor />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/YtManagerApp/templates/YtManagerApp/index.html">
|
<entry file="file://$PROJECT_DIR$/YtManagerApp/templates/YtManagerApp/index.html">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="405">
|
<state relative-caret-position="405">
|
||||||
@ -1006,16 +992,6 @@
|
|||||||
<entry file="file://$PROJECT_DIR$/YtManagerApp/management/__init__.py">
|
<entry file="file://$PROJECT_DIR$/YtManagerApp/management/__init__.py">
|
||||||
<provider selected="true" editor-type-id="text-editor" />
|
<provider selected="true" editor-type-id="text-editor" />
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/YtManagerApp/management/jobs/synchronize.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="375">
|
|
||||||
<caret line="31" column="33" selection-start-line="31" selection-start-column="33" selection-end-line="31" selection-end-column="33" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#12#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$USER_HOME$/.PyCharm2018.2/system/python_stubs/-1247971763/itertools.py">
|
<entry file="file://$USER_HOME$/.PyCharm2018.2/system/python_stubs/-1247971763/itertools.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="182">
|
<state relative-caret-position="182">
|
||||||
@ -1025,13 +1001,33 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/external/pytaw/pytaw/youtube.py">
|
<entry file="file://$PROJECT_DIR$/external/pytaw/pytaw/youtube.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="429">
|
<state relative-caret-position="-11204">
|
||||||
<caret line="171" column="32" selection-start-line="171" selection-start-column="32" selection-end-line="171" selection-end-column="32" />
|
<caret line="163" column="29" selection-start-line="163" selection-start-column="29" selection-end-line="163" selection-end-column="29" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#18#0" expanded="true" />
|
<element signature="e#0#18#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/YtManagerApp/management/jobs/synchronize.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="525">
|
||||||
|
<caret line="41" selection-start-line="41" selection-end-line="41" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#12#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/readme.md">
|
||||||
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
|
<state split_layout="SPLIT">
|
||||||
|
<first_editor relative-caret-position="330">
|
||||||
|
<caret line="22" column="15" lean-forward="true" selection-start-line="22" selection-start-column="15" selection-end-line="22" selection-end-column="15" />
|
||||||
|
</first_editor>
|
||||||
|
<second_editor />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
@ -31,8 +31,12 @@ def __check_new_videos_sub(subscription: Subscription, yt_api: youtube.YoutubeAP
|
|||||||
|
|
||||||
for yt_video in yt_api.videos(all_vids_ids, part='id,statistics'):
|
for yt_video in yt_api.videos(all_vids_ids, part='id,statistics'):
|
||||||
video = all_vids_dict.get(yt_video.id)
|
video = all_vids_dict.get(yt_video.id)
|
||||||
if yt_video.like_count is not None and yt_video.dislike_count is not None:
|
|
||||||
|
if yt_video.n_likes is not None \
|
||||||
|
and yt_video.n_dislikes is not None \
|
||||||
|
and yt_video.n_likes + yt_video.n_dislikes > 0:
|
||||||
video.rating = yt_video.n_likes / (yt_video.n_likes + yt_video.n_dislikes)
|
video.rating = yt_video.n_likes / (yt_video.n_likes + yt_video.n_dislikes)
|
||||||
|
|
||||||
video.views = yt_video.n_views
|
video.views = yt_video.n_views
|
||||||
video.save()
|
video.save()
|
||||||
|
|
||||||
|
18
readme.md
18
readme.md
@ -2,6 +2,24 @@
|
|||||||
|
|
||||||
A self-hosted tool which manages your YouTube subscriptions, and downloads files automatically.
|
A self-hosted tool which manages your YouTube subscriptions, and downloads files automatically.
|
||||||
|
|
||||||
|
## Current state
|
||||||
|
|
||||||
|
Currently, the program will do what it's main job is to do: download videos, and keep track of the subscriptions.
|
||||||
|
|
||||||
|
Of course, there are a lot of things that still need to be done. The web interface is still pretty limited.
|
||||||
|
This is what still needs to be done:
|
||||||
|
|
||||||
|
* get status bar to actually display something (right now it's just a hardcoded message)
|
||||||
|
* add an indication of what the synchronization jobs are doing to the UI
|
||||||
|
* video page, which contains an embedded player
|
||||||
|
* OAuth YouTube authentication, so private playlists can be obtained
|
||||||
|
* Web UI improvements:
|
||||||
|
* Paging for videos
|
||||||
|
* Handle drag & drop for the subscription folders
|
||||||
|
* Update UI when something changes
|
||||||
|
* Improve stability
|
||||||
|
* Bonus: Plex integration
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
* python3: `$ apt install python3`
|
* python3: `$ apt install python3`
|
||||||
|
Loading…
Reference in New Issue
Block a user