Jump to content

alfo3311

Member
  • Posts

    3
  • Joined

  • Last visited

Posts posted by alfo3311

  1. Hi,

     

    Can I use subroutines in NSAppleScript Alfred workflows? I can't get this code to work:

    on alfred_script(q)
    
    tell application "Google Chrome"
    	repeat with t in tabs of windows
    		tell t
    			if URL starts with "http://www.youtube.com/watch" or URL starts with "https://www.youtube.com/watch" then
    
    				set new_URL to URL			
    				set new_URL to replace_chars(URL, "youtube", "yourepeat")
    				do shell script "/usr/bin/open -a '/Applications/Google Chrome.app' " & new_URL
    			
    			end if
    		end tell
    	end repeat
    end tell
    
    end alfred_script
    
    
    to replace_chars(this_text, search_string, replacement_string)
    	set AppleScript's text item delimiters to the search_string
    	set the item_list to every text item of this_text
    	set AppleScript's text item delimiters to the replacement_string
    	set this_text to the item_list as string
    	set AppleScript's text item delimiters to ""
    	return this_text
    end replace_chars
    

    Trying to debug the issue, I pasted the code in Automator (and made a few changes of course), and here's the syntax error I get:

    Google Chrome got an error: item 1 of every tab of every window doesn’t understand the “replace_chars” message.
    

    I tried putting the 'to replace_chars' subroutine in other places in the code, but it doesn't work.

     

    Any help would be grealtly appreciated it.

  2. Hi I greatly appreciated your workflow in the past. I tried to fix it but the problem doesn't seem to come from the YouTube API, but maybe I'm wrong. Here's my results so far.

     

    If I visit a YouTube page, pause the video, and type the following code in the console, it works (the video plays):

    var player = document.getElementById('movie_player');
    player.startVideo();
    
    

    When I type 'ytp' in the alfred bar though, the video doesn't play, and the console outputs 'Uncaught error: getPlayerState() not a function.' I checked on the API, the functions getPlayerState() and pauseVideo() are still there and are the same. The problem I found is that somehow the line 'var player = document.getElementById('movie_player');' in the Alfred workflow doesn't change the player variable. I tested this by typing 'player' in the Chrome console. It outputs a different default player object, for which of course there's no getPlayerState, etc. functions.

     

    My conclusion was that... I was confused. I thought maybe the default player object already present is 'protected' and can't be overridden when Alfred executes the javascript code?

     

    If you can get this action (ytp) to work, I am willing to update the rest of the workflow. 

     

    Thank you very much.

×
×
  • Create New...