project name changed from mps-youtube to yewtube
Esse commit está contido em:
@@ -17,3 +17,5 @@ bin
|
||||
var
|
||||
tags
|
||||
.env
|
||||
env/
|
||||
.idea/
|
||||
+117
@@ -0,0 +1,117 @@
|
||||
yewtube
|
||||
===========
|
||||
  
|
||||
|
||||
Installation
|
||||
------------
|
||||
1. It is recommended that you first Uninstall previous installations of `mps-youtube`
|
||||
1. Install `pipx` using `pip` or using your favorite Linux Package
|
||||
Manager. You can find instructions to do so [here.](https://pypa.github.io/pipx/installation/)
|
||||
1. Install `yewtube` using
|
||||
`pipx install git+https://github.com/iamtalhaasghar/yewtube.git`
|
||||
1. Resolve `youtube-dl` dependency using
|
||||
`pipx inject yewtube youtube-dl`
|
||||
1. That's it.
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Search and play audio/video from YouTube
|
||||
- Search tracks of albums by album title
|
||||
- Search and import YouTube playlists
|
||||
- Create and save local playlists
|
||||
- Download audio/video
|
||||
- Convert to mp3 & other formats (requires ffmpeg or avconv)
|
||||
- View video comments
|
||||
- Works with Python 3.x
|
||||
- Works with Windows, Linux and Mac OS X
|
||||
- Requires mplayer or mpv
|
||||
|
||||
This project is based on [mps-youtube](https://github.com/mps-youtube/mps-youtube) and mps-youtube is based on [mps](https://web.archive.org/web/20180429034221/https://github.com/np1/mps), a terminal based program to search, stream and download music. This
|
||||
implementation uses YouTube as a source of content and can play and
|
||||
download video as well as audio. The [pafy](https://github.com/mps-youtube/pafy) library handles interfacing with YouTube.
|
||||
|
||||
[FAQ / Troubleshooting common issues](https://github.com/mps-youtube/mps-youtube/wiki/Troubleshooting)
|
||||
|
||||
Screenshots
|
||||
-----------
|
||||
|
||||
Search:
|
||||

|
||||
|
||||
A standard search is performed by entering `/` followed by search terms.
|
||||
|
||||
You can play all of the search results by giving `1-` as input
|
||||
|
||||
Repeating song/songs can be done with `song_number[loop]`, for example:
|
||||
`1[3]` or `4-6[2]`
|
||||
|
||||
Local Playlists:
|
||||

|
||||
|
||||
Search result items can easily be stored in local playlists.
|
||||
|
||||
YouTube Playlists:
|
||||

|
||||
|
||||
YouTube playlists can be searched and played or saved as local
|
||||
playlists.
|
||||
|
||||
A playlist search is performed by `//` followed by search term.
|
||||
|
||||
Download:
|
||||

|
||||
|
||||
Content can be downloaded in various formats and resolutions.
|
||||
|
||||
Comments:
|
||||

|
||||
|
||||
A basic comments browser is available to view YouTube user comments.
|
||||
|
||||
Music Album Matching:
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
An album title can be specified and yewtube will attempt to find
|
||||
matches for each track of the album, based on title and duration. Type
|
||||
`help search` for more info.
|
||||
|
||||
Customisation:
|
||||
|
||||

|
||||
|
||||
Search results can be customised to display additional fields and
|
||||
ordered by various criteria.
|
||||
|
||||
This configuration was set up using the following commands
|
||||
```
|
||||
set order views
|
||||
set columns user:14 date comments rating likes dislikes category:9 views
|
||||
```
|
||||
|
||||
Type `help config` for help on configuration options
|
||||
|
||||
Upgrading
|
||||
---------
|
||||
|
||||
Upgrade pip installation::
|
||||
|
||||
pipx upgrade yewtube
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
yewtube is run on the command line using the command::
|
||||
|
||||
`yt`
|
||||
|
||||
Enter `h` from within the program for help.
|
||||
|
||||
How to Contribute
|
||||
-----------------
|
||||
|
||||
Contributions are welcomed! However, please check out the [contribution page](https://github.com/iamtalhaasghar/yewtube/blob/develop/CONTRIBUTING.md) before making a contribution.
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
# This file is used by clients to check for updates
|
||||
|
||||
version 0.2.8
|
||||
version 1.0.0
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
__version__ = "0.2.8"
|
||||
__notes__ = "released 17 February 2018"
|
||||
__author__ = "np1"
|
||||
__version__ = "1.0.0"
|
||||
__notes__ = "released 14 October 2021"
|
||||
__author__ = "iamtalhaasghar"
|
||||
__license__ = "GPLv3"
|
||||
__url__ = "https://github.com/mps-youtube/mps-youtube"
|
||||
__url__ = "https://github.com/iamtalhaasghar/yewtube"
|
||||
|
||||
from . import init
|
||||
init.init()
|
||||
|
||||
@@ -20,7 +20,7 @@ def load():
|
||||
with open(g.CACHEFILE, "rb") as cf:
|
||||
cached = pickle.load(cf)
|
||||
|
||||
# Note: will be none for mpsyt 0.2.5 or earlier
|
||||
# Note: will be none for yewtube 0.2.5 or earlier
|
||||
version = cached.get('version')
|
||||
|
||||
if 'streams' in cached:
|
||||
|
||||
@@ -24,7 +24,7 @@ def show_message(message, col=c.r, update=False):
|
||||
|
||||
|
||||
def _do_query(url, query, err='query failed', report=False):
|
||||
""" Perform http request using mpsyt user agent header.
|
||||
""" Perform http request using yewtube user agent header.
|
||||
|
||||
if report is True, return whether response is from memo
|
||||
|
||||
|
||||
@@ -206,12 +206,16 @@ def _get_user_columns():
|
||||
def logo(col=None, version=""):
|
||||
""" Return text logo. """
|
||||
col = col if col else random.choice((c.g, c.r, c.y, c.b, c.p, c.w))
|
||||
logo_txt = r""" _ _
|
||||
_ __ ___ _ __ ___ _ _ ___ _ _| |_ _ _| |__ ___
|
||||
| '_ ` _ \| '_ \/ __|_____| | | |/ _ \| | | | __| | | | '_ \ / _ \
|
||||
| | | | | | |_) \__ \_____| |_| | (_) | |_| | |_| |_| | |_) | __/
|
||||
|_| |_| |_| .__/|___/ \__, |\___/ \__,_|\__|\__,_|_.__/ \___|
|
||||
|_| |___/"""
|
||||
logo_txt = r""" _ _
|
||||
| | | |
|
||||
_ _ _____ _| |_ _ _| |__ ___
|
||||
| | | |/ _ \ \ /\ / / __| | | | '_ \ / _ \
|
||||
| |_| | __/\ V V /| |_| |_| | |_) | __/
|
||||
\__, |\___| \_/\_/ \__|\__,_|_.__/ \___|
|
||||
__/ |
|
||||
|___/
|
||||
"""
|
||||
|
||||
version = " v" + version if version else ""
|
||||
logo_txt = col + logo_txt + c.w + version
|
||||
lines = logo_txt.split("\n")
|
||||
|
||||
+2
-2
@@ -94,9 +94,9 @@ argument_commands = []
|
||||
commands = []
|
||||
|
||||
text = {
|
||||
"exitmsg": ("*mps-youtube - *https://github.com/mps-youtube/mps-youtube*"
|
||||
"exitmsg": ("*yewtube - https://github.com/iamtalhaasghar/yewtube is a fork of\nmps-youtube - *https://github.com/mps-youtube/mps-youtube*"
|
||||
"\nReleased under the GPLv3 license\n"
|
||||
"(c) 2014, 2015 np1 and contributors*\n"""),
|
||||
"(c) 2021 iamtalhaashgar\n(c) 2014, 2015 np1 and contributors*\n"""),
|
||||
"exitmsg_": (c.r, c.b, c.r, c.w),
|
||||
|
||||
# Error / Warning messages
|
||||
|
||||
+12
-12
@@ -27,7 +27,7 @@ def helptext():
|
||||
{2}u <number>{1} - show videos uploaded by uploader of video <number>
|
||||
{2}x <number>{1} - copy item <number> url to clipboard (requires pyperclip)
|
||||
|
||||
{2}q{1}, {2}quit{1} - exit mpsyt
|
||||
{2}q{1}, {2}quit{1} - exit yewtube
|
||||
""".format(c.ul, c.w, c.y)),
|
||||
("search", "Searching and Retrieving", """
|
||||
{0}Searching and Retrieving{1}
|
||||
@@ -175,7 +175,7 @@ def helptext():
|
||||
("history", "Accessing Local History", """
|
||||
{0}Accessing Local History{1}
|
||||
|
||||
Access songs that have been played within mpsyt
|
||||
Access songs that have been played within yewtube
|
||||
|
||||
{2}history{1} - displays a list of songs contained in history
|
||||
{2}history clear{1} - clears the song history
|
||||
@@ -186,20 +186,20 @@ def helptext():
|
||||
("invoke", "Invocation Parameters", """
|
||||
{0}Invocation{1}
|
||||
|
||||
All mpsyt commands can be entered from the command line. For example;
|
||||
All yewtube commands can be entered from the command line. For example;
|
||||
|
||||
{2}mpsyt dlurl <url or id>{1} to download a YouTube video by url or id
|
||||
{2}mpsyt playurl <url or id>{1} to play a YouTube video by url or id
|
||||
{2}mpsyt /mozart{1} to search
|
||||
{2}mpsyt //best songs of 2010{1} for a playlist search
|
||||
{2}mpsyt play <playlist name or ID>{1} to play a saved playlist
|
||||
{2}mpsyt ls{1} to list saved playlists
|
||||
{2}yt dlurl <url or id>{1} to download a YouTube video by url or id
|
||||
{2}yt playurl <url or id>{1} to play a YouTube video by url or id
|
||||
{2}yt /mozart{1} to search
|
||||
{2}yt //best songs of 2010{1} for a playlist search
|
||||
{2}yt play <playlist name or ID>{1} to play a saved playlist
|
||||
{2}yt ls{1} to list saved playlists
|
||||
|
||||
For further automation, a series of commands can be entered separated by
|
||||
commas (,). E.g.,
|
||||
|
||||
{2}mpsyt open 1, 2-4{1} - play items 2-4 of first saved playlist
|
||||
{2}mpsyt //the doors, 1, all -a{1} - open YouTube playlist and play audio
|
||||
{2}yt open 1, 2-4{1} - play items 2-4 of first saved playlist
|
||||
{2}yt //the doors, 1, all -a{1} - open YouTube playlist and play audio
|
||||
|
||||
If you need to enter an actual comma on the command line, use {2},,{1} instead.
|
||||
""".format(c.ul, c.w, c.y)),
|
||||
@@ -328,7 +328,7 @@ def get_help(choice):
|
||||
"encode": ("encoding transcoding transcode wma mp3 format "
|
||||
"encode encoder".split()),
|
||||
|
||||
"invoke": "command commands mpsyt invocation".split(),
|
||||
"invoke": "command commands yt invocation".split(),
|
||||
|
||||
"search": ("user userpl pl pls r n p url album "
|
||||
"editing result results related remove swop mkp --description".split()),
|
||||
|
||||
@@ -268,7 +268,7 @@ def _get_version_info():
|
||||
import youtube_dl
|
||||
youtube_dl_version = youtube_dl.version.__version__
|
||||
|
||||
out = "mpsyt version : " + __version__
|
||||
out = "yewtube version : " + __version__
|
||||
out += "\n notes : " + __notes__
|
||||
out += "\npafy version : " + pafy_version
|
||||
if youtube_dl_version:
|
||||
|
||||
@@ -112,7 +112,7 @@ def prompt_for_exit():
|
||||
def main():
|
||||
""" Main control loop. """
|
||||
if config.SET_TITLE.get:
|
||||
util.set_window_title("mpsyt")
|
||||
util.set_window_title("yewtube")
|
||||
|
||||
if not g.command_line:
|
||||
g.content = content.logo(col=c.g, version=__version__) + "\n\n"
|
||||
|
||||
@@ -64,7 +64,7 @@ class BasePlayer:
|
||||
override=self.override)
|
||||
|
||||
if config.SET_TITLE.get:
|
||||
util.set_window_title(self.song.title + " - mpsyt")
|
||||
util.set_window_title(self.song.title + " - yewtube")
|
||||
|
||||
self.softrepeat = repeat and len(self.songlist) == 1
|
||||
|
||||
@@ -92,7 +92,7 @@ class BasePlayer:
|
||||
pass
|
||||
|
||||
if config.SET_TITLE.get:
|
||||
util.set_window_title("mpsyt")
|
||||
util.set_window_title("yewtube")
|
||||
|
||||
if self.song_no == -1:
|
||||
self.song_no = len(songlist) - 1 if repeat else 0
|
||||
@@ -306,7 +306,7 @@ class CmdPlayer(BasePlayer):
|
||||
g.mprisctl.send(('stop', True))
|
||||
|
||||
if self.p and self.p.poll() is None:
|
||||
self.p.terminate() # make sure to kill mplayer if mpsyt crashes
|
||||
self.p.terminate() # make sure to kill mplayer if yewtube crashes
|
||||
|
||||
self.clean_up()
|
||||
|
||||
|
||||
@@ -192,7 +192,7 @@ class mplayer(CmdPlayer):
|
||||
def _get_input_file():
|
||||
""" Check for existence of custom input file.
|
||||
|
||||
Return file name of temp input file with mpsyt mappings included
|
||||
Return file name of temp input file with yewtube mappings included
|
||||
"""
|
||||
confpath = conf = ''
|
||||
|
||||
|
||||
@@ -275,7 +275,7 @@ class mpv(CmdPlayer):
|
||||
def _get_input_file():
|
||||
""" Check for existence of custom input file.
|
||||
|
||||
Return file name of temp input file with mpsyt mappings included
|
||||
Return file name of temp input file with yewtube mappings included
|
||||
"""
|
||||
confpath = conf = ''
|
||||
|
||||
|
||||
@@ -160,7 +160,7 @@ def _convert_playlist_to_m3u():
|
||||
|
||||
os.mkdir(g.PLFOLDER)
|
||||
save()
|
||||
screen.msgexit("Updated playlist file. Please restart mpsyt", 1)
|
||||
screen.msgexit("Updated playlist file. Please restart yewtube", 1)
|
||||
|
||||
except EOFError:
|
||||
screen.msgexit("Error opening playlists from %s" % g.PLFILE, 1)
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
pafy
|
||||
youtube_dl
|
||||
+14
-14
@@ -1,8 +1,8 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
""" setup.py for mps-youtube.
|
||||
""" setup.py for yewtube.
|
||||
|
||||
https://np1.github.com/mps-youtube
|
||||
https://github.com/iamtalhaasghar/yewtube
|
||||
|
||||
python setup.py sdist bdist_wheel
|
||||
"""
|
||||
@@ -11,23 +11,23 @@ import sys
|
||||
import os
|
||||
|
||||
if sys.version_info < (3,0):
|
||||
sys.exit("Mps-youtube requires python 3.")
|
||||
sys.exit("yewtube requires python 3.")
|
||||
|
||||
from setuptools import setup
|
||||
|
||||
VERSION = "0.2.8"
|
||||
VERSION = "1.0.0"
|
||||
|
||||
options = dict(
|
||||
name="mps-youtube",
|
||||
name="yewtube",
|
||||
version=VERSION,
|
||||
description="Terminal based YouTube player and downloader",
|
||||
keywords=["video", "music", "audio", "youtube", "stream", "download"],
|
||||
author="np1",
|
||||
author_email="np1nagev@gmail.com",
|
||||
url="https://github.com/mps-youtube/mps-youtube",
|
||||
download_url="https://github.com/mps-youtube/mps-youtube/archive/v%s.tar.gz" % VERSION,
|
||||
author="talha_programmer",
|
||||
author_email="talhaasghar.contact@simplelogin.fr",
|
||||
url="https://github.com/iamtalhaasghar/yewtube",
|
||||
download_url="https://github.com/iamtalhaasghar/yewtube/releases",
|
||||
packages=['mps_youtube', 'mps_youtube.commands', 'mps_youtube.listview', 'mps_youtube.players'],
|
||||
entry_points={'console_scripts': ['mpsyt = mps_youtube:main.main']},
|
||||
entry_points={'console_scripts': ['yt = mps_youtube:main.main']},
|
||||
install_requires=['pafy >= 0.3.82, != 0.4.0, != 0.4.1, != 0.4.2'],
|
||||
classifiers=[
|
||||
"Topic :: Utilities",
|
||||
@@ -62,20 +62,20 @@ options = dict(
|
||||
"bundle_files": 1
|
||||
}
|
||||
},
|
||||
package_data={"": ["LICENSE", "README.rst", "CHANGELOG"]},
|
||||
long_description=open("README.rst").read()
|
||||
package_data={"": ["LICENSE", "README.md", "CHANGELOG"]},
|
||||
long_description=open("README.md").read()
|
||||
)
|
||||
|
||||
if sys.platform.startswith('linux'):
|
||||
# Install desktop file. Required for mpris on Ubuntu
|
||||
options['data_files'] = [('share/applications/', ['mps-youtube.desktop'])]
|
||||
options['data_files'] = [('share/applications/', ['yewtube.desktop'])]
|
||||
|
||||
if os.name == "nt":
|
||||
try:
|
||||
import py2exe
|
||||
# Only setting these when py2exe imports successfully prevents warnings
|
||||
# in easy_install
|
||||
options['console'] = ['mpsyt']
|
||||
options['console'] = ['yt']
|
||||
options['zipfile'] = None
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
[Desktop Entry]
|
||||
Name=mps-youtube
|
||||
Name=yewtube
|
||||
GenericName=Music Player
|
||||
Keywords=Audio;Song;Podcast;Playlist;youtube.com;
|
||||
Exec=mpsyt %U
|
||||
Exec=yt %U
|
||||
Terminal=true
|
||||
Icon=terminal
|
||||
Type=Application
|
||||
Arquivo executável → Arquivo normal
Referência em uma Nova Issue
Bloquear um usuário