IPB

Welcome Guest ( Log In | Register )

104 Pages V  « < 84 85 86 87 88 > »   
Reply to this topicStart new topic
Album Art Downloader XUI, A tool for downloading cover art
dudleyheinsberge...
post Jun 4 2012, 20:31
Post #2126





Group: Members
Posts: 2
Joined: 4-June 12
Member No.: 100415



I have a problem with this software. Every time I open it it just displays a blank screen, sometimes black ermm.gif
Go to the top of the page
+Quote Post
AlexVallat
post Jun 5 2012, 07:50
Post #2127





Group: Developer
Posts: 1072
Joined: 31-July 06
Member No.: 33465



QUOTE (dudleyheinsbergen @ Jun 4 2012, 20:31) *
Every time I open it it just displays a blank screen, sometimes black

Hmm. Could be a graphics driver issue, I suppose - try updating to the latest version of the drivers for your graphics card. Other than that, there's not much I can suggest, it's outside the control of the AAD itself. Sorry,

Alex
Go to the top of the page
+Quote Post
dudleyheinsberge...
post Jun 5 2012, 19:56
Post #2128





Group: Members
Posts: 2
Joined: 4-June 12
Member No.: 100415



It's working now for some reason!
Go to the top of the page
+Quote Post
MordredKLB
post Jun 12 2012, 19:53
Post #2129





Group: Members
Posts: 198
Joined: 1-May 09
From: Austin, TX
Member No.: 69413



Alex, is there any way to retrieve the n from "Limit to n Results" setting? I'm working on a script for a site that needs to log out whenever the script is finished running... however I realized that if my n is set to 10 and I get more than 10 results, when I attempt to call results.Add for #11 the script just terminates instantly and I have no ability to logout. All my future searches on that site fail until I close all AAD windows and restart. If I could keep a count and skip calling results.Add when count > n I wouldn't have this problem.

Thanks.
Go to the top of the page
+Quote Post
AlexVallat
post Jun 12 2012, 20:22
Post #2130





Group: Developer
Posts: 1072
Joined: 31-July 06
Member No.: 33465



QUOTE (MordredKLB @ Jun 12 2012, 19:53) *
Alex, is there any way to retrieve the n from "Limit to n Results" setting?
Sorry, I'm afraid there isn't. There probably should be, though, it would be useful for some sources where you can specify how many results you want when requesting them from the server.

For your situation, however, what I would recommend would be the try/finally pattern (try/ensure in boo), to ensure you log out not only if the limit number of results is reached, but also if the user hits Stop. Wrap your results loop something like:

CODE
try:
  for resultMatch in resultMatches:
    results.Add(...)  
ensure:
  DoLogout();

I hope this helps,

Alex
Go to the top of the page
+Quote Post
MordredKLB
post Jun 12 2012, 21:56
Post #2131





Group: Members
Posts: 198
Joined: 1-May 09
From: Austin, TX
Member No.: 69413



That helps a lot, thanks. I'm now logging out correctly no matter what.

Unfortunately there's still some weirdness that happens here. Whenever my search results are greater than the n limit, any future searches on that site fail (progress bar never ends). Apparently logging out didn't fix that problem like I thought it would. For reference this script logs in to a site, retrieves the cookies, and passes those along with the searches. Any ideas/suggestions as to maybe what's going wrong so I don't have to always close AAD and relaunch?
Go to the top of the page
+Quote Post
AlexVallat
post Jun 13 2012, 07:54
Post #2132





Group: Developer
Posts: 1072
Joined: 31-July 06
Member No.: 33465



QUOTE (MordredKLB @ Jun 12 2012, 21:56) *
Whenever my search results are greater than the n limit, any future searches on that site fail (progress bar never ends).
Well that's odd... I assume the same thing happens when the Stop command is used before it finishes?

The script class is only instantiated once (until AAD is restarted), so you could keep the login cookies in a member variable rather than needing to log in with each search; that might help.

Is it a public server? If you PM me the script I can give it a try and see if I notice any reason for that behaviour. Otherwise, the only thing I can suggest is to use Fiddler2 to monitor the http response of the server for search requests, and see if that gives any clues.

Alex
Go to the top of the page
+Quote Post
MC Escher
post Jun 13 2012, 11:05
Post #2133





Group: Members
Posts: 151
Joined: 12-May 04
Member No.: 14050



Bump with a fresh crashlog:
CODE
Album Art Downloader has encountered a fatal error, and has had to close.
If you wish to report this error, please include this information, which
has been written to the file: D:\Program Files\AlbumArtDownloader\errorlog.txt

App version: 0.44.0.0, running on Microsoft Windows NT 6.1.7601 Service Pack 1 (64 bit)

System.Windows.Markup.XamlParseException: Kan bestand of assembly PresentationFramework.Classic, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 of een van de afhankelijkheden hiervan niet laden. De parameter is onjuist. (Uitzondering van HRESULT: 0x80070057 (E_INVALIDARG)) Fout bij object System.Windows.Controls.ControlTemplate in opmaakbestand Controls/Xaml/ArtPanel.generic.xaml. ---> System.IO.FileLoadException: Kan bestand of assembly PresentationFramework.Classic, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 of een van de afhankelijkheden hiervan niet laden. De parameter is onjuist. (Uitzondering van HRESULT: 0x80070057 (E_INVALIDARG))
Bestandsnaam: PresentationFramework.Classic, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
bij System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
bij System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
bij System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
bij System.Reflection.Assembly.Load(String assemblyString)
bij System.Windows.Markup.ReflectionHelper.LoadAssemblyHelper(String assemblyGivenName, String assemblyPath)
bij System.Windows.Markup.BamlMapTable.GetAssemblyFromAssemblyInfo(BamlAssemblyInfoRecord assemblyInfoRecord)
bij System.Windows.Markup.BamlMapTable.GetTypeFromTypeInfo(BamlTypeInfoRecord typeInfo)
bij System.Windows.Markup.BamlMapTable.GetTypeFromId(Int16 id)
bij System.Windows.Markup.OptimizedTemplateContent.CheckElementStartForOptimization(BamlRecord bamlRecord)
bij System.Windows.Markup.OptimizedTemplateContent.ReadRecord(BamlRecord bamlRecord)
bij System.Windows.Markup.TemplateBamlRecordReader.AddContentRecord(BamlRecord bamlRecord)
bij System.Windows.Markup.TemplateBamlRecordReader.ReadElementStartRecord(BamlElementStartRecord bamlElementStartRecord)
bij System.Windows.Markup.TemplateBamlRecordReader.ReadRecord(BamlRecord bamlRecord)
bij System.Windows.Markup.BamlRecordReader.Read(Boolean singleRecord)
bij System.Windows.Markup.TemplateTreeBuilderBamlTranslator.ParseFragment()
bij System.Windows.Markup.TreeBuilder.Parse()
bij System.Windows.Markup.XamlTemplateSerializer.ConvertBamlToObject(BamlRecordReader reader, BamlRecord bamlRecord, ParserContext context)
bij System.Windows.Markup.BamlRecordReader.ReadElementStartRecord(BamlElementStartRecord bamlElementRecord)
bij System.Windows.Markup.StyleBamlRecordReader.ReadElementStartRecord(BamlElementStartRecord bamlElementRecord)
bij System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord)


--- Einde van intern uitzonderingsstackpad ---
bij System.Windows.Markup.XamlParseException.ThrowException(String message, Exception innerException, Int32 lineNumber, Int32 linePosition, Uri baseUri, XamlObjectIds currentXamlObjectIds, XamlObjectIds contextXamlObjectIds, Type objectType)
bij System.Windows.Markup.XamlParseException.ThrowException(ParserContext parserContext, Int32 lineNumber, Int32 linePosition, String message, Exception innerException)
bij System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord)
bij System.Windows.Markup.StyleBamlRecordReader.ReadRecord(BamlRecord bamlRecord)
bij System.Windows.Markup.BamlRecordReader.Read(Boolean singleRecord)
bij System.Windows.Markup.StyleTreeBuilderBamlTranslator.ParseFragment()
bij System.Windows.Markup.TreeBuilder.Parse()
bij System.Windows.Markup.XamlStyleSerializer.ConvertBamlToObject(BamlRecordReader reader, BamlRecord bamlRecord, ParserContext context)
bij System.Windows.Markup.BamlRecordReader.ReadElementStartRecord(BamlElementStartRecord bamlElementRecord)
bij System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord)
bij System.Windows.Markup.BamlRecordReader.ReadElement(Int64 startPosition, XamlObjectIds contextXamlObjectIds, Object dictionaryKey)
bij System.Windows.ResourceDictionary.CreateObject(Int32 valuePosition, Object key)
bij System.Windows.ResourceDictionary.RealizeDeferContent(Object key, Object& value, Boolean& canCache)
bij System.Windows.ResourceDictionary.GetValueWithoutLock(Object key, Boolean& canCache)
bij System.Windows.ResourceDictionary.GetValue(Object key, Boolean& canCache)
bij System.Windows.ResourceDictionary.GetValueWithoutLock(Object key, Boolean& canCache)
bij System.Windows.ResourceDictionary.GetValue(Object key, Boolean& canCache)
bij System.Windows.SystemResources.LookupResourceInDictionary(ResourceDictionary dictionary, Object key, Boolean allowDeferredResourceReference, Boolean mustReturnDeferredResourceReference, Boolean& canCache)
bij System.Windows.SystemResources.FindDictionaryResource(Object key, Type typeKey, ResourceKey resourceKey, Boolean isTraceEnabled, Boolean allowDeferredResourceReference, Boolean mustReturnDeferredResourceReference, Boolean& canCache)
bij System.Windows.SystemResources.FindResourceInternal(Object key, Boolean allowDeferredResourceReference, Boolean mustReturnDeferredResourceReference)
bij System.Windows.StyleHelper.GetThemeStyle(FrameworkElement fe, FrameworkContentElement fce)
bij System.Windows.FrameworkElement.UpdateThemeStyleProperty()
bij System.Windows.FrameworkElement.OnInitialized(EventArgs e)
bij System.Windows.Markup.BamlRecordReader.ElementEndInit(Object& element)
bij System.Windows.Markup.BamlRecordReader.ReadElementEndRecord(Boolean fromNestedBamlRecordReader)
bij System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord)
bij System.Windows.StyleHelper.LoadOptimizedTemplateContent(DependencyObject container, ParserContext parserContext, OptimizedTemplateContent optimizedTemplateContent, FrameworkTemplate frameworkTemplate, IComponentConnector componentConnector, IStyleConnector styleConnector, List`1 affectedChildren, UncommonField`1 templatedNonFeChildrenField)
bij System.Windows.FrameworkTemplate.LoadContent(DependencyObject container, List`1 affectedChildren, UncommonField`1 templatedNonFeChildrenField)
bij System.Windows.StyleHelper.ApplyTemplateContent(UncommonField`1 dataField, DependencyObject container, FrameworkElementFactory templateRoot, Int32 lastChildIndex, HybridDictionary childIndexFromChildID, FrameworkTemplate frameworkTemplate)
bij System.Windows.FrameworkTemplate.ApplyTemplateContent(UncommonField`1 templateDataField, FrameworkElement container)
bij System.Windows.FrameworkElement.ApplyTemplate()
bij System.Windows.FrameworkElement.MeasureCore(Size availableSize)
bij System.Windows.UIElement.Measure(Size availableSize)
bij System.Windows.Controls.WrapPanel.MeasureOverride(Size constraint)
bij System.Windows.FrameworkElement.MeasureCore(Size availableSize)
bij System.Windows.UIElement.Measure(Size availableSize)
bij System.Windows.ContextLayoutManager.UpdateLayout()
bij System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
bij System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
bij System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
bij System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
bij System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
bij System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
bij System.Windows.Threading.DispatcherOperation.InvokeImpl()
bij System.Threading.ExecutionContext.runTryCode(Object userData)
bij System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
bij System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bij System.Windows.Threading.DispatcherOperation.Invoke()
bij System.Windows.Threading.Dispatcher.ProcessQueue()
bij System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
bij MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
bij MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
bij System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
bij System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
bij System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter)
bij MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
bij MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
bij System.Windows.Threading.Dispatcher.TranslateAndDispatchMessage(MSG& msg)
bij System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
bij System.Windows.Application.RunInternal(Window window)
bij AlbumArtDownloader.App.AlbumArtDownloader.IPriorInstance.Run()
bij AlbumArtDownloader.InstanceMutex.RunAppAsServiceHost(IPriorInstance instance, String channelUri)
bij AlbumArtDownloader.App.Main(String[] args)
Go to the top of the page
+Quote Post
MordredKLB
post Jun 13 2012, 18:20
Post #2134





Group: Members
Posts: 198
Joined: 1-May 09
From: Austin, TX
Member No.: 69413



QUOTE (AlexVallat @ Jun 13 2012, 01:54) *
Well that's odd... I assume the same thing happens when the Stop command is used before it finishes?

The script class is only instantiated once (until AAD is restarted), so you could keep the login cookies in a member variable rather than needing to log in with each search; that might help.
Unfortunately, it's not a public server otherwise I'd share with you. I haven't tried stopping before the first search is finished, but I assume it's probably the same behavior.

When you say the script class is only instantiated once, I don't really know where should I put my login code. I assume I'm supposed to move it outside the Search function def, but I'm assuming I need to put it inside another function in the class, otherwise it'll never get called, right?
Go to the top of the page
+Quote Post
AlexVallat
post Jun 13 2012, 19:11
Post #2135





Group: Developer
Posts: 1072
Joined: 31-July 06
Member No.: 33465



QUOTE (MC Escher @ Jun 13 2012, 11:05) *
Bump with a fresh crashlog
The error reported here is that it can not load the assembly PresentationFramework.Classic. This is an integral part of WPF in .net 3.5, so I don't know why it is unavailable on your system. Unfortunately, I don't really have any good suggestions as to what you can do to resolve this, other than the generic advice to uninstall and reinstall the .net framework.

QUOTE (MordredKLB @ Jun 13 2012, 18:20) *
When you say the script class is only instantiated once, I don't really know where should I put my login code.
Personally, I'd leave it in the login code, but add a check to see if the cookie variable has already been populated by a previous search or not. That way you log in the first time your search is called, and stay logged in until AAD exits. If your script search is never called, you don't need to log in at all.

Alex
Go to the top of the page
+Quote Post
MC Escher
post Jun 13 2012, 19:48
Post #2136





Group: Members
Posts: 151
Joined: 12-May 04
Member No.: 14050



Hm, I'm on Windows 7 where .Net 3.5 is a system component, so there isn't any reinstalling to do I'm afraid. Luckily it doesn't crash every time.
Go to the top of the page
+Quote Post
MordredKLB
post Jun 13 2012, 22:15
Post #2137





Group: Members
Posts: 198
Joined: 1-May 09
From: Austin, TX
Member No.: 69413



QUOTE (AlexVallat @ Jun 13 2012, 13:11) *
Personally, I'd leave it in the login code, but add a check to see if the cookie variable has already been populated by a previous search or not. That way you log in the first time your search is called, and stay logged in until AAD exits. If your script search is never called, you don't need to log in at all.


A little more investigation. I moved the declaration of my cookieContainer to be global to the class. I then check to see if cookie.Count == 0 and if so, then I attempt to login and retrieve the cookies, otherwise I just attempt the search request. This works perfectly... except for the fact that I can no longer logout at the end (because then the cookies are invalid and I get no response from my first Get call. Unfortunately I can't just not logout because a user complained about open sessions which are retained on the server that need to be closed. Soooo... is there a finalize method that gets called on the scripts when the program is shutting down and if so, what is it's definition? That's the only place the logout stuff really needs to go IMO.

Edit: I tried it out and there is a finalize method! I wonder if I'm the only one using it smile.gif Anyway, logging out in finalize works great. There's still some weirdness I think as I was able to get it to have the weird hang at least once since, but it's possible it was timeout on the server end or something else that wasn't handled right. It's working 90% of the time and that's good enough for me.

Thanks for all your help Alex. This program is really well done.

This post has been edited by MordredKLB: Jun 13 2012, 22:33
Go to the top of the page
+Quote Post
MordredKLB
post Jun 14 2012, 16:28
Post #2138





Group: Members
Posts: 198
Joined: 1-May 09
From: Austin, TX
Member No.: 69413



I get a lot of my music from bandcamp which has somewhat recently started including really high-res artwork on their site. It comes up a lot for me in my LargeGoogleImage script I posted earlier, but I realized that I wanted a more targeted script for just bandcamp, so here it is:

https://www.dropbox.com/s/05br4is3834w5lx/bandcamp.boo

It's basically a modified google search restricted to site:bandcamp.com and using an exact artist match (i.e. quotes around the artist) to greatly restrict the results and only return images > 640x480. In playing around with it I've found that you can restrict the results to 4 or so and always get the cover you want. I wouldn't mind if it made it into the next AAD release either. smile.gif
Go to the top of the page
+Quote Post
AlexVallat
post Jun 14 2012, 18:11
Post #2139





Group: Developer
Posts: 1072
Joined: 31-July 06
Member No.: 33465



QUOTE (MC Escher @ Jun 13 2012, 19:48) *
Hm, I'm on Windows 7 where .Net 3.5 is a system component, so there isn't any reinstalling to do I'm afraid. Luckily it doesn't crash every time.

I think you can do this by going to Add/Remove, clicking Turn Windows Features On or Off, then checking or unchecking "Microsoft .NET Framework 3.5.1". Might not work anyway, but could be worth a shot. The fact that it doesn't crash every time is even more curious. If you can figure out anything different on your system (other software running? previously run?) between the times it does crash and the times it doesn't, that might also be a clue.

QUOTE (MordredKLB @ Jun 14 2012, 16:28) *

Thanks for the script. I'm afraid that from prior experience, I'm not going to include any scripts that are specialisations of google image search in AAD as I find that too often running multiple google image searches triggers their anti-robot protections. I'd recommend that if you use this one, you disable the plain google image search, or at least make one search-first. Or just take your chances, of course, but that's not good enough for including the script officially.

Bandcamp does look like a useful source though, so I'll probably do a custom script that searches it directly when I get a little time.

Alex

Go to the top of the page
+Quote Post
MC Escher
post Jun 14 2012, 18:43
Post #2140





Group: Members
Posts: 151
Joined: 12-May 04
Member No.: 14050



The weird thing is that if I try it a couple of times in a row, sometimes it will fail, sometimes it will fail with a crash log (though rarely) and sometimes it will work as normal. All in the space of seconds. I don't think I'll ever see what's different on my computer when what happens. I'll try switching .net off and on.
Go to the top of the page
+Quote Post
MordredKLB
post Jun 14 2012, 19:05
Post #2141





Group: Members
Posts: 198
Joined: 1-May 09
From: Austin, TX
Member No.: 69413



QUOTE (AlexVallat @ Jun 14 2012, 12:11) *
Thanks for the script. I'm afraid that from prior experience, I'm not going to include any scripts that are specialisations of google image search in AAD as I find that too often running multiple google image searches triggers their anti-robot protections. I'd recommend that if you use this one, you disable the plain google image search, or at least make one search-first. Or just take your chances, of course, but that's not good enough for including the script officially.

Bandcamp does look like a useful source though, so I'll probably do a custom script that searches it directly when I get a little time.

Alex
Interesting. I've never encountered their anti-robot stuff and I normally run my Google/LargeGoogle and I might still have the Google-Itunes script going as well on some computers here. I did setup the bandcamp to search first though. smile.gif

I'm not a big fan of the results from the bandcamp search (which was why I used google), but I could probably whip something up as an alternative if you wanted me to.
Go to the top of the page
+Quote Post
AlexVallat
post Jun 14 2012, 20:02
Post #2142





Group: Developer
Posts: 1072
Joined: 31-July 06
Member No.: 33465



QUOTE (MordredKLB @ Jun 14 2012, 19:05) *
I'm not a big fan of the results from the bandcamp search (which was why I used google), but I could probably whip something up as an alternative if you wanted me to.
Sure, if you get a chance to put together a native bandcamp search, I'll include it with the rest of the bundled scripts.

I had a quick look at the site, and annoyingly it doesn't seem like the ID of the full size image has any relation to the thumbnail, or any other part of the results list, so it's going to be a case of loading the page for each album in the results to extract the full size image URL.

Alex
Go to the top of the page
+Quote Post
MordredKLB
post Jun 14 2012, 23:26
Post #2143





Group: Members
Posts: 198
Joined: 1-May 09
From: Austin, TX
Member No.: 69413



QUOTE (AlexVallat @ Jun 14 2012, 14:02) *
Sure, if you get a chance to put together a native bandcamp search, I'll include it with the rest of the bundled scripts.

I had a quick look at the site, and annoyingly it doesn't seem like the ID of the full size image has any relation to the thumbnail, or any other part of the results list, so it's going to be a case of loading the page for each album in the results to extract the full size image URL.

Yup. That's annoying and there's no way to get the dimensions of the cover without downloading the full size which always bugs me.
Go to the top of the page
+Quote Post
r0k
post Jun 17 2012, 21:15
Post #2144





Group: Members
Posts: 74
Joined: 8-September 11
Member No.: 93574



Downloading Lyrics

Hi. I know the point of this application is cover art, but seeing how the lyrics downloaders i found here and through big "g" are either mp3 only, crashware or abandonware, do you think it would be possible to add a lyrics search feature?
I guess the modular, script driven nature of AAD would help implement this without complete recoding, isn't it?

This is definitely the best album art downloading application i tested. A lyrics downloader of equal quality would be great.

That being said, suggesting features is easier than coding them wink.gif
Go to the top of the page
+Quote Post
AlexVallat
post Jun 18 2012, 08:15
Post #2145





Group: Developer
Posts: 1072
Joined: 31-July 06
Member No.: 33465



QUOTE (r0k @ Jun 17 2012, 21:15) *
Downloading Lyrics

Thanks for the suggestion - I'm not really sure how good a fit it is, a lot of AAD is designed around showing the artwork that it finds, and helping you choose the best one. I suppose you could do a script that would just give blank images and lyrics files instead of image files, it wouldn't be a great UI for it, but it would work.

Unfortunately I have no idea about the actual lyrics downloading; are they special files with embedded timing information, or just text? Are they even files for download, or are you talking about scraping text of html pages? Are there sites offering lyrics for download, and how friendly or otherwise are they to automated access? This just isn't my area of expertise, I'm afraid, but if anyone who is interested wants to work on it and wants some help, let me know.

Alex
Go to the top of the page
+Quote Post
r0k
post Jun 18 2012, 15:07
Post #2146





Group: Members
Posts: 74
Joined: 8-September 11
Member No.: 93574



Thank you for considering the suggestion

I had a closer look on several sites while writing the answer. I might have found why so many lyrics grabbers died out. It looks like some copyright issues forced the lyrics sites to pay royalties for lyrics shown. This means they now need to use javascript to keep track of lyrics displayed and full lyrics can't be accessed using pure HTML (they are not in the source code). Even when they offer easy-to print lyrics, it's generated using java script.
I guess it's "game over" for this idea.

Probably useless original answer follows
QUOTE (AlexVallat @ Jun 18 2012, 09:15) *
I'm not really sure how good a fit it is, a lot of AAD is designed around showing the artwork that it finds, and helping you choose the best one.

Yep. The best of the best would be to display a sample of the text instead of images. I don't know how hard it would be, i have no experience in C#, using JScript and GDI, it's possible to "render" some text and show it as an image but WSH does a lot of the work in this case. Of course, this point is only worth discussing if it's actually possible to grab lyrics in the first place.
QUOTE
Unfortunately I have no idea about the actual lyrics downloading; are they special files with embedded timing information, or just text? Are they even files for download, or are you talking about scraping text of html pages?

Both and both huh.gif
Lyrics come in two format, synchronized and raw. Raw is just plain text, can be saved as txt or anything or embedded (but i don't care about embedding, this can be done with other applications). Synced is plain text with some time "tag" at the start of every line and are often saved as lrc files. Those are just plain text with a different extension. Here's the start of an lrc file i synced some time ago.
CODE
[ar: Kingfisher Sky]
  
   [ti: Rise From The Flames]
  
   [al: Skin of the Earth]
  
   [length: 03:37]
  
   [00:17.44]There you are, down on the ground
  
   [00:23.52]Curled up and weary
  
   [00:26.33]Buried your face inside your hands
  
   [00:31.96]So grey and dark

As for downloading, i think there are (or used to be at least) some sites offering file downloads, but most need to be parsed. And of course, parsing would be different for every site as they can't all use a standard format mad.gif
QUOTE
Are there sites offering lyrics for download, and how friendly or otherwise are they to automated access? This just isn't my area of expertise, I'm afraid, but if anyone who is interested wants to work on it and wants some help, let me know.

There are plenty of such sites out there blink.gif Their level of friendlyness is probably variable too. I guess it's not too different for images.

As for the parsing, i've found a python script that works with amarok and some other Linux players that can retreive lyrics for the playing song and parse the websites, but it uses a python module to parse automatically so it's not possible to copy-paste-translate some parsing code.
Go to the top of the page
+Quote Post
borisag
post Jun 19 2012, 20:31
Post #2147





Group: Members
Posts: 4
Joined: 19-June 12
Member No.: 100833



Hello
First of all i want to thank the author for this program.
I don't know if someone has made this already but I'm gonna explain how i use AAD with Mediamonkey. I want to thank also g.p.m for his post in this forum (page 62) of how to use AAD with MP3tag.
First obviously you have to have installed Mediamonkey and its script ExternalTools by Steegy (download in here http://home.scarlet.be/ruben.castelein/MM/...alTools14.mmip).
Now in Mediamonkey Tools menu choose Options, and ExternalTools in the General tab.
Fill the blanks as following:
Tool Name: Album Art
Description: Album Art Downloader
Shortcut: AlbumArt
Icon Path: C:\Program Files\AlbumArtDownloader\AlbumArtDownloader.ico (or the icon from the folder where you have installed AAD)
Program Path: C:\Program Files\AlbumArtDownloader\AlbumArt.exe (or the .exe from the folder where you have installed AAD)
Paramethers: /ar "%a" /al "%l" /p "%p"\%l".jpg""
Execute Tool: any option is fine in you have to search covers one by one or multiple tracks (i don't know if the program crashes with too many tracks at once)
Finally choose "Add as new" buttom at the top and OK
Now you can right clic on any track or tracks from the library and select Tools/ Album Art
Go to the top of the page
+Quote Post
AlexVallat
post Jun 20 2012, 07:51
Post #2148





Group: Developer
Posts: 1072
Joined: 31-July 06
Member No.: 33465



QUOTE (r0k @ Jun 18 2012, 15:07) *
The best of the best would be to display a sample of the text instead of images.

Certainly, that wouldn't be too hard to do in a script (rendering it into an image in the same way you mentioned). Image viewing tools would not be ideal to look at that, but better than nothing, I guess. Thanks for the additional information on the lyrics. If there's already a script which works, then that's quite interesting, it proves it's possible, at least.

QUOTE (borisag @ Jun 19 2012, 20:31) *
i don't know if the program crashes with too many tracks at once

Thanks for your detailed instructions! If you don't mind, I'll post them to the wiki alongside the ones for MP3Tag? AAD should very much not crash with too many tracks at once! It will, by default, do up to three searches simultaneously and queue the rest up until those are closed: Queueing Searches.

Alex
Go to the top of the page
+Quote Post
borisag
post Jun 20 2012, 16:22
Post #2149





Group: Members
Posts: 4
Joined: 19-June 12
Member No.: 100833



QUOTE (AlexVallat @ Jun 20 2012, 02:51) *
QUOTE (borisag @ Jun 19 2012, 20:31) *
i don't know if the program crashes with too many tracks at once

Thanks for your detailed instructions! If you don't mind, I'll post them to the wiki alongside the ones for MP3Tag? AAD should very much not crash with too many tracks at once! It will, by default, do up to three searches simultaneously and queue the rest up until those are closed: Queueing Searches.

Alex


Of course I don't mind. But I have to make a make a correction in Paramethers you have to fill with
/ar "%a" /al "%l" /p %p\%l.jpg (if you want to save the cover in the same folder as the .mp3 with the name of the album.jpg) or
/ar "%a" /al "%l" /p %p\folder.jpg (if you want to save the cover as folder.jpg)
A suggestion to embedd the image to the mp3 file you can use the Mediamonkey script Album art Tagger created by Trixmoto or the program Mp3Tag
Go to the top of the page
+Quote Post
borisag
post Jun 20 2012, 16:51
Post #2150





Group: Members
Posts: 4
Joined: 19-June 12
Member No.: 100833



Hi Alex
I think the GoogleImage script isn't working.
Is it possible a Bing script also?
Thanks
Go to the top of the page
+Quote Post

104 Pages V  « < 84 85 86 87 88 > » 
Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 24th October 2014 - 12:45