Skip to content

Commit

Permalink
edit_playlist(): Allow moving title to bottom of playlist (#602)
Browse files Browse the repository at this point in the history
* Allow moving title to bottom of playlist

* test_edit_playlist fixed & extended

* add labeled coverage workflow run for external PRs

* add labeled coverage workflow run for external PRs

* add labeled coverage workflow run for external PRs

* add another pr target workflow

---------

Co-authored-by: Ricardo <ric.ce.br@gmail.com>
Co-authored-by: sigma67 <sigma67.github@gmail.com>
  • Loading branch information
3 people authored Jun 17, 2024
1 parent 33098ba commit 11823d6
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 15 deletions.
47 changes: 47 additions & 0 deletions .github/workflows/coverage-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Code coverage

on:
pull_request_target:
paths:
- ytmusicapi/**
- tests/**

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Setup PDM
uses: pdm-project/setup-pdm@v4
- name: create-json
uses: jsdaniell/create-json@v1.2.3
with:
name: "oauth.json"
dir: "tests/"
json: ${{ secrets.OAUTH_JSON }}
- name: Install dependencies
run: pdm install
- name: Generate coverage report
env:
HEADERS_AUTH: ${{ secrets.HEADERS_AUTH }}
TEST_CFG: ${{ secrets.TEST_CFG }}
run: |
curl -o tests/test.mp3 https://www.kozco.com/tech/piano2-CoolEdit.mp3
cat <<< "$HEADERS_AUTH" > tests/browser.json
cat <<< "$TEST_CFG" > tests/test.cfg
(echo "===== tests attempt: 1 ====" && pdm run pytest) || \
(echo "===== tests attempt: 2 ====" && pdm run pytest)
pdm run coverage xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
file: coverage.xml
flags: unittests
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
4 changes: 1 addition & 3 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ on:
paths:
- ytmusicapi/**
- tests/**
pull_request:
branches:
- main
pull_request_target:
paths:
- ytmusicapi/**
- tests/**
Expand Down
16 changes: 12 additions & 4 deletions tests/mixins/test_playlists.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def test_get_playlist_owned(self, config, yt_brand):

def test_edit_playlist(self, config, yt_brand):
playlist = yt_brand.get_playlist(config["playlists"]["own"])
response = yt_brand.edit_playlist(
response1 = yt_brand.edit_playlist(
playlist["id"],
title="",
description="",
Expand All @@ -76,8 +76,8 @@ def test_edit_playlist(self, config, yt_brand):
playlist["tracks"][0]["setVideoId"],
),
)
assert response == "STATUS_SUCCEEDED", "Playlist edit failed"
yt_brand.edit_playlist(
assert response1 == "STATUS_SUCCEEDED", "Playlist edit 1 failed"
response2 = yt_brand.edit_playlist(
playlist["id"],
title=playlist["title"],
description=playlist["description"],
Expand All @@ -87,7 +87,15 @@ def test_edit_playlist(self, config, yt_brand):
playlist["tracks"][1]["setVideoId"],
),
)
assert response == "STATUS_SUCCEEDED", "Playlist edit failed"
assert response2 == "STATUS_SUCCEEDED", "Playlist edit 2 failed"
response3 = yt_brand.edit_playlist(
playlist["id"],
title=playlist["title"],
description=playlist["description"],
privacyStatus=playlist["privacy"],
moveItem=playlist["tracks"][0]["setVideoId"],
)
assert response3 == "STATUS_SUCCEEDED", "Playlist edit 3 failed"

def test_end2end(self, yt_brand, sample_video):
playlist_id = yt_brand.create_playlist(
Expand Down
16 changes: 8 additions & 8 deletions ytmusicapi/mixins/playlists.py
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ def edit_playlist(
title: Optional[str] = None,
description: Optional[str] = None,
privacyStatus: Optional[str] = None,
moveItem: Optional[Tuple[str, str]] = None,
moveItem: Optional[Union[str, Tuple[str, str]]] = None,
addPlaylistId: Optional[str] = None,
addToTop: Optional[bool] = None,
) -> Union[str, Dict]:
Expand Down Expand Up @@ -358,13 +358,13 @@ def edit_playlist(
actions.append({"action": "ACTION_SET_PLAYLIST_PRIVACY", "playlistPrivacy": privacyStatus})

if moveItem:
actions.append(
{
"action": "ACTION_MOVE_VIDEO_BEFORE",
"setVideoId": moveItem[0],
"movedSetVideoIdSuccessor": moveItem[1],
}
)
action = {
"action": "ACTION_MOVE_VIDEO_BEFORE",
"setVideoId": moveItem if isinstance(moveItem, str) else moveItem[0],
}
if isinstance(moveItem, tuple) and len(moveItem) > 1:
action["movedSetVideoIdSuccessor"] = moveItem[1]
actions.append(action)

if addPlaylistId:
actions.append({"action": "ACTION_ADD_PLAYLIST", "addedFullListId": addPlaylistId})
Expand Down

0 comments on commit 11823d6

Please sign in to comment.