Jump to content

Bhishan

Member
  • Content Count

    132
  • Joined

  • Last visited

About Bhishan

  • Rank
    Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. @vitor This time: 1. runscript applescript ``` tell application "Finder" set someSource to selection as alias list if someSource = {} then return "Select a file in Finder first" end if set theFile to item 1 of someSource as alias return quoted form of the POSIX path of theFile end tell ``` 2. utility transform ``` Transform utitliy trim space ``` 3. runscript ``` pbcopy < "${1}" ``` Error: ``` [10:24:05.982] ERROR: aa 00 copy file contents[Run Script] /Users/poudel/Library/Caches/com.runningwithcrayons.Alfred/Workflow Scripts/B0C62B8C-E0C6-4D51-BEB7-8BB2F90FCCB4: line 1: '/Users/poudel/tmp/try space/a.R': No such file or directory ``` Update: =========== I used another replace utitlity and replaced single quote to double quote: '/Users/poudel/tmp/try space/a.R' ==> "/Users/poudel/tmp/try space/a.R" Still, Alfred debugger says: [10:28:58.588] ERROR: aa 00 copy file contents[Run Script] /Users/poudel/Library/Caches/com.runningwithcrayons.Alfred/Workflow Scripts/7A7A8F20-F2F9-46BF-9D03-BCECF018944E: line 1: "/Users/poudel/tmp/try space/a.R": No such file or directory But, there is a file: /Users/poudel/tmp/try space/a.R In terminal I can type: pbcopy < "/Users/poudel/tmp/try space/a.R" This gives the string: "/Users/poudel/tmp/try space/a.R" and the command: cat "/Users/poudel/tmp/try space/a.R" | pbcopy This gives the actual contents of the file a.R in given directory. and it works in terminal.
  2. @vitor I used: javascript ``` try { decodeURI(Application('Finder').selection()[0].url()).slice(7) } catch(error) { error.message } ``` instead of applescript ``` tell application "Finder" set someSource to selection as alias list if someSource = {} then return "Select a file in Finder first" end if set theFile to item 1 of someSource as alias return quoted form of the POSIX path of theFile end tell ``` and got errror: ``` [09:56:44.050] Logging Started... [10:02:46.172] ERROR: aa 00 copy file contents[Run Script] /Users/poudel/Library/Caches/com.runningwithcrayons.Alfred/Workflow Scripts/3E16B543-3ADE-4963-93AE-BC34C6CF3007: line 1: /Users/poudel/tmp/try space/a.md : No such file or directory ``` still does not work with folder with spaces.
  3. @deanishe Thanks a lot for suggestion. My attempt was simpler than given link. I am interested in copy text files (.txt, .py, .md etc), images,pdf other types are not required. As vitor, suggested creating file action is super easy just pbcopy < "${1}" works good even for folder with spaces. But, I was attempting to create keyword (I already have file action) since it was easier to use and I didnt need to invoke file action trigger on selected file. I could simply use usual alfred command (double shift) as like in all other cases.
  4. @vitor Thanks for suggestion. 1. I used keyword to copy file contents of a file because its easier. using keyword: double tap shift on a file, type copy file contents, paste using file action: hit cmd \ on a file, search workflow copy file contents, select the workflow, paste using keyword saves invoking file action (cmd \) , I can directly use double shift to invoke Alfred command. 2. I appreciate pbcopy < "${1}", this is nicer than cat "$1" | pbcopy. I already have made file action for file copy, it works with space separated folders, but applescript keyword does not work.
  5. I was trying to create an Alfred workflow using which I can copy the contents of file without opening the file. github link of workflow: https://github.com/bhishanpdl/Shared/blob/master/Alfred_questions/2019/aa 00 copy file contents.alfredworkflow?raw=true Fails when: folder name has space in it. Commands used: 1. keyword: copy file contents 2. Run script with osascript ``` tell application "Finder" set someSource to selection as alias list if someSource = {} then return "Select a file in Finder first" end if set theFile to item 1 of someSource as alias return quoted form of the POSIX path of theFile end tell ``` First I had only "return the POSIX path of theFile" then I changed it to "return quoted form of the POSIX path of theFile". It still does not work. 3. Run script ``` cat "$1" | pbcopy ``` This workflow does not work. I googled and found how to get the path of selected item in Finder but could not find how to copy file contents to clipboard. How can this workflow be fixed so that it works for SPACE separated folders? Example of debug: ``` 20:30:00.162] STDERR: aa 00 copy file contents[Run Script] cat: '/Users/poudel/tmp/try space/a.md' : No such file or directory ```
  6. @deanishe I have a url like: ``` http://localhost:8888/notebooks/Dropbox/Data_Science/Untitled.ipynb ``` I want to open the url: ``` http://localhost:8888/notebooks/Dropbox/Data_Science/ ``` Which excludes the last part after "/". When I copy paste this url, it works good in Chrome, but When I open using "OPEN URL" of Alfered, it opens blank tab.
  7. I was trying to make a workflow to go one step up in jupyter notebook. When I print the output to the LARGE FONT the output is correct, I can paste the output to the Google Chrome and it works correctly. But when I use OPEN URL object, it opens the blank tab. I tried many times still it only opens the blank url. I have shared the workflow in github: https://github.com/bhishanpdl/Shared/blob/master/Alfred_questions/Jupyter Up.alfredworkflow?raw=true Question ---------------- How to make the workflow open the current jupyter notebook running in Google Chrome open a new tab with one step up ? Note: I have used too many Alfred objects, I was also wondering how can I do it only the Applescript workflow. Since I am unfamiliar with Applescript, I pipe the output of applescript to bash and then do all the work in python. If it can be done in applescript, instead of too many alfred objects it could be done in one or two objects. Thanks in advance.
  8. @deanishe Thanks for the suggestion. Now I can paste the last part of the list and also hit "shift-enter". But still I am sure how to make this in a for loop so that it works for all the parts of the list. Example: print(3) # comment print(5) I copied this text to the clipboard and ran my updated workflow: https://github.com/bhishanpdl/Shared/blob/master/Alfred_questions/a a a split the imports updated.alfredworkflow?raw=true It gives: """ # some comment print(5) """ And also hits "shift enter" (this means goes to next cell in jupyter notebook). How to make this work for all the list components like this: 1. print first part of split of # print(3) 2. hit shift-return This goes to downward cell in jupyter notebook 3. again paste next part of # split # some comment print(5) 4. again hit keybord "shift-enter" this creates new cell in jupyter notebook I am not sure how to create External Triggers for this workflow. Help is much appreciated. Thanks.
  9. Apologies for unclear question. Here is what I am trying to achieve: 1. Lets say I have a list mylist = ["#hello", "#world"] obtained from clipboard which in fact contain arbitrary number of elements. 2. print #hello to given app and simulate keystroke cmd + enter 3. print #world to given app and simulate keystroke cmd+enter If I already know how much elements in list, I can append alfred workflow object "output > keyboard combination" one by one, but I don't know how many elements are in the list and I want to hit keyboard keys cmd+enter after pasting list elements each time. The os.system("...") command is just the pseudocode, obviously it does not work.
  10. I have long string of python imports like this: # usual imports import os import sys # data manipulation import numpy as np import pandas as pd While working in Jupyter notebook, when I paste something and hit "cmd enter" it will go to next cell and again we can do paste and hit enter. How can it be done using Alfred? I have tried this so far: import sys import os import time s = """ # usual imports import os import sys # data manipulation import numpy as np import pandas as pd """ lst = s.lstrip().rstrip().split('\n#') for i,l in enumerate(lst): x = l if i == 0 else '#'+l os.system("tell application system events to keystroke v holding command") time.sleep(0.2) os.system("tell application system events to keystroke return holding command") This is a starting idea, but the code is not working. Maybe I have something to change in applescript or follow other ideas. My question to experts is how to make it viable? I have shared my primary workflow here: https://github.com/bhishanpdl/Shared/blob/master/Alfred_questions/a a a split the imports.alfredworkflow?raw=true
  11. Thanks for the suggestion of use of json. I appreciate it. What I meant by spending hours is, I saw your solution, but tried to make it work in python alone and it took me hours. There is much to absorb in the given tutorial (python, applescript and so many things) but not a single stand alone python workflow which is kind of complete. So, I tried to implement the workflow in python borrowing all the ideas from that link. The link is helpful but its broad and takes some time to filter out.
  12. I was wondering how to create multiple argument variable using python. After hours of googling I found this link: https://www.deanishe.net/post/2018/10/workflow/environment-variables-in-alfred/ and I figured out myself. # Create env variables ```python import sys s = "apple banana; car truck" lst = s.split(';') a = lst[0] b = lst[1] myjson = """ {"alfredworkflow": { "arg": "", "variables": {"a": "%s", "b": "%s" } } } """ % (a,b) myjson = myjson.strip() sys.stdout.write(myjson) ``` # Use env variables ```python import sys,os arg1 = os.getenv('b') changed = arg1 + ' called from another object' sys.stdout.write(changed) ```
  13. I would just like to add my 2cents here. Whenever, I scroll down a long markdown or script file in github, I see something off and needs to edit it. Then I have to scroll back to top and then click the edit button. That is tedious and I found a better way of doing it using Alfred. We can use AlfredBookmarklet with following command: document.querySelector('[aria-label="Edit this file"]').click(); Hope it would be beneficial for others too.
×
×
  • Create New...