Jump to content

Search the Community

Showing results for tags 'python'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Alfred 3
  • Make the Most of Alfred
    • Discussion & Help
    • Bug Reports
    • Alfred Feature Suggestions
    • Themes
  • Alfred Workflows
    • Share your Workflows
    • Workflow Help & Questions
  • Alfred v2 Themes
  • Alfred Remote for iOS
    • Alfred Remote Discussion & Help
    • Remote Connection Troubleshooting

Categories

  • Articles
    • Forum Integration
    • Frontpage
  • Pages
  • Miscellaneous
    • Databases
    • Templates
    • Media

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Twitter


Website URL


Jabber


Location


Interests

Found 70 results

  1. This workflow is dead. Please check out its spiritual replacement ZotHero instead. ZotQuery Search Your Zotero Data From the Comfort of Your Keyboard. Please update (via Packal) to Version 8.5, for optimal performance. ZotQuery is an Alfred workflow that grants the user access to the data stored in their Zotero application. The Python scripts in this repo form all of the necessary components for this workflow. To download, visit the page on Packal, the workflow aggregator for Alfred, where you will be able to update to the newest versions. For a full README, filled with images (the forums limit you), visit my blog at: http://hackademic.postach.io/zotquery-an-alfred-workflow-for-zotero Unfortunately, there are too many features and too many screenshots for this forum to handle. But the page on my blog has extensive documentation. I've just pushed another update to Packal (v. 8.0.3). Please update if you have an older version. In version 6.2, "odt-scannable-cites" is a new option in the z:set export options. If you export a full Citation or a short Reference, you will get a base form Scannable Cite for that item. Version 6.0 moves the backbone of the workflow from alp to @deanishe's Workflow library, which among other things, allows for a new debugging keyword. Now, if user's wish to report an error, they can use z:bug to automatically open ZotQuery's log file, which you should include alongside your error report in this thread.. In addition, version 6.0 adds new, shorter script filter keywords. I've kept all of the old, longer keywords as well, so everything is backwards compatible, but now, users can simply use: z = zot zt = zot:t za = zot:a znc = zot:c znt = zot:tag zn = zot:n zat = z:att ztg = z:tag zc = z:col Unfortunately, version 6.0 also removes version 5.0's ability to add a PDF attachment to an item in your Zotero library. However, this and other PDF management features are under development, and I will push out an update that brings this back (with more) sooner rather than later. All of this comes in addition to the big additions from 4.0: ZotQuery now can export in both Markdown and Rich Text. This means all academics on the Mac who use Zotero can take advantage of ZotQuery's quick access to their citation data. Export individual references or citations in rich text, or export full bibliographies from Collections or Tags in rich text. Exporting preferences to the configurator. Now you can select out of 5 possible CSL styles for export. Instead of the default Chicago (author-date), you can now also choose APA, MLA, BibTeX, or Zotero's own RTF-Scan cite key format. In addition, you will also then choose which format to export in: Markdown or Rich Text. At any point, you can also change these settings using the z:settings command. Ability to search only items with attachments. This works effectively like an attachments search, since you only need to press return (not shift+return as with the other queries) in order to open the attachment. The ability now to export in BibTeX or Zotero's RTF-Scan format makes ZotQuery is utility for LaTeX writers as well as scholars who write in standard word processors. You could also easily move from BibTeX or RTF-Scan and take advantage of ZotQuery's full text exporting in Markdown or Rich Text. Either way, the workflow should be a helpful companion regardless of your writing workflow. These features are in addition to the standard features of ZotQuery: Search your Zotero library with keyword Search by author last name, title, in collection, or in tag Open, export short reference, export full citation, or append citation to temporary bibliography[/[/i]] Export full bibliography from collection or tag in alphabetical order Create and keep up-to-date a JSON cache of your Zotero data (helpful for other scripting possibilities) As a side-note, can people let me know what version of OS X you have ZotQuery working on? And what your Zotero set-up is? (Standalone? Firefox? Both?). I want to upgrade my README with testing conditions. Any info is helpful. Thank you. I hope you enjoy it. -stephen
  2. Shorten URL (v1.1) - download here Github Page: https://github.com/hzlzh/Alfred-Workflows This workflow support URL shortener like below. You can use Hotkey to trigger without open Alfred input window. goo.gl/ bit.ly/ t.cn/ j.mp/ is.gd/ v.gd/ If you want more URL shortener services added, please let me know, . How-To: Choose some long links (e.g Command + A), then press `Command + Shift +L`, choose goo.gl and you will get the short link in your clipboard with notification center triggered. Tips: How to use this workflow without copy/paste? Just use trigger HotKey, check out this wiki issue here: https://github.com/h...kflows/issues/1 Screenshot:
  3. So I recently installed a community workspace for Alfred and I see it's passing a query to a Python script - which brings me to my question. Where can I see the source of this script?
  4. IMPORTANT NOTE ABOUT HANGING PROCESSES ON SIERRA (2017-04-03) Versions of Alfred-Workflow older than 1.25 cannot launch background processes properly on Sierra. In fact, they regularly hang quite dramatically and consume 100% CPU Users (in particular) affected by this bug should install and run this workflow, which can find and fix any workflows with broken versions of Alfred-Workflow. The workflow library for Python GitHub | Documentation A feature-rich library for developing Alfred workflows in Python The library is simple to install, has no external dependencies, is very well-documented and maintained, and boasts an eye-wateringly high feature-to-size ratio at under 400 KB. It is the only Python library that is always up-to-date with Alfred's features. Main features Supports all Alfred features from 2.0 to 3.6. Catches, logs and notifies users (and developers) of errors in Workflows. No more confusing, silent failure. Super-simple, yet powerful data caching (e.g. from a web service) and storage, including session-scoped data. Easy-to-use Workflow settings API. Supports Alfred's AppleScript API, including saving settings to info.plist and calling External Triggers. Keychain access for secure storage (and cross-machine syncing) of sensitive data, like passwords and API keys. Tunable and understandable Alfred-like fuzzy search (e.g. got matches Game of Thrones as well as Baby Got Back. Or not: that's up to you.) Extremely lightweight, but full-featured, HTTP library with Requests-like interface, but just 12 KB instead of > 2 MB. Convenient access to standard macOS icons, for high-quality, familiar icons without adding size to the library. Also available via proper English. Pre-configured, built-in logging to enable simpler Workflow debugging. Painlessly run (update) scripts in the background without blocking your workflow, so you can still show "old" results while fetching new ones. API for running AppleScript/JXA scripts. Simple support for 3rd-party libraries your Workflow relies on. "Magic" arguments to make developing/debugging Workflows so much easier, especially when helping less technically-inclined users. With "magic" arguments, you and your Workflow's users can open the Workflow's log file in Console.app, its cache and data directories in Finder, and its root directory in Finder or Terminal from the comfort of Alfred's query box. You can also delete the cache/data/settings if something is corrupted. Your workflow can update itself via GitHub releases. Smart handling of non-ASCII. Query sale will match result salé, but query salé will not match result sale. Functions to support migrating settings/data from older versions of your workflow. Alfred 3-only features Workflow variables Advanced modifiers Alfred 3-only updates Re-run Script Filters And as you can see from the above links, there is extensive documentation, including a two-part tutorial on building a Workflow from scratch. Examples Here are a few examples of how you can do some pretty cools stuff in just a few lines of code. A simple Workflow I made to search Packal in ~90 lines of code. A simple Workflow to search your recent Pinboard posts in ~50 lines of code. A polished, user-friendly, wicked-fast Workflow to search your recent Pinboard posts in ~200 lines of code. Remember, each of these Workflows also has—for free—full error-catching and -logging support, and the ability to open its log file (which contains all errors) via Alfred's query box. No need to ask users to grub around in ~/Library or flounder in Terminal here. This is not the Workflow library 2014 deserves, but it's the one it needs Feedback If you have any bug reports/feature requests, add them either here or on GitHub. More info The documentation is the definitive source of information on the Alfred-Workflow library. The User Guide and Tutorial provide fairly extensive information both on how to use Alfred-Workflow and write Workflows in general (if you're new to this lark).
  5. Description Equivalent of the mobile versions of Google Authenticator: https://itunes.apple.com/en/app/google-authenticator/id388497605?mt=8. I personally use it on Gmail, Amazon AWS, Github, Evernote and Dropbox A bigger list is available on Wikipedia: http://en.wikipedia.org/wiki/Two-step_verification There is also a Pam module project on Github: https://github.com/nlm/pam-google-authenticator Non-exhaustive list of links for "secret" installation Google: http://www.google.com/landing/2step/ Dropbox: https://www.dropbox.com/help/363/en Evernote: http://blog.evernote.com/blog/2013/05/30/evernotes-three-new-security-features/ Github: https://github.com/blog/1614-two-factor-authentication Amazon AWS: http://aws.amazon.com/iam/details/mfa/ Facebook: https://www.facebook.com/settings?tab=security Dependencies Python>=2.7 System Modifications Create a ~/.gauth file with your secrets, ie: [google - bob@gmail.com] secret = xxxxxxxxxxxxxxxxxx [evernote - robert] secret = yyyyyyyyyyyyyyyyyy It's also possible to add credentials with "gauth add [account] [secret]" from Alfred Source Code: Github https://github.com/moul/alfred-workflow-gauth Download Links Packal: http://www.packal.org/workflow/gauth-google-authenticator Direct link: https://github.com/packal/repository/raw/master/com.alfredapp.moul.gauth/google_authenticator.alfredworkflow Screenshots Acknowledgments Original alarm clock iconAlex Auda Samora from The Noun Project Licensed under Creative Commons Attribution Status & signs iconsHereldar Terkenya Licensed under a Creative Commons Attribution-Share Alike 3.0 License Original source codeManfred Touron Serial contributorGilberto Olimpio License MIT
  6. Philips Hue Controller for Alfred Quickly and easily control Philips Hue lights with Alfred. Installation Download the workflow The first time you run the workflow it will ask you to press the button on top of the Hue bridge then action the item to authorize the workflow to control your Hue lights. The workflow automatically attempts to find the bridge on your local network. You can also manually specify the bridge's IP address. For example, if your bridge's IP is 192.168.1.126: hue 192.168.1.126 Read more about features at the project's Github page.
  7. This workflow will take the focused/front Finder window and create a temporary Python Server at that location, using `python -m SimpleHTTPServer`. Function will also open the default web server URL (http://0.0.0.0:8000) in the default browser when the python server has started. This is an extremely handy way to quickly test code in a server environment, especially when working with cross-domain functionality that will not work from localhost/local file server. Basically allowing you to create an ad-hoc/on-demand web server at any Finder location on your mac. Borrows some of the Terminal Finder functionality from Chris Yip's "Terminal Here" workflow: http://chrisyip.im/ Download: http://cloud.joshuarhoades.com/3O0c1h3P250l
  8. This workflow lets you control your Home Assistant from Alfred. You will be able to control you lights, get sensor information, trigger automations and look for your devices in device tracker. And more to come.. Setup _haurl - Set the URL to the home assistant. _hapassword - set the API password for Home Assistant Commands to interact with home assistant To triggar an automation: haa To control lights: hal To control your alarm: haal To look at a Sensor: has To look at device tracker had You will find the workflow here : https://github.com/Skakiz/Alfred-Home-assistant-workflow Lights: Automations: This is my first python coding, so no glitter code. Thanks! //Andreas
  9. isometry

    Unix man page workflow

    Open man pages with name and section filtering. The 'man' keyword exploits the x-man-page: protocol handler, so will default to opening in Terminal.app but can easily be switched to iTerm2.app. 'hman' opens pages in your default browser, and 'pman' opens PDFs in the default PDF reader. Download / Source Usage man open(1) # open a specific page pman style # open a PDF of the style(9) manpage man open # search all sections for pages matching 'open*' man *open # search all sections for pages matching '*open*' man 2 open # search section 2 for pages with 'open' in the name Enjoy.
  10. alfredstudent

    Modifying Workflow Script

    Hi, So I'm a newbie, but I've managed to install Google assistant using terminal and can access it there. I want to use this alfred workflow http://www.packal.org/workflow/google-assistant to launch Google Assistant in the background but can't get the workflow to talk to python. Currently I have to type " source env/bin/activate and then: python -m googlesamples.assistant.grpc.pushtotalk The way the workflow is originally does not correspond to the steps I take to launch Google Assistant using Terminal. Can someone help me modify the workflow script to allow me to use Alfred to trigger Google Assistant? Many Thanks, Stephan
  11. Hi guys. I tries to make a workflow which launches my own python script. Script accepts exact 2 arguments. What is the best way to do that?
  12. There is a bug in my (unofficial) Alfred-Workflow library that causes very many workflows using it to hang quite dramatically on Sierra. If you are affected (i.e. you see Alfred's CPU usage spike to 100%), Activity Monitor will show two Python processes like this (choose View > All Processes, Hierarchically), with the bottom one at ~99% CPU (this screenshot is actually of a non-misbehaving workflow): Download and run this workflow, which will update any old versions of Alfred-Workflow in your installed workflows. That should get your workflows working again until the workflow developers can push official fixes.
  13. Here is a workflow for bulk renaming files. You select some files either in Alfred using the File Navigator or the File Buffer and use the File Action called "Rename with BulkRename", or select the files in Finder and use the hotkey to trigger the workflow for the selected files. Once triggered, Alfred will display a preview option and a bunch of preset actions that you can select. The preview option will display the modifications that will be made for each preset action listed. Preview Here are a couple of snapshot portions of what you see when pressing the Shift key: Issues are highlighted so that you know if running a preset will work or not. Even if you run that preset, nothing will happen. Preset Actions There are 6 actions included as a sample, but you can easily create your own actions using the .list keyword. To create a new preset, type in .list <new name>. Delete a preset using Cmd+Enter Each preset is nothing but a collection of simple steps that help make the preset action possible. For e.g. when you select the Append Sequence Number preset, you will be shown the preset editor: What the above tell is that the Append Sequence Number preset is a collection of two steps: add text '_seq' at end add number from 0, at end There are added to the preset using any of the steps [+] listed. You can add any number of steps to a preset, even the same ones over and over. You can delete an added step using Cmd+Enter When you add a new step to a preset, or edit an existing step by selecting it, you will be shown the Step Node Editor as above. The above is the example for the "Number Sequence" step, and for this step you can control what the starting number is, where the number should be added, and the format (leading zeros to be added). Items with a arrow -> are variables that you can change by pressing the Tab key. To add the step, just select the first option, and that step will be added to the Preset that you were viewing before. Steps Steps are the building blocks of each preset, and currently BulkRename has the following: Find and replace: find text and replace with another, supports regex and plaintext, case sensitive and insensitive Add text: add some text at the beginning or end of the filename Add timestamp: add a timestamp at the beginning or end of the filename. Timestamp is one of current time, file created or modified time. YYYY,YY,MM,DD,hh,mm,ss can appear in the format string Convert case: switch the case of the filename to lower, upper, or title Strip text: remove x characters from the filename either at the start of end Number sequence: append a running number sequence, starting from a value that you can specify MP3 Tagger (beta): Extract MP3 tags from MP3 files Regex group extractor: Regex group pattern extractor Change Extension: Allows you to change the extension of a file Keywords The main keyword is .rename (but you would not have to type that in if you use the File Action or the Hotkey) The second one to manage all your presets is .list. .preset and .node are keywords used by the workflow directly, and there is usually no need for you to type those in directly. Download Download from here Notes This works with Python 2.7.2 last I checked Have a look at the included sample presets using the .list keyword to get a hang of how presets are made, and then create your custom ones
  14. I've completed a python script to query the puppet forge api. http://projects.puppetlabs.com/projects/module-site/wiki/Server-api When I call the python script from the command line, it successfully returns all puppet modules desired $ python myscript.py foo When I place the same python script into an alfred workflow, and set it to require 1 argument, alfred 'gives up' the search before I've fully entered what I am looking for. Anyone have any ideas why Alfred doesn't wait for me to enter the entire string before searching? Here is a video showing the problem *Update* My code is now on github https://github.com/spuder/alfred-puppet-forge It turns out that if I wait long enough, the script does eventually return. The problem is that alfred is calling the script every time a new letter is entered. Searching the api gets faster each letter that is entered For example: a = 1000 results ab = 100 results abc = 3 results abcd = 1 result So In practice, I have to wait for the results of a, ab, abc, before I can get the results of abcd. This is a 10 to 30 second delay for the data I am querying, which is far too long. How can I make alfred wait until I have finished entering abcd before executing?
  15. I've written a command-line script that will automatically change your Alfred theme at sunrise and sunset. It's kind of a companion to F.lux and its option to turn on Yosemite's dark theme when it gets dark. It requires the pytz and astral Python libraries. Save the script somewhere and run it in Terminal: python toggle_alfred_theme.py --dark 'My dark theme' --light 'My light theme' The script will change the current theme depending on the time of day and then schedule itself to be called every sunrise and sunset (or when the computer boots/wakes) to change Alfred's theme.
  16. Hi, I'm working on my first workflow. The goal is to connect the Keyword "shifts" to: 1) Navigating to a specific folder; 2) Run a python script which is in there (script prompts user for 2 dates in format YYYY-MM-DD) 3) Enter today's date in the format YYY-MM-DD; 4) Enter tomorrow's date in the format YYY-MM-DD; I've managed to do it up to, and including, step 2. However, I don't know how to enter today's date (whichever date today is) programatically in the workflow. I've tested with dummy data (entering two dates in the format) and it works fine so it's just a matter of making it a variable I guess. Any ideas on how to do this? Cheers!
  17. deanishe

    Search StackOverflow

    StackOverflow Search for Alfred Search for answers on StackOverflow.com from Alfred 2. Download Get StackOverflow for Alfred from GitHub or Packal. Usage .so <query> — Search StackOverflow.com for <query>. See below for syntax. ↩ or ⌘+NUM — Open result in default browser ⌘+L — Show full question title in Alfred's Large Text window Query syntax By default, words in <query> will be search for in the title of posts. To specify a tag, prefix it with ., e.g. python will search for python in the post title, .python will search for the tag python. Results Answered questions will be shown first in the list of results (and have a tick on their icon). Licensing, thanks This workflow is released under the MIT Licence. It is heavily based on Alfred-Workflow, also MIT-licensed.
  18. altre

    Python Interpreter

    Hey everyone, Here's a workflow I created a while ago and have been using quite alot myself: Alfred Workflow: Python Interpreter The full power of python at your fingertips.Evaluate or run python commands directly from Alfred. Hit enter to copy output to clipboard. This workflow automatically imports the following standard libraries as star-imports: math, random, re, calendar, os.path, shutil, json, time, macostools. Furthermore it attempts to import numpy as star import and ignores it silently if not installed. Get it here: https://github.com/altre/alfred_python_interpreter http://www.packal.org/workflow/python-interpreter
  19. Hi all, I use Clear for my todo list manager on macOS http://www.theverge.com/2012/11/7/3613664/clear-for-mac-review. I wrote a helpful script show me how many todo items I have for the given day, script here: https://ghostbin.com/paste/zuc94 When I run the script as a local alfred script, it works perfectly. However, if I copy the same code to a file on disk and attempt to run it as an external script, I never get a notification. My setup is below, am I missing something obvious? Thanks in advance
  20. Dash 2 (note: paid app) has just been released and it comes with a Alfred 2 Workflow. Dash lets users instantly search through documentation for 130+ APIs (ranging from HTML to Cocoa), for more information, check out Dash's webpage. All of the Dash-supported documentation sets are available for offline use. You can get the Dash workflow by installing Dash and going to Preferences > Integration > Alfred. Supported documentation as of the 2.0 release (documentation is constantly added so this list might go out of date): iOS, OS X, Man Pages, .NET Framework, ActionScript, Akka, Android, Angular.js, Ansible, Appcelerator Titanium, Arduino, Backbone.js, Bash, Boost, Bootstrap, Bourbon, C, C++, CakePHP, Cappuccino, Chai, Chef, Clojure, Cocos2D, Cocos2D-X, Cocos3D, CodeIgniter, CoffeeScript, ColdFusion, Common Lisp, Compass, Cordova, Corona, CSS, Django, Dojo Toolkit, Drupal, D3.js, Elixir, Emacs Lisp, Ember.js, Emmet.io, Erlang, Express.js, ExpressionEngine, ExtJS, Flask, Foundation (by Zurb), Git, GLib, Grails, Go, Groovy, Haml, Haskell, HTML, Jade, Java, JavaFX, JavaScript, Joomla, jQuery, jQuery Mobile, jQuery UI, Knockout.js, Kobold2D, Laravel, LaTeX, Less, Lua, Lo-Dash, Marionette.js, Meteor, MongoDB, Mono, MooTools, MySQL, Nginx, Node.js, Ocaml, OpenCV, OpenGL, Perl, PhoneGap, PHP, Play, PostgreSQL, Processing, Prototype.js, Puppet, Python, Qt, R, Redis, Ruby, Ruby on Rails, Sass, Scala, Sencha Touch, Smarty, Sparrow, Spring Framework, SproutCore, SQLite, Stylus, SVG, Symfony, Tcl/Tk, Twig, Twisted, TYPO3, Underscore.js, Unity 3D, Vagrant, Vim, VMware vSphere, WordPress, Xamarin, Xojo, XSLT, XUL, Yii, YUI, Zend Framework, Zepto.js.
  21. I'm having a difficulty with using Alfred to filter script results I have a python script that queries an internal wiki #!/usr/bin/env python from __future__ import print_function import sys from workflow.workflow3 import Workflow3 from workflow import web QUERY_URL = 'http://MYCOMPANY.ORG/mediawiki/api.php?action=opensearch&format=json&search={}&namespace=0&limit=50&suggest=' PAGE_URL = 'https://MYCOMPANY.ORG/mediawiki/index.php?search={}&title=Special%3ASearch' def main(wf): Workflow3().logger.info(wf.args[0]) Workflow3().logger.info("HI") query = str(wf.args[0]).replace(' ', '%20') results = web.get(QUERY_URL.format(query)).json() for keyword in results[1]: url = PAGE_URL.format(keyword.replace(' ', '+')) wf.add_item(keyword, '', arg=url, copytext=url, icon='logo.png', valid=True) wf.send_feedback() if __name__ == '__main__': wf = Workflow3() sys.exit(wf.run(main)) I have this in a script filter and if I run with bash and use the command: python wiki.py $1 Everything works fine. If i select "Alfred filter results" I get the following error Is there something different in the way the script is being called if i have the Alfred filter results button pressed? I'm assuming the query parameter is perhaps passed differently? Any insight?
  22. I have a script filter that outputs a value. When passing this value into a downstream script filter, the argument is only available (via sys.argv) if the "Alfred filters results" box is unchecked. When checked sys.argv[1] throws an index out of bounds error. When not checked, the argument is available as expected.
  23. Good morning, I'm currently trying to create a simple Script Filter Alfred 3 Workflow using Python. I found an earlier example which demonstrated how to pass XML results to a Python workflow: xmloutput = """ <?xml version="1.0" encoding="utf-8" ?> <items> <item arg="testitem"> <title>FooBar</title> <subtitle>foo bar is a test item</subtitle> <icon>icon.png</icon> </item> </items> """ print(xmloutput) My question is, what is the syntax for doing the same with the new JSON data structure? regards, Andrew
  24. hello, I am trying to create a workflow for a projectmanagement tool 10.000ft that gives me fast acces to specific project pages on the web. It currently lists all the projects and I have different keywords to start the workflow with different outcomes, 10kpe opens the project in edit mode while 10kpv opens the project in view mode. This is not very user-friendly and developer friendly :-). Since I am not a very experienced developer I cannot figure out what the best way is to create a 'sub-menu' of actions/options after selecting something from the first list. A second option that would be nicer than the current solution could be using different actions with the modifier keys (alt for editing, ctrl for running a report etc.). I went through the documentation, forums etc, even tried reading through different scripts like searchio but it's a bit to complex for me know :-) can someone give me a clear/simple example of both? I'm writing it in python using the alfred-workflow by deanishe. My code can be found here: https://github.com/jceelen/alfred-10000ft-scripts
  25. I'm new to Alfred workflows, json and python, so I'm more or less starting from scratch on this one! I want to create a workflow that will get the latest bitcoin price in GBP, using the bitcoinaverage API (https://api.bitcoinaverage.com/ticker/global/GBP/). That gives me a json file that looks something like this: { "24h_avg": 473.32, "ask": 498.26, "bid": 497.76, "last": 498.02, "timestamp": "Mon, 13 Jun 2016 14:26:07 -0000", "volume_btc": 1703.35, "volume_percent": 0.7 } I would like to have a simple python script that will query the API, extract the "bid" value and then give it back to me in Alfred. I'm trying to base my script off the Pinboard tutorial but it's not working so far. Can anyone help?
×