[IOS] Ich habe ein Widget erstellt, das den Trend von Qiita in Pythonista3 anzeigt. [Python]

Einführung

Kennen Sie für iPhone- und iPad-Benutzer eine App namens Pythonista3, mit der Sie Python auf iOS-Geräten entwickeln können? Wenn Sie nur Python ausführen möchten, empfehle ich persönlich Carnets --Jupyter. Mit Pythonista3 können Sie auch Funktionen entwickeln, die von außerhalb von Abri verwendet werden können, z. B. verschiedene Verknüpfungen und Widgets, und Spiele erstellen.

Diesmal mit einem solchen Pythonista 3 ** Ein Widget, das Qiita-Trends anzeigt und die Seite in Safari öffnet, wenn Sie darauf klicken ** Ich habe erstellt, also möchte ich es vorstellen. qwid.png

Was ich getan habe

Im Fall dieses Widgets kann der Inhalt von "Launcher.py" unter "Beispiel / Widget" fast so verwendet werden, wie er ist.

・ Möglichkeit, Trendtitel und URLs von der Qiita-Startseite abzurufen ・ Eine Funktion zum vorübergehenden Speichern der erfassten Informationen ・ Eine Funktion zum erneuten Zugriff auf Qiita und zum Aktualisieren der Informationen, wenn seit dem Erfassen der vorherigen Informationen eine bestimmte Zeit vergangen ist.

Hinzugefügt.

Code

Die Anzahl der Spalten, die Anzahl der Zeilen im gefalteten Zustand und die Schriftgrößenvariablen werden nach der Importanweisung zusammengefasst, sodass Sie das Layout nach Ihren Wünschen anpassen können. Es ist eng und schwer zu drücken, aber wenn Sie die Anzahl der Zeilen auf 5 oder mehr einstellen, können Sie alle täglichen Trends anzeigen (30 Fälle).

qiita_trends_widget.py


import re
import requests
import appex, ui
import os
from math import ceil, floor
import webbrowser
import pickle
import time

COLS = 1
ROWS = 3
fontsize = 12

def get_trend():
	trends = []
	text = requests.get( 'https://qiita.com/').text
	titles = re.findall('title":".{10,100}?",',text)
	urls = re.findall('uuid":".{10,50}?",',text)
	for i in range(30):
		trends.append({'title':'', 'url':''})
		trends[i]['title'] = titles[i][18:-7]
		trends[i]['url'] = 'https://qiita.com/items/'+urls[i][17:-7]
	trends.append({'lastUpdate':time.time()})
	with open("trends.pickle", "wb") as f:
			pickle.dump(trends, f)
	return trends


class LauncherView (ui.View):
	def __init__(self, shortcuts, *args, **kwargs):
		row_height = 110 / ROWS
		super().__init__(self, frame=(0, 0, 300, ceil(len(shortcuts[:-1]) / COLS) * row_height), *args, **kwargs)
		self.buttons = []
		for s in shortcuts[:-1]:
			btn = ui.Button(title=' ' + s['title'], name=s['url'], action=self.button_action, bg_color='#73c239', tint_color='#fff', corner_radius=7, font=('<System-Bold>',fontsize))
			self.add_subview(btn)
			self.buttons.append(btn)
	
	def layout(self):
		bw = (self.width - 10) / COLS
		bh = floor(self.height / ROWS) if self.height <= 130 else floor(110 / ROWS)
		for i, btn in enumerate(self.buttons):
			btn.frame = ui.Rect(i%COLS * bw + 5, i//COLS * bh, bw, bh).inset(2, 2)
			btn.alpha = 1 if btn.frame.max_y < self.height else 0
		
	def button_action(self, sender):
		webbrowser.open(sender.name)

def main():
	widget_name = __file__ + str(os.stat(__file__).st_mtime)
	v = appex.get_widget_view()
	if v is None or v.name != widget_name:
		try:
			with open("trends.pickle", "rb") as f:
				SHORTCUT = pickle.load(f)
		except:
			SHORTCUT = [{'lastUpdate':time.time() - 86400}]
			with open("trends.pickle", "wb") as f:
				pickle.dump(SHORTCUT, f)
		SHORTCUTS = get_trend() if time.time() - SHORTCUT[-1]['lastUpdate'] > 1800 else SHORTCUT #1800 Sekunden vom letzten Mal(Ein halbe Stunde)Update nach dem oben genannten
		v = LauncherView(SHORTCUTS)
		v.name = widget_name
		appex.set_widget_view(v)

if __name__ == '__main__':
	main()

Zusammenfassung

** Pythonista3 ist gut ** (Ich hoffe, es können mehr Pakete verwendet werden ...)

Recommended Posts

[IOS] Ich habe ein Widget erstellt, das den Trend von Qiita in Pythonista3 anzeigt. [Python]
Ich habe ein Pay-Management-Programm in Python erstellt!
Ein Memo, das ich schnell in Python geschrieben habe
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Ich habe in Python einen Discord-Bot erstellt, der übersetzt, wenn er reagiert
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Python Qiita API Wrapper "qiipy" gemacht
In Python habe ich einen LINE-Bot erstellt, der Polleninformationen aus Standortinformationen sendet.
Ich habe eine VM erstellt, auf der OpenCV für Python ausgeführt wird
Ich habe einen Python-Text gemacht
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
Ich habe einen schnellen Feed-Reader mit Feedparser in Python erstellt
Ich habe versucht, "ein Programm, das doppelte Anweisungen in Python entfernt"
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht
Ich habe einen Line-Bot mit Python gemacht!
Ich habe mit Python eine Lotterie gemacht.
Ich habe mit Python einen Daemon erstellt
[Python] Ich habe einen Line-Bot erstellt, der zufällig nach englischen Wörtern fragt
Ich habe ein Paket erstellt, das morphologische Analysegeräte mit Python vergleichen kann
Ich habe ein Programm erstellt, das die Fehlersuche in Sekunden löst
Ich habe ein Shuffle gemacht, das mit Python zurückgesetzt (zurückgesetzt) werden kann
[Python] Ich habe eine Klasse erstellt, die schnell einen Dateibaum schreiben kann
Ich habe einen verstümmelten Generator erstellt, der Ihre Lieblingssätze von UTF-8 bis Shift-JIS (cp932) in Python codiert
Ich habe mit Python einen Zeichenzähler erstellt
Ich habe mit Python eine Hex-Map erstellt
Nachdem ich Python3 studiert hatte, machte ich einen Slackbot
Ich habe ein Passwort-Tool in Python erstellt.
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe mit Python einen Neuronensimulator erstellt
[Python] Ich habe einen Dekorateur gemacht, der keinen Nutzen zu haben scheint.
Ich habe versucht, einen Formatierer zu entwickeln, der Python-Protokolle in JSON ausgibt
[Python] Ich habe ein Dienstprogramm erstellt, das wie ein Pfad auf den Diktattyp zugreifen kann
Ich habe eine Chrome-Erweiterung erstellt, die ein Diagramm auf der Amedas-Seite anzeigt
Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren
Ich habe ein Tool erstellt, das die Dekomprimierung mit CLI (Python3) etwas erleichtert.
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe ein Modul PyNanaco erstellt, das Nanaco-Guthaben mit Python belasten kann
Ich habe eine Python-Wörterbuchdatei für Neocomplete erstellt
Ich habe mit Python eine Bot-Wettervorhersage gemacht.
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann
Ich habe einen Zeilenbot erstellt, der Python verwendet, um ungelesene E-Mails aus Google Mail abzurufen!
Ich möchte mit Python ein Fenster erstellen
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Ich habe versucht, mit Python ein Tippspiel zu spielen
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
Ich habe eine Klasse in Python3 und Java geschrieben
Ich habe ein Docker-Image erstellt, das FBX SDK Python von Node.js aus aufrufen kann
Ein Programm, das doppelte Anweisungen in Python entfernt
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
[Anfänger] Was passiert, wenn ich ein Programm schreibe, das in Python auf PHP läuft?
[Python] Ich habe einen LINE-Bot erstellt, der Gesichter erkennt und Mosaikverarbeitungen durchführt.
Ich habe ein Modul in C-Sprache erstellt, das von Python geladene Bilder filtert