Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: YouTube Track Manager Discussion (Read 36698 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Re: YouTube Track Manager Discussion

Reply #50
Wow, amazing !!! I've been looking for a plugin that does something like this. And it works like a charm !!!

I'm wondering what is your next step ?
I've been using an old marc2003 script for a Musicbrainz list of all the artist albums that also gives a musicbrainz link for example:
https://musicbrainz.org/release-group/c1163e02-afd5-4455-9179-5161c6d2b125

I'm wondering if you ever plan to add something like that ? An option in the panel properties so when you click on something instead of it being added to your playlist it opens a browser and goes to the correct page on the musicbrainz site. 

My apologies if it's a rude to ask.
You already have my gratitude for your awesome work  :) !!


Re: YouTube Track Manager Discussion

Reply #51
New Version: YouTube Track Manager 3.6

Download link: YouTube Track Manager 3.6

CHANGELOG

Updated requirements

CHG: JScript panel 1.1.6.2+ - required
CHG: foo_youtube_preconf 1.17.3+ - recommended (more info here)
Thanks to 3dyd & marc2003 for new features / enhancements to these plugins.

Nowplaying display

CHG: Better integration with foo_youtube video player:
- Auto fall back to artist photos / album art (+/- text info), if no video
- Auto show better synchronized

CHG: Status button now shows mode:
    yT - YouTube Track Manager Text mode
    yI - YouTube Track Manager Image mode
    yV - YouTube Track Manager Video mode

Set mode with mouse:
    Status button:
        Left click: toggles "nowplaying" vs "album manager" display
        Middle click (nowplaying panel): toggles "Video" vs "Image" mode
    Image / Info:
        Left click: toggles display of cover or YouTube images vs artist photos or info type
        Middle click: toggles show / hide info
    Middle button actions are also on "Manage" menu

For best video results:
- Set show and hide video frame "Manually" ("foobar2000\Preferences\Tools\Youtube source\Video")
- Overlay the video player on top of YouTube Track Manager. Position and size as required.
- In the video player right click menu it's recommended to enable:
    - window: Lock relative to main window
    - window: Show video only
    - Fix to current

Add locations

CHG: The newly enhanced plman.AddLocations method for adding locations is now the default method. The foobar2000 add locations method is still available (set in panel properties: "ADV.Add Locations..."), at least while the new method is fully evaluated.

Musicbrainz release group

ADD: Alt + left click of an album name in MusicBrainz mode now opens the release group at the MusicBrainz site. The standard left button click action is unchanged.

Panel properties

CHG: A few panel properties will be reset & redundant removed; this effects the nowplaying font name & size + whether or not custom colours are enabled.

Re: YouTube Track Manager Discussion

Reply #52
New Version:  YouTube Track Manager 3.7

FIX: Path parsing issue that might affect a few users.

Re: YouTube Track Manager Discussion

Reply #53
I tried to play with the Regex expressions for the Youtube 'Live' Filter. As I understand, the regex expressions for the title or the description under "ADV.YouTube 'Live' Filter Title" and "ADV.YouTube 'Live' Filter Description" exclude the matched youtube titles from the playlist. I guess that would mean that typing [a-zA-Z] in both fields would exclude basically all youtube tracks. However, I did not see any change in the Radio track list (for example when searching for Chaka Khan | Ain't Nobody). I am not sure if that behavior is due to the auto-disable if searching YouTube requires a keyword - I don't really know in which cases YT requires a keyword... It is as well not clear to me what is meant by the suggestion to check keywords with the album list filter.
 Any just another question: is it possible to copy the full list of the radio songs (e.g. 125 titles) in one instance to a playlist?

Still apprechiate your work very much!!

Re: YouTube Track Manager Discussion

Reply #54
@MojoBass

If the search_title contains a keyword in the YouTube Track Manager Live filter, the filter will auto-disable, e.g. if you're searching for "XXX (live)", you want a live version and so the results will not be filtered for "(live)". With regex [a-zA-Z] you're essentially saying if the search_title contains a-z or A-Z, switch off the filter - so it will pretty much always switch off. So yes it's the "auto-disable if searching YouTube requires a keyword".

Checking keywords in album list filter is one possible way of quickly checking their specificity. If it finds lots of tracks its a bad keyword, e.g. "live" on its own has too many false matches. Although the YouTube Track Manager filter would auto-disable say if "live" is a keyword in the YouTube Track Manager filter & searched for "I live here", "I live here (live)" would then be accepted. But if the keyword was "(live)", i.e. with the parentheses, then "I live here" would be accepted and "I live here (live)" would be  rejected.

Regarding copying a list of 125 radio songs. If they're in a playlist then you can use normal playlist handling methods. But if what you mean is you want to do 125 searches in one go, then no. It just results in too many calls in one go to remote servers.

Re: YouTube Track Manager Discussion

Reply #55
Hello WilB,
thanks for your answer! But probably I am too dumb but I think I still did not really get it...

I try to make an example to explain what I try to do:
When I do radio search (e.g. via New Radio/Search for Similar Songs/Chaka Khan | Ain't Nobody), I would like to restrict the youtube results to youtube titles, that contain a specific keyword (like 'vevo') either in the title or the description (on top of your LastFM-based selection algorithm - which is great!)
My understanding of the fields "ADV.YouTube 'Live' Filter Title" and "ADV.YouTube 'Live' Filter Description" is that all matches with YT title or YT description are excluded.
Therefore, the phrase
Code: [Select]
^((?!vevo).)*$
should give only YT tracks who have 'vevo' in the title or descripton (and - of course - match the LastFM-based selection process from your code).
So yes it's the "auto-disable if searching YouTube requires a keyword".
Is there a way to switch off the auto-disable to ensure the above behaviour?

Regarding copying a list of 125 radio songs. If they're in a playlist then you can use normal playlist handling methods.
Again I refer to the above example:
If I do a Radio search (e.g. via New Radio/Search for Similar Songs/Chaka Khan | Ain't Nobody) with the selection 'Tracks: popular', the display of the YTTM window shows me, that there are 125 matches (which is good :-)). In the playlist 'Radio', I see a max of 25 titles from the overall title pool of 125 tracks (which is good for me as well, as the Radio playlist is automatically filled up when playing). Of course it is easy to copy the 25 tracks from the playlist 'Radio' to any other playlist with standard foobar handling.
However, I would like to copy all 125 tracks e.g. to 'my_playlist' in one instance. As I could not find any YTTM-playlist containing all 125 tracks, I still do not know how this could be done...

Re: YouTube Track Manager Discussion

Reply #56
New Version: YouTube Track Manager 3.8

Thanks for the feedback.

CHANGELOG

CHG: Improved default handling of m-TAGS albums. Dead YouTube links are now auto-replaced where possible (must have the script default !!.tags suffix). Auto-synchronisation is particularly useful if m-TAGs files are loaded into the media library. As this is a new feature, consider backing up any m-TAGS created by YouTube Track Manager. m-TAGs can be auto created, as before, by album manager from MusicBrainz & last.fm album track lists.

m-TAGS are checked daily on playing a new m-TAGS file. Dead library track references in m-TAGS can also be auto-replaced where possible (default off). Enable/disable auto-replace in panel properties: ADV.m-TAGS...".

ADD: Customisable scrollbars (panel properties).

CHG: Zoom. Ctrl + Alt + mouse wheel are now required to zoom the font and button sizes on mouse over rather than just Ctrl + mouse wheel.

ADD: Options to favour certain YouTube video types (panel properties), e.g. "vevo" videos: Enable with "ADV.YouTube 'Preference' Filter". Set keywords with "ADV.YouTube 'Preference' Keywords" (regex format). Selection requires matching a keyword, in title or description, & satisfying the normal criteria. If no match, defaults to normal method.

ADD: Ability to get links for Top 10 - 40 etc artist tracks / similar songs in addition to Top50s: set range in panel properties ("Load Menu TopTracks Size 1-50").

ADD: Ability to use your own api keys (panel properties): "ADV.API Key YouTube" + "ADV.API Key Last.fm". If both are used, script limits don't apply, e.g. "Radio Playlist..." size becomes unlimited and "Load Menu TopTracks Size..." can be > Top50, e.g. Top100 etc.


Re: YouTube Track Manager Discussion

Reply #58
Hello WilB,
I am a heavy user of this script - it is really great work!
I still try to work on narrowing the Radio selections of youtube links further down for a 'improved quailty' radio. Maybe this is sure to fail - however I am still trying...
It took me quite some time to understand that even if the 'Youtube Preference  Filter' is switched on, the Radio playlist entries are not purly entries which match the keyword (eg 'vevo') - it is more a preference to select the best fitting youtube link for a specific selected track.
I tried to change this in your code to a behaviour that only tracks are listed in the Radio playlist, where the keyword is actually found. I tried several option such as
Code: [Select]
if (index.pref_yt(video_name, video_descr) && mv != -1) return p_i; 
if (p_i == p_done) return -1;
instead of
Code: [Select]
if (index.pref_yt(video_name, video_descr) && mv != -1) return p_i; 
if (p_i == p_done) return mv;
in the this.IsGoodMatch function - however it did not work (I have to admit I am not a js programmer and your code is very sophisticated). Any hint what to change?

The other thing which would be helpful would be an (optional?) inclusion of the uploader name in the search for keywords via the 'Youtube Preference  Filter'. I would have tried to code this on my own by extending
Code: [Select]
this.pref_yt = function(title, descr) {if (title && title.match(RegExp(youtube_pref_filter, "i"))) return true; if (descr && descr.match(RegExp(youtube_pref_filter, "i"))) return true; return false;} 
  to e.g.
Code: [Select]
this.pref_yt = function(title, descr) {if (title && title.match(RegExp(youtube_pref_filter, "i"))) return true; if (descr && descr.match(RegExp(youtube_pref_filter, "i"))) return true; if (uploader && uploader.match(RegExp(youtube_pref_filter, "i"))) return true; return false;} 
- which of course does not work as the uploader data is not existing in your code. I tried as well adopt the code to make the uploader available in the code - but failed again. Any chance that you could include that in the code?
Best regards, MojoBass

Re: YouTube Track Manager Discussion

Reply #59
New Version: YouTube Track Manager 3.9

CHANGELOG

ADD: YouTube 'Preference' filter now analyses the uploader name in addition to the title and description. Use to favour certain video types, if required. Enable & set keywords with ADV.YouTube 'Preference'... in panel properties. The first priority is always to analyse YouTube search results for those that match the key search criteria, i.e. artist - title, and that aren't blocked by the "Live" filter or black list etc. The preference filter is then applied to the resulting "match list".

Keywords are in regex format (case insensitive), with // as an optional RegEx.Split. Splitters direct searching of the whole "match list" before trying the next keyword. There is no limit to the number of splitters. The foobar2000 console will report syntax errors in custom regular expressions. Examples:

vevo > prefer vevo > return first item in "match list" containing vevo
vevo|warner > prefer vevo or warner > return first item in "match list" containing either vevo OR warner
vevo//official > prefer vevo then official > return first item in "match list" containing vevo; if nothing found re-check "match list" and return first item in "match list" containing official
audio|lyric > prefer audio or lyric > return first item in "match list" containing either audio or lyric > favours videos that don't have introductions before the music starts (useful if you just listen to the audio; use just lyric for more lyric versions)
^(?=.*vevo)(?=.*lyric).*$//vevo|warner//lyric > a more complex example > runs 3 checks on the "match list", one after another, since it contains splitters:
^(?=.*vevo)(?=.*lyric).*$ > return first item in "match list" containing both vevo AND lyric
vevo|warner > if nothing found, return first item in "match list" containing either vevo OR warner
lyric > if nothing found, return first item in "match list" containing lyric

If no preference is found, the first item in "match list" is returned. Applying the preference filter to the "match list" rather than the whole YouTube search results is necessary to avoid returning wrong tracks that match a preference keyword.

If the preference filter is off, the first item in "match list" is returned.

If there are no items in the match list the first YouTube hit not blocked by the "Live" filter or black list is returned, or failing that the top YouTube hit. The track is named accordingly. Usually it will be the correct track; it's just that it's not been possible to match the artist - title name. That can arise because of inconsistencies in YouTube naming, e.g. some don't contain the artist name, or the way certain tracks are named by last.fm.

For anyone interested in refining preference keywords, "ADV.YouTube 'Preference' Verbose Log..." can be enabled. This will output the basics of what's going on to the foobar2000 console.

@MojoBass
I've added your request as described above. The possibility of restricting to "vevo only" is more problematical because lots of tracks don't have vevo videos + many artists don't seem to have any "vevo" at all. So for such tracks / artists nothing would load, when there may well be perfectly good "non-vevo" videos. In my tests on average 1 in 3 or 4 tracks had a "vevo" video, varying between ~ 2 in 3 for newer popular tracks, and ~ 1 in 10 for older music. So I think a preference filter, now improved, that retains fallback to other videos is the best option. Multiple uploaders etc can be specified. Also consider black listing any unwanted videos (simple right click) so they don't load again (provided there's an alternative). It's the most specific method.

Re: YouTube Track Manager Discussion

Reply #60
Hello WilB,
I think the added functions on filtering are great. As well the console is a great help.
The only thing: I am not too sure if the new filter machanism is working as intended. From the console it seems that I get quite some false matches. See for example this console log where I used your proposed filter ^(?=.*vevo)(?=.*lyric).*$//vevo|warner//lyric:
Code: [Select]
YouTube Track Manager: Match List. Search Artist: Björk; Search Title: It's Oh So Quiet
[
   {
      "ix": 1,
      "uploader": "Björk",
      "title": "björk - it's oh so quiet",
      "descr": "It's Oh So Quiet Directed by Spike Jonze. Written by Hans Iang/Bert Reisfeld. Published by Peer Music (UK) Ltd. ® 1995 BjörkOverseas Ltd/One Little Indian ..."
   },
   {
      "ix": 4,
      "uploader": "BjorkTv",
      "title": "Björk  - It's Oh So Quiet (Official Music Video)",
      "descr": "Directed by Spike Jonze. Written by Hans Iang/Bert Reisfeld. Published by Peer Music (UK) Ltd. ® 1995 BjörkOverseas Ltd/One Little Indian Records Ltd."
   },
   {
      "ix": 8,
      "uploader": "Ernesto Aguilera",
      "title": "Björk - It's Oh So Quiet",
      "descr": "Soon, in true high definition Directed by Spike Jonze. Written by Hans Iang/Bert Reisfeld. Published by Peer Music (UK) Ltd. ® 1995 BjörkOverseas Ltd/One ..."
   },
   {
      "ix": 19,
      "uploader": "Taratata",
      "title": "My Taratata - Nagui - Björk \"It's oh so quiet\" (Live 2005)",
      "descr": "Dans son Taratata à lui, Nagui a choisi de revoir la venue de Björk dans Taratata, reprenant le célèbre \"It's oh so quiet\". It's oh so quiet H. Lang - B. Reisfeld ..."
   },
   {
      "ix": 20,
      "uploader": "Music",
      "title": "Björk - It's Oh So Quiet - Post",
      "descr": "Björk - It's Oh So Quiet (Track 4) - Post (1995)"
   },
   {
      "ix": 21,
      "uploader": "Lip Sync Battle on Spike",
      "title": "Joel McHale performs Björk's \"It's Oh So Quiet\" | Lip Sync Battle",
      "descr": "Joel McHale (Jeff Winger, \"Community\") pulls out all the stops against former co-star Jim Rash (Dean Craig Pelton, \"Community\") during his sync of Björk's 1995 ..."
   }
]
YouTube Track Manager: Match Found. Search Artist: Björk; Search Title: It's Oh So Quiet; Video Loaded: ix: 1; Video Title: björk - it's oh so quiet
In ix:1 there is non of the keywords contained.
I checked as well keywords like '12345nevermatchthis54321', which gave a match in basically all cases. On the other hand, just using 'q' gave quite some tracks, where no match was found at all.
Could it be that the filter is matching not by word, but by letter?
Best regards, MojoBass

Re: YouTube Track Manager Discussion

Reply #61
New Version: YouTube Track Manager 3.9.1

CHANGELOG

Minor changes to YouTube 'Preference' filter. Can now choose which fields it should check. Choice of Uploader, Title & Description. Recommendation is Uploader and Title; Description may lack specificity with certain keywords like "lyric". "ADV.YouTube 'Preference' Verbose Log..." is now more informative.

@MojoBass
It seems to be working as intended. I think the console output was a bit ambiguous before & you interpreted it incorrectly. The console in the new version should be better. It can show which preference keyword is matched.

Re: YouTube Track Manager Discussion

Reply #62
Hello WilB,
thanks very much, now I got it and the plugin works great!!

Re: YouTube Track Manager Discussion

Reply #63
New Version: YouTube Track Manager 3.9.2

CHANGELOG

FIX: Compatibility with foo_youtube 2.0






Re: YouTube Track Manager Discussion

Reply #69
New Version: YouTube Track Manager 3.9.4

CHANGELOG:

ADD: Themes: dark, blend & light (right click > menu > manage > theme). Option to always use cover for blur image (Image Blur Background... [panel properties]).
ADD: Image reflection (right click > menu > manage > image). Settings: panel properties + strength can also be adjusted by shift + mouse wheel over image.
ADD: Image smooth transition effect on image change (right click > menu > manage > image).
ADD: Button Colour: Last.fm/MusicBrainz: can now be set to use neutral theme colours instead of site colours (panel properties).
ADD: MusicBrainz discography: related artists pane now has auto-associations: remembers last chosen for a particular search artist name.
FIX: Radio: optimisations.
FIX: Compatibility with JScript Panel v2.0.1.

Re: YouTube Track Manager Discussion

Reply #70
I'm not sure if this is a bug on the side of the YT Track Manager, but some artists are not recognized even if there is a corresponding page on Last.FM. May be it has something to do with unicode symbols in their names.

Example:
Artist: '2814' (note that this is unicode and not just '2814')
Example track with the said artist: https://www.youtube.com/watch?v=8OJdVsDAveE&list=PLIF1NhpQPux8pMJZogX3I40IPu8V-dH5i
Last.FM page: https://www.last.fm/ru/music/2814/

Re: YouTube Track Manager Discussion

Reply #71
I've made a few changes for the next release so that those scenarios should be better handled.

More info:

MusicBrainz discography look-ups require an mbid. If that isn't in a music file tag, as is commonly the case, or its a YT video etc,  the script has to search MusicBrainz for the mbid by artist name.

In your example, MusicBrainz uses "2814" as the artist name, and  "2814" wasn't matched due to the Unicode symbols. The result was no mbid & no auto-lookup of the MusicBrainz discography.

However, the related artist pane (click "≡") does list other close matches & "2814" was there & could have been clicked to load all. Such selections are remembered. Incidentally, last.fm also uses "2814" apparently as the main name of this artist and has a "2814" page (Quote from last.fm. "2814 (formerly known as 2814) is a collaborative project...". ).

Anyway, I've added a second MusicBrainz match test for the next release which re-checks after doing an $ascii conversion of the search artist. In your example, the auto-match then succeeds. So mbid is found & MusicBrainz discography loads. Last.fm discography then also loads. This should increase the robustness of the auto-look-ups. This method might change if a better method emerges. There may still be occasional cases where its necessary to use the related artists pane - it works with both MusicBrainz and last.fm discographies.

Last.fm discography look-ups use the mbid, and if there are no results, fall back to trying the artist name. I've fixed an issue for the next release where the fall back wasn't working under certain scenarios.

Thanks for reporting.


Re: YouTube Track Manager Discussion

Reply #73
It looks like there are some efficiency improvements in the next JScript panel version (2.0.5?) that may benefit both YouTube Track Manager & Library Tree. So I was planning to wait for that before releasing new versions.

Re: YouTube Track Manager Discussion

Reply #74
It looks like there are some efficiency improvements in the next JScript panel version (2.0.5?) that may benefit both YouTube Track Manager & Library Tree. So I was planning to wait for that before releasing new versions.
Well, same here actually :P
Though I need both updated JScript and your scripts for that...