refactor(history): commit development branch
All checks were successful
/ job (push) Successful in 1m12s
All checks were successful
/ job (push) Successful in 1m12s
new development branch from root commit
This commit is contained in:
parent
3e562930f6
commit
020aaa0b9a
94 changed files with 4804 additions and 0 deletions
1
rwx/sw/freetube/__init__.py
Normal file
1
rwx/sw/freetube/__init__.py
Normal file
|
@ -0,0 +1 @@
|
|||
"""Configure FreeTube."""
|
31
rwx/sw/freetube/authors.py
Normal file
31
rwx/sw/freetube/authors.py
Normal file
|
@ -0,0 +1,31 @@
|
|||
"""FreeTube authors."""
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from rwx import Object
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .playlists import Playlist
|
||||
|
||||
|
||||
class Author(Object):
|
||||
"""FreeTube author."""
|
||||
|
||||
def __init__(self, uid: str, name: str) -> None:
|
||||
"""Set uid & name.
|
||||
|
||||
:param uid: identifier
|
||||
:type uid: str
|
||||
:param name: label
|
||||
:type name: str
|
||||
"""
|
||||
self.uid = uid
|
||||
self.name = name
|
||||
self.playlist: Playlist
|
||||
|
||||
def to_db(self) -> str:
|
||||
"""Return non-breakable name.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
return self.name.replace(" ", chr(0xA0))
|
29
rwx/sw/freetube/channels.py
Normal file
29
rwx/sw/freetube/channels.py
Normal file
|
@ -0,0 +1,29 @@
|
|||
"""FreeTube channels."""
|
||||
|
||||
from rwx import Object
|
||||
|
||||
|
||||
class Channel(Object):
|
||||
"""FreeTube channel."""
|
||||
|
||||
def __init__(self, uid: str, name: str) -> None:
|
||||
"""Set uid & name.
|
||||
|
||||
:param uid: unique identifier
|
||||
:type uid: str
|
||||
:param name: label
|
||||
:type name: str
|
||||
"""
|
||||
self.uid = uid
|
||||
self.name = name
|
||||
|
||||
def to_db(self) -> str:
|
||||
"""Return identifier as db.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
return f"""\
|
||||
{{\
|
||||
"id":"{self.uid}"\
|
||||
}}\
|
||||
"""
|
21
rwx/sw/freetube/db.py
Normal file
21
rwx/sw/freetube/db.py
Normal file
|
@ -0,0 +1,21 @@
|
|||
"""Output FreeTube db."""
|
||||
|
||||
|
||||
def to_db(value: object) -> str:
|
||||
"""Render value as string.
|
||||
|
||||
:param value: value to render
|
||||
:type value: object
|
||||
:rtype: str
|
||||
"""
|
||||
match value:
|
||||
case bool():
|
||||
text = str(value).lower()
|
||||
case dict():
|
||||
sub = ",".join([f'"{i}":{to_db(v)}' for i, v in value.items()])
|
||||
text = f"{{{sub}}}"
|
||||
case float() | str():
|
||||
text = f'"{value}"'
|
||||
case _:
|
||||
text = str(value)
|
||||
return text
|
24
rwx/sw/freetube/languages.py
Normal file
24
rwx/sw/freetube/languages.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
"""FreeTube languages."""
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from rwx import Object
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .playlists import Playlist
|
||||
|
||||
|
||||
class Language(Object):
|
||||
"""FreeTube language."""
|
||||
|
||||
def __init__(self, uid: str, name: str) -> None:
|
||||
"""Set uid & name.
|
||||
|
||||
:param uid: identifier
|
||||
:type uid: str
|
||||
:param name: label
|
||||
:type name: str
|
||||
"""
|
||||
self.uid = uid
|
||||
self.name = name
|
||||
self.playlist: Playlist
|
47
rwx/sw/freetube/playlists.py
Normal file
47
rwx/sw/freetube/playlists.py
Normal file
|
@ -0,0 +1,47 @@
|
|||
"""FreeTube playlists."""
|
||||
|
||||
from rwx import Object
|
||||
|
||||
from .videos import Video
|
||||
|
||||
|
||||
class Playlist(Object):
|
||||
"""FreeTube playlist."""
|
||||
|
||||
def __init__(self, uid: str, name: str) -> None:
|
||||
"""Set uid & name.
|
||||
|
||||
:param uid: identifier
|
||||
:type uid: str
|
||||
:param name: label
|
||||
:type name: str
|
||||
"""
|
||||
self.uid = uid
|
||||
self.name = name
|
||||
self.videos: list[Video] = []
|
||||
|
||||
def add(self, video: Video) -> None:
|
||||
"""Add video.
|
||||
|
||||
:param video: video to add
|
||||
:type video: Video
|
||||
"""
|
||||
self.videos.append(video)
|
||||
|
||||
def to_db(self) -> str:
|
||||
"""Return identifier, name & videos.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
videos = ",".join([video.to_db() for video in self.videos])
|
||||
return f"""\
|
||||
{{\
|
||||
"_id":"{self.uid}"\
|
||||
,\
|
||||
"playlistName":"{self.name}"\
|
||||
,\
|
||||
"protected":true\
|
||||
,\
|
||||
"videos":[{videos}]\
|
||||
}}\
|
||||
"""
|
45
rwx/sw/freetube/profiles.py
Normal file
45
rwx/sw/freetube/profiles.py
Normal file
|
@ -0,0 +1,45 @@
|
|||
"""FreeTube profiles."""
|
||||
|
||||
from rwx import Object
|
||||
|
||||
from .channels import Channel
|
||||
|
||||
|
||||
class Profile(Object):
|
||||
"""FreeTube profile."""
|
||||
|
||||
def __init__(self, uid: str, name: str) -> None:
|
||||
"""Set uid & name.
|
||||
|
||||
:param uid: unique identifier
|
||||
:type uid: str
|
||||
:param name: label
|
||||
:type name: str
|
||||
"""
|
||||
self.id = uid
|
||||
self.name = name
|
||||
self.channels: list[Channel] = []
|
||||
|
||||
def add(self, channel: Channel) -> None:
|
||||
"""Add channel.
|
||||
|
||||
:param channel: channel to add
|
||||
:type channel: Channel
|
||||
"""
|
||||
self.channels.append(channel)
|
||||
|
||||
def to_db(self) -> str:
|
||||
"""Return identifier, name & channels.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
channels = ",".join([channel.to_db() for channel in self.channels])
|
||||
return f"""\
|
||||
{{\
|
||||
"_id":"{self.id}"\
|
||||
,\
|
||||
"name":"{self.name}"\
|
||||
,\
|
||||
"subscriptions":[{channels}]\
|
||||
}}\
|
||||
"""
|
33
rwx/sw/freetube/settings.py
Normal file
33
rwx/sw/freetube/settings.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
"""FreeTube settings."""
|
||||
|
||||
from rwx import Object
|
||||
|
||||
from .db import to_db
|
||||
|
||||
|
||||
class Setting(Object):
|
||||
"""FreeTube setting."""
|
||||
|
||||
def __init__(self, uid: str, value: object) -> None:
|
||||
"""Set uid & value.
|
||||
|
||||
:param uid: unique identifier
|
||||
:type uid: str
|
||||
:param value: value
|
||||
:type value: object
|
||||
"""
|
||||
self.uid = uid
|
||||
self.value = value
|
||||
|
||||
def to_db(self) -> str:
|
||||
"""Return uid & value as db string.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
return f"""\
|
||||
{{\
|
||||
"_id":"{self.uid}"\
|
||||
,\
|
||||
"value":{to_db(self.value)}\
|
||||
}}\
|
||||
"""
|
33
rwx/sw/freetube/videos.py
Normal file
33
rwx/sw/freetube/videos.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
"""FreeTube videos."""
|
||||
|
||||
from rwx import Object
|
||||
|
||||
|
||||
class Video(Object):
|
||||
"""FreeTube video."""
|
||||
|
||||
def __init__(self, uid: str, name: str) -> None:
|
||||
"""Set id & name.
|
||||
|
||||
:param uid: identifier
|
||||
:type uid: str
|
||||
:param name: label
|
||||
:type name: str
|
||||
"""
|
||||
self.uid = uid
|
||||
self.name = name
|
||||
|
||||
def to_db(self) -> str:
|
||||
"""Return identifier, zero length & title.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
return f"""\
|
||||
{{\
|
||||
"videoId":"{self.uid}"\
|
||||
,\
|
||||
"lengthSeconds":0\
|
||||
,\
|
||||
"title":"{self.name}"\
|
||||
}}\
|
||||
"""
|
Loading…
Add table
Add a link
Reference in a new issue