LINUX.ORG.RU

ревью кода проекта

 ,


1

2

Собственно написал первую более менее нужную тулзу, на pyqt5, пишу на этом всем месяц или полтора, хочу услышать критику и поправки которые мне следует учесть в дальнейшем написании кода.
https://github.com/foozzi/yaudio

ого, интересно, откуда оно аудио берет? из видео дергает? или я пропустил что-то важное, а именно что ютуб теперь умеет чистое аудио без видеодорожки???

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

А вот в коде можешь глянуть, да, умеет брать стримы с помощью youtube-dl, написал потому что, ненашел подобного, а я часто слушаю музыку на yt или стримы

noname_user ★★★
() автор топика
def next_track(self):
    if self.np in self.quene_tracks:
        i = 0
        for _ in self.quene_tracks:
            if self.np == _:
                try:
                    self._play(self.quene_tracks[i + 1], self._get_np_button())
                    return
                except Exception as e:
                    return
            i = i + 1

слишком большая вложенность и Exception as e слишком обобщенное исключение, self.np == _, нижнее подчеркивание обычно используют как указатель того, что переменная не исопльзуется, переменная счетчика не нужна, можно использовать enumerate, название переменной np ничего не говорит о том что это такое.
Смысл условия self.np in self.quene_tracks сомнительный, мне кажется операция in со списком будет O(n), ты таким образом сделал только медленнее, можно можно было бы переписать хотя бы как-то так:

def next_track(self):
    for index, track in enumerate(self.quene_tracks):
        if self.np != track:
            continue
        
        try:
            self._play(self.quene_tracks[index + 1], self._get_np_button())
        finally:
            return
хотя я уверен, что тут вообще try finally не нужно, но мне лень смотреть код, это просто первое попавшееся на глаза )

Int64 ★★★
()
Последнее исправление: Int64 (всего исправлений: 1)
Ответ на: комментарий от Int64

наверное логичнее было бы переменную quene_tracks представить в виде связного списка. еще заметил: int(time / 1000) можно написать просто time // 1000, что означает целочисленное деление.

Int64 ★★★
()
Ответ на: комментарий от Int64

И названия перменных вообще ни о чем не говорят, переменные вида pushButton, pushButton_2, pushButton_3, pushButton_4 не понятно, что за кнопки и что они делать должны.

Int64 ★★★
()
Ответ на: комментарий от Int64

понял, сейчас буду усовершенствовать, инересует еще работа потоков, понял ли я как их использовать или нет?))

жду еще ответов

noname_user ★★★
() автор топика
Ответ на: комментарий от Singularity

нет, аудио отдельно идёт. он ffmpeg'ом наоборот собирает два разных потока, если ты их выбрал.

anonymous
()
Ответ на: комментарий от Int64

Ладно хоть я не успел потратить своё время на код... push_button_112!

kardapoltsev ★★★★★
()
if len(keywords) < 1:

Можно просто if not keywords: или лучше if not keywords.strip():. В helpers/search.py get_video_attrs() тоже можно просто if temp, т.к. пустой список, возвращаемый re.findall() трактуется как False.

Ну а так, за исключением названий виджетов и списка зависимостей, вроде, ничего криминального. Полезная программа, плюсую.

anonymous
()
Ответ на: комментарий от anonymous

Понял, кнопки сделаю понятными, учту все

noname_user ★★★
() автор топика
Ответ на: комментарий от x3al

Когда некоторые участки кода переписывал, копировал части кода и вставлял, наверное поэтому, поправлю.

noname_user ★★★
() автор топика
Ответ на: комментарий от Int64

переменные вида pushButton, pushButton_2, pushButton_3, pushButton_4 не понятно, что за кнопки и что они делать должны

если такое в самом деле есть в коде - нужно немедленно исправить

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

учел вроде все, что отписали, закоммитил

noname_user ★★★
() автор топика
build/exe.linux-x86_64-3.6
build/exe.linux-x86_64-3.6/about.py
build/exe.linux-x86_64-3.6/config.cfg
build/exe.linux-x86_64-3.6/helpers
build/exe.linux-x86_64-3.6/helpers/data.py
build/exe.linux-x86_64-3.6/helpers/encryption.py
build/exe.linux-x86_64-3.6/helpers/gui.py
build/exe.linux-x86_64-3.6/helpers/networking.py
build/exe.linux-x86_64-3.6/helpers/search.py
build/exe.linux-x86_64-3.6/helpers/text.py
build/exe.linux-x86_64-3.6/imageformats
build/exe.linux-x86_64-3.6/imageformats/libqgif.so
build/exe.linux-x86_64-3.6/imageformats/libqicns.so
build/exe.linux-x86_64-3.6/imageformats/libqico.so
build/exe.linux-x86_64-3.6/imageformats/libqjp2.so
build/exe.linux-x86_64-3.6/imageformats/libqjpeg.so
build/exe.linux-x86_64-3.6/imageformats/libqsvg.so
build/exe.linux-x86_64-3.6/imageformats/libqtga.so
build/exe.linux-x86_64-3.6/imageformats/libqtiff.so
build/exe.linux-x86_64-3.6/imageformats/libqwbmp.so
build/exe.linux-x86_64-3.6/imageformats/libqwebp.so
build/exe.linux-x86_64-3.6/img
build/exe.linux-x86_64-3.6/img/about.png
build/exe.linux-x86_64-3.6/img/novolume.png
build/exe.linux-x86_64-3.6/img/volume.png
build/exe.linux-x86_64-3.6/libQt5Core.so.5
build/exe.linux-x86_64-3.6/libQt5DBus.so.5
build/exe.linux-x86_64-3.6/libQt5Gui.so.5
build/exe.linux-x86_64-3.6/libQt5Network.so.5
build/exe.linux-x86_64-3.6/libQt5OpenGL.so.5
build/exe.linux-x86_64-3.6/libQt5Sql.so.5
build/exe.linux-x86_64-3.6/libQt5Svg.so.5
build/exe.linux-x86_64-3.6/libQt5Test.so.5
build/exe.linux-x86_64-3.6/libQt5Widgets.so.5
build/exe.linux-x86_64-3.6/libQt5XcbQpa.so.5
build/exe.linux-x86_64-3.6/libQt5Xml.so.5
build/exe.linux-x86_64-3.6/libicudata.so.56
build/exe.linux-x86_64-3.6/libicui18n.so.56
build/exe.linux-x86_64-3.6/libicuuc.so.56
build/exe.linux-x86_64-3.6/libpython3.6m.so.1.0
build/exe.linux-x86_64-3.6/main.py
build/exe.linux-x86_64-3.6/platforms
build/exe.linux-x86_64-3.6/platforms/libqeglfs.so
build/exe.linux-x86_64-3.6/platforms/libqlinuxfb.so
build/exe.linux-x86_64-3.6/platforms/libqminimal.so
build/exe.linux-x86_64-3.6/platforms/libqminimalegl.so
build/exe.linux-x86_64-3.6/platforms/libqoffscreen.so
build/exe.linux-x86_64-3.6/platforms/libqvnc.so
build/exe.linux-x86_64-3.6/platforms/libqxcb.so
build/exe.linux-x86_64-3.6/streamer.py
build/exe.linux-x86_64-3.6/vlc.py
build/exe.linux-x86_64-3.6/yaudio
build/exe.linux-x86_64-3.6/youtube-dl

Упоролся? Быстро удаляй из репозитория этот мусор.

slovazap ★★★★★
()

Пофиксил все, что мешало прослушивать музыку в приложении, на данный момени 0.0.15a, которая дает возможность слушать аудио, без глубоких настроек. \
Жду ваших реквестов по багам и косякам. \
З.Ы На кутях отображение интерфейса возможно будет выглядеть как на gtk, в версии 0.1.0b я это поправлю и сделаю вид приложения как на kde, так и на gtk - адекватным. \
З.Ы.Ы Используется qt 5*, дублирую сорцы - https://github.com/foozzi/yaudio, кто соберет под вин и сделает setup.py под форточку, буду очень рад и благодарен.

noname_user ★★★
() автор топика
Последнее исправление: noname_user (всего исправлений: 2)
	def play(self, uri):
		m=self.vlcInstance.media_new(uri)
		
		self.player.set_media(m)
		self.player.audio_set_volume(int(self.volume))
		m.release()
		self.player.play()
		while self.flag_stop == True:
			self.stop()
			return

Определенно радует:

		while self.flag_stop == True:
			self.stop()
			return

Есть мнение, что цикл тут не нужен. Тебе достаточно ниписать так:

	
	def play(self, uri):
		m=self.vlcInstance.media_new(uri)
		
		self.player.set_media(m)
		self.player.audio_set_volume(int(self.volume))
		m.release()
		self.player.play()
		if self.flag_stop:
			self.stop()

aandrew002
()
Ответ на: комментарий от aandrew002

Да, ты прав, я это узнал совсем не давно, но нахожусь на отдыхе, пока не поддерживаю код, приеду буду заниматься еще и gtk версией.

noname_user ★★★
() автор топика
Ответ на: комментарий от Int64

нижнее подчеркивание

Окстись, это верхнее подчёркивание! И эс у него везде как доллар. Кто так пишет...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.