Jump to content

[SOLVED] How to use two variables for File Filters in Alfred ?

Recommended Posts

I have defined two environment variables and used them to get the variables.


For example:


environment variable: fifa = 6/14/2018    and python script gives dfifa = 30

environment variable: cmu =  6/16/2018 and python script gives dcmu = 32


Now, When we use {var:dfifa} and {var:dcmu} only one variable works.


The workflow is shared in github.


How can we fix the problem ? Thanks.

Edited by Bhishan
Link to post

Firstly, I'm moving this topic to Workflow Help & Questions.


You need to run the scripts one after another, not in parallel:




If you run them in parallel, they don't complete at the same time. One of the paths will activate the List Filter before the other has finished, which is why only one variable is set.


It would make more sense to just have a single script (seeing as they're basically duplicates) that sets multiple variables.


Edited by deanishe
Link to post



@deanishe  I would love to use single script

But the problem is two values are combined into single variable and they can not be used separately.


Here is the python script to print two numbers: 

from __future__ import with_statement, print_function, division
import sys
import os
import datetime
date_format = "%m/%d/%Y"

# Using variables
cmu = os.getenv('fifa')

# Calulating days difference
today_str = datetime.date.today().strftime(date_format)
today = datetime.datetime.strptime(today_str, date_format)

someday = datetime.datetime.strptime(cmu, date_format)
days_diff = abs((someday - today).days)

# print will give output
print('Days Until FIFA:', days_diff)

If I use:


print(30,40) # Just for practice

It will give {query} = 30,40  and How can we use 30 and 40 separately in File Action ?


Edited by Bhishan
Link to post

@deanishe  Thanks for the reference.


That's a great article, but unfortunately, there is no example workflow to execute the theory explained.


Feature Request: If there are some simple example workflow it would be great and a lot of new users will benefit from them.


I tried to follow exactly the instruction and printed given format in python, but to no avail:


import sys

output = """
{"alfredworkflow:" {
"arg": "https://www.google.com",
"variables": {"browser": "Google Chrome"}}}


In bash script:

echo $browser > ~/hello.txt


It did not print the google chrome in  ~/hello.txt.


I have uploaded the workflow here

Edited by Bhishan
Link to post
32 minutes ago, Bhishan said:

printed given format in python


You don't create JSON in Python using strings. You don't do it in any language. You use a proper JSON library, or you will mess it up:


import json
import sys

browser = 'Google Chrome'
arg = 'https://www.google.com'

data = {'arg': arg, 'variables': {'browser': browser}}

json.dump({'alfredworkflow': data}, sys.stdout)


Also, use Alfred's debugger. It told you precisely what was wrong with your script.

Edited by deanishe
Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...